Autor Tópico: Problema DS1307+PIC16f876A  (Lida 2200 vezes)

Description:

0 Membros e 1 Visitante estão vendo este tópico.

Offline tocaido

  • Novato
  • *
  • Posts: 3
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: São Paulo SP
  • Nome:: Caio Heitor
  • Profissão: Ass. Eletronico
Problema DS1307+PIC16f876A
« Online: 14 de Janeiro de 2013, 09:59 »
Bom dia , este é meu primeiro post , no forum. Procurei algo sobre o DS1307 mas o que encontrei n me ajudou muito .
Montei um circuito com o DS1307 , com a bateria , e estou utilizando o PIC 16f876A, para lê-lo , e escrever , consigo escrever nos registradores , tudo certo mas quando desligo o circuito , o relogio deveria continuar a contagem atraves da bateria , porém o que acontece é : o relogio para , e quando volto  a alimentar o circuito ele continua de onde parou.Substitui o cristal , mas nada mudou , minha duvida é se estou fazendo algo errado no código  , segue o codigo basic , se alguém puder ajudar agradeço. Desde já Obrigado
****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : [select VIEW...EDITOR OPTIONS]                    *
'*  Notice  : Copyright (c) 2012 [select VIEW...EDITOR OPTIONS] *
'*          : All Rights Reserved                               *
'*  Date    : 26/10/2012                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE  OSC 4

pause 250
DEFINE LCD_DREG PORTB
DEFINE LCD_DBIT 0
DEFINE LCD_RSREG PORTB
DEFINE LCD_RSBIT 5
DEFINE LCD_EREG PORTB
DEFINE LCD_EBIT 4
SDA var PORTC.4                     ' RTC data
SCL var PORTC.3                     ' RTC clock
DB0 var byte[8]
ENTER var PORTC.0
VOLTA var PORTC.1
ADD var PORTC.2
B0 var byte
B1 var byte
B2 var byte
cmcon=%00000111
TRISB= %11111111



 
start:

                    ' Read time Secs,Mins,Hours,Day,Date,Month,Year,Control
I2CREAD SDA,SCL,$D1,$00,[STR DB0\8] ' Read 8 bytes from DS1307
 if DB0[1] = $00 && Db0[2] = $00 Then menu

 lcdout $fe,1,"Relogio Fixxon"   
lcdout $fe,$c0,"Hora=", hex2 DB0[2],":",hex2 DB0[1],":",hex2 DB0[0]    'bit 0=sec, bit 1=min, bit 2=hrs


pause 250
if ENTER = 0 Then Menu
goto start
 
 
 menu:
 
 lcdout $fe,1, "Hora=",hex2 DB0[2],":",hex2 Db0[1],":",hex2 $00
Lcdout $fe,$c0 ,"hr  min   volt"
 pause 200

if ENTER = 0 Then DB0[1] = DB0[1]+1
if Db0[1] = $0A  Then Db0[1] =$10
if Db0[1] = $1A  then Db0[1] =$20
if Db0[1] = $2A  then Db0[1] =$30
if Db0[1] = $3A  Then DB0[1] =$40
if DB0[1] = $4A  Then Db0[1] =$50
if DB0[1] = $5A Then Db0[1]  =$00
 
 
if ADD = 0 Then DB0[2] = DB0[2]+1
if Db0[2] = $0A  Then Db0[2] =$10
if Db0[2] = $1A  then Db0[2] =$20
if Db0[2] = $24  Then Db0[2] =$00

if VOLTA = 0 then
B1= Db0[1]
b2= DB0[2]
Lcdout $fe,1 ,   "  Aguarde  "
Lcdout $fe,$c0 ,"Gravando..."

I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80] ' Write to DS1307
pause 100
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80] ' Write to DS1307
pause 100
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80] ' Write to DS1307
I2CREAD SDA,SCL,$D1,$00,[STR DB0\8]
pause 800


goto start
endif


goto menu


 

 






end









Offline Cláudio F.

  • Fuso
  • **
  • Posts: 222
  • Sexo: Masculino
  • Cidade - UF: São Paulo/SP
Re:Problema DS1307+PIC16f876A
« Resposta #1 Online: 14 de Janeiro de 2013, 15:38 »
Ainda não olhei o seu código, mas vou dar um chute:

Está manipulando o CH? (Bit 7 do registro 0)

Use as tags [ code ] e [ /code ] para postar o seu código.

Offline tocaido

  • Novato
  • *
  • Posts: 3
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: São Paulo SP
  • Nome:: Caio Heitor
  • Profissão: Ass. Eletronico
Re:Problema DS1307+PIC16f876A
« Resposta #2 Online: 14 de Janeiro de 2013, 16:25 »
Ainda não olhei o seu código, mas vou dar um chute:

Está manipulando o CH? (Bit 7 do registro 0)


Trecho que escreve no dispositivo:
Código: [Selecionar]
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80]
Pelo q vejo o sétimo bit do 1° registrador realmente n esta setado corretamente ($80 seria 10000000b) setando o bit7 para 1, deveria estar setado para 0 , q pelo datasheet , habilita o clock , irei alterar para ($00) setando todos os bits para 0 vamos ver no que da , muito obrigado , desde ja .

Offline tocaido

  • Novato
  • *
  • Posts: 3
  • Sexo: Masculino
  • GUIA CNC
  • Cidade - UF: São Paulo SP
  • Nome:: Caio Heitor
  • Profissão: Ass. Eletronico
Re:Problema DS1307+PIC16f876A
« Resposta #3 Online: 14 de Janeiro de 2013, 16:27 »
Ainda não olhei o seu código, mas vou dar um chute:

Está manipulando o CH? (Bit 7 do registro 0)


Trecho que escreve no dispositivo:
Código: [Selecionar]
I2CWRITE SDA,SCL,$D0,$00,[$00,B1,B2,$7,$14,$2,$10,$80]
Pelo q vejo o sétimo bit do 1° registrador realmente n esta setado incorretamente***** ($80 seria 10000000b) setando o bit7 para 1, deveria estar setado para 0 , q pelo datasheet , habilita o clock , irei alterar para ($00) setando todos os bits para 0 vamos ver no que da , muito obrigado , desde ja .

 

/** * */