Ir ao conteúdo

Comunicação I2C com RTC DS1307


Matheus Ryndack

Posts recomendados

Postado

Olá pessoal!!

Estou tentando criar um relógio com esse CI.

Ele tem comunicação i2c.

mas o problema está no software de controle.

olhem: em basic


program relogio

main:
trisa=%00000000
trisb=%00000000

lcd_init(portb)
lcd_cmd(lcd_cursor_off)
soft_i2c_config(PORTA,0,1)

'I2c
LCD_out(1,1,"começo")


soft_i2c_start 'inicia

'grava no i2c
soft_i2c_write($00)
soft_i2c_write($0)
soft_i2c_write($01)
soft_i2c_write($0)
soft_i2c_write($02)
soft_i2c_write(%01110000)
soft_i2c_write($03)
soft_i2c_write(%00000001)
soft_i2c_write($04)
soft_i2c_write(%00010000)
soft_i2c_write($05)
soft_i2c_write(%00010001)
soft_i2c_write($06)
soft_i2c_write(%00000010)
soft_i2c_write($07)
soft_i2c_write(%10010000)
soft_i2c_stop
LCD_out(2,1,"pronto")


end.

Tenho o custume de colocar no programa coisas que me avisem quando o programa chega em determinado lugar.

Pois bem desse modo aí de cima, não aparece a palavra começo no LCD.

Indicando que o Pic travou na linha soft_i2c_config(PORTA,0,1), então, alguém aí sabe o que pode estar acontecendo??

ps: tôusando o pic16f628A

Postado

Olá amigo Felipe!

Funcionou! Agora ele não "trava" mais...

Mas porque que o comparador ia influir nisso??

Tá, agora que ele não travou, como devo proceder na comunicação i2C. Visto que com o pouco que entendi do datasheet não funcionou xD.

Muitíssimo obrigado,

Matheus Ryndack!

Postado

fácil, pensa assim...

O barramento I2c é digital certo? (so 0 e 1)...

O comparador é analógico certo? (n valores que variam com o tempo)

concorda comigo que se as duas funções esstiverem ativadas ao mesmo tempo, ira gerar conflitos no PIC, pois ora ele trabalha analógico, ora digital!

por isso é sempre importante, conhecer a aplicação e quais periféricos, podem e não podem funcionar ao mesmo tempo!

EDIT: Quanto ao i2c, primeira pergunta, voce ssabe como funciona esse barramento?

Senão recomendo a leitura em alguns artigos da NXP, que explicam sobre seu funcionamento, para depois proceder com a programação!

abss.

Postado
fácil, pensa assim...

O barramento I2c é digital certo? (so 0 e 1)...

O comparador é analógico certo? (n valores que variam com o tempo)

concorda comigo que se as duas funções esstiverem ativadas ao mesmo tempo, ira gerar conflitos no PIC, pois ora ele trabalha analógico, ora digital!

por isso é sempre importante, conhecer a aplicação e quais periféricos, podem e não podem funcionar ao mesmo tempo!

abss.

Sim concordo....

Mas usava em outras coisas, sem desliga-lo e funcionava de boa...

E quanto ao DS, como posso acessálo? Ele tem registradores, como mostro em qual gravar?

E que sou iniciante em I²C...

Até!

Postado
Bom pra começar, voce deve ler os registradores de horas minutos e seegundos constantemente, porque voce não inicia seus estudos com uma memoria eeprom i2c, vai ser muito mais fácil de voce aprender!

abss.

entendi...

Eu nem tenho uma eeprom aqui, amigo..

Mas o meu problema é saber em qual registrador vou escrever, tens ideia?

Amigo,

consegui a comunicação! Testei no proteus, o PIC está conseguindo mandar alguns dados.

Li na net que mandamos primeiro o registrador que quermos escrever, e depois o que vamos escrever.

Mas ele está colocando a hora no dia... O que que foi?

Agora o problema é ler... alguém aí sabe?

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...