Problemas com Serial EEProm e RTC no mesmo barramento I2C

Software e Hardware para linha x51

Moderadores: 51, guest2003, Renie, gpenga

Problemas com Serial EEProm e RTC no mesmo barramento I2C

Mensagempor gabriel_paz » 08 Dez 2006 21:02

Oi pessoal.

Estamos utilizando um AT89S8253 controlando em um mesmo barramento I2C uma serial EEprom (24CXX), um RTC (PCF8583) e um Conversor A/D-D/A (PCF8591), mas parece haver uma certa incompatilibidade entre o RTC e a serial EEprom, pois com ela no circuito (mesmo que não esteja sendo usada) não estamos conseguindo ler o RTC, acho que não é problema de endereçamento, pois fixamos por hardware os seguintes endereços:

Serial EEprom: 00H
RTC: 01H
Conversor: 02H

Álguem já se deparou com esse tipo de coisa? Se algém tiver alguma dica eu agradeço.

Gabriel
Avatar do usuário
gabriel_paz
Bit
 
Mensagens: 38
Registrado em: 11 Out 2006 21:48
Localização: São Paulo - Brasil

Mensagempor jeanfernandes » 09 Dez 2006 06:19

Gabriel, para que se possa "visualizar" teu circuito, poe aqui o pinout das linhas de controle dos chips, tipo :

MCU
Px.y - SDA
Px.y - SCL

EEPROM (poe o part e o fabricante)
Pino x - SDA
.....

Bom peguei os links aqui pra facilitar os amigos
http://www.aurel32.net/elec/pcf8591.pdf
http://www.aurel32.net/elec/pcf8583.pdf


Você está usando o Write Protect da bixinha ?
Já tentou tirar ela do endereço 0 e por em outro (tal com A0...A2 = VCC), ou seja no endereço 7 ?
Resistores de Pull up ok ?

Observe, tambem, uma coisa importante, quando voce envia algo para um SLAVE, após enviar o último BIT, voce precisa escrever "1" na porta de saida do MCU, para que ele possa liberar a linha para receber o ACK do SLAVE no proximo clock....onde esse ACK é um bit pra baixo no proximo clock do MCU.....

Enfim, essa condicao de ACK se assemelha muito com a condição START (Clock em ALTO e SDA transição negativa).

Tem uma referencia de hardware de uma placa da grifo...
http://www.grifo.it/MANUAL/K51AVR.PDF

No site da própia griffo tem as referências BASIC para alguns periféricos....




Eu vi uma discussao semelhante em
http://www.svet-el.si/phpBB2/viewtopic. ... f6af235274
Tá parecendo "grego" ....mas dá pescar alguma coisa....



Bom eu imagino que voce fez A0...A2 (na eeprom) = 0,
Colocou o pino A0 do RTC = 1
E fez Ao..A2 = 010 no A/D correto ?
Pelo menos é que imagino que seja
Jean P. Fernandes - Eng. Eletrônico - (83) 2102-2116 - APEL - www.apel.com.br - Campina Grande - PB
jeanfernandes
Word
 
Mensagens: 539
Registrado em: 11 Out 2006 15:36
Localização: Campina Grande - PB

Mensagempor gabriel_paz » 12 Dez 2006 00:21

Oi Jean.

Primeiramente muito obrigado pela ajuda, e pelas dicas.

A pinagem do microcontrolador que estou usando para o canal I2C é:

P1.5 = SDA
P1.6 = SCL

E a serial EEPprom é 24C04 6; fabricante ST; 90A828; mas já tentamos outras e continua o mesmo problema.

A configuração de hardware é como você colocou no final de sua resposta mesmo.

Como usamos o BASCOM então usamos os comandos prontos de uso do I2C, então primeiro vou estudar as dicas e links que você passou e também modificar o endereçamente como você sugeriu, se não der certo então vamos criar as rotinas na unha, para ver o que está ocorrendo.

Obrigado pela ajuda.

Gabriel
Avatar do usuário
gabriel_paz
Bit
 
Mensagens: 38
Registrado em: 11 Out 2006 21:48
Localização: São Paulo - Brasil

Mensagempor sandei » 12 Dez 2006 05:58

Usou o Comando para colocar as Linhas do BUS IC em Alta Impedância

Config Sda = Portb.2
Config Scl = Portb.3

I2cinit '''inicializa BUS!
sandei
Byte
 
Mensagens: 278
Registrado em: 13 Out 2006 08:15

Mensagempor Maurício » 12 Dez 2006 12:08

sandei !!

acho que vc tá confundindo os fóruns.
esse daqui é do 8051.

[]'s

RETI.
"Não leve a vida tão à sério, afinal, nenhum de nós sairá vivo, dela!"
Avatar do usuário
Maurício
Word
 
Mensagens: 678
Registrado em: 14 Out 2006 17:23
Localização: São Paulo - SP

Mensagempor sandei » 12 Dez 2006 12:13

Nossa realmente me confundi por um momento pensei que estivesse utilizando o BAscom 8051!

Fabio
sandei
Byte
 
Mensagens: 278
Registrado em: 13 Out 2006 08:15

Mensagempor andre_luis » 12 Dez 2006 14:15

Já me deparei com um problema em que usava 2 dispositivos I2C: EEPROM e RTC, porem o RTC usava o barramento I2C de 8 bits, enquanto a EEPROM usava 16 bits. A solucao q encontri foi implementar um Chipselect via I/O do uC.

+++
"Por maior que seja o buraco em que você se encontra, relaxe, porque ainda não há terra em cima."
Avatar do usuário
andre_luis
Dword
 
Mensagens: 5447
Registrado em: 11 Out 2006 18:27
Localização: Brasil - RJ


Voltar para 8051

Quem está online

Usuários navegando neste fórum: Nenhum usuário registrado e 1 visitante

x