ATmega simulando memória 24Cxx

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

ATmega simulando memória 24Cxx

Mensagempor longo.251272 » 30 Mai 2023 16:04

Boa tarde pessoal,

Estou tentando simular uma EEPROM 24C512 com o ATmega168 que tem eeprom interna e comunicação twi configurado como i2c escravo.
Usei a biblioteca deste exemplo https://github.com/thegouger/avr-i2c-slave/blob/master/main.c

Estou conseguindo enviar e receber os dados sem problema, porém não estou conseguindo identificar quando o comando é read ou write.

Read
Capturar1.JPG


Write
Capturar.JPG


A única diferença conforme as figuras acima é que no Read ocorre dois start's antes do stop bit. Alguém tem alguma ideia de como posso identificar quando o mestre está lendo um dado ou escrevendo um dado ?

Obrigado pela atenção de todos
Você não está autorizado a ver ou baixar esse anexo.
longo.251272
Byte
 
Mensagens: 318
Registrado em: 08 Nov 2011 11:58
Localização: São Paulo - SP

Re: ATmega simulando memória 24Cxx

Mensagempor brasilma » 01 Jun 2023 17:42

Olá Longo,

Veja se isto ajuda: https://learn.sparkfun.com/tutorials/re ... eproms/all

Abraços
" A Teoria orienta e a Prática decide" ;-)
Avatar do usuário
brasilma
Dword
 
Mensagens: 3621
Registrado em: 11 Out 2006 15:39
Localização: Planeta Terra

Re: ATmega simulando memória 24Cxx

Mensagempor cfreund » 01 Jun 2023 19:23

https://ww1.microchip.com/downloads/en/ ... oc1116.pdf

Na página 10, temos:
Código: Selecionar todos
Read operations are initiated the same way as write operations with the exception that
the Read/Write select bit in the device address word is set to “1”. There are three read
operations: current address read, random address read and sequential read.


Na figura 7, diz como deve ser codificado o endereço do dispositivo. Os 7 bits mais significantes são o endereçamento e o LSB (bit 0) diz se é leitura ou escrita. Esse bit, quando em nível alto, indica leitura.

Na página 11, temos os exemplos do protocolo de comunicação.
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: ATmega simulando memória 24Cxx

Mensagempor tcpipchip » 01 Jun 2023 21:58

------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: ATmega simulando memória 24Cxx

Mensagempor longo.251272 » 02 Jun 2023 09:01

Obrigado pelo retorno de todos.

A intenção era substituir a 24C512 pelo ATMEGA sem precisar alterar o rotina de o micro controlador que estava acessando ela.
Mas como ficou um pouco confuso trabalhando com a biblioteca acima para fazer uma rotina para identificar o comando Read recebido pelo ATMEGA e fazer a leitura da EEPROM e pra retornar o dado pro I2C resolvi acrescentar um dado a mais entre o "Device Address" e o "First Word Address" indicando se é leitura ou escrita, assim funcionou sem problema.

Agradeço a atenção
Longo
longo.251272
Byte
 
Mensagens: 318
Registrado em: 08 Nov 2011 11:58
Localização: São Paulo - SP

Re: ATmega simulando memória 24Cxx

Mensagempor cfreund » 02 Jun 2023 10:52

Tá, mas você viu que o bit que indica se é leitura ou escrita está dentro dos 8 bits do "Device Address"? rs
Cláudio F
Avatar do usuário
cfreund
Word
 
Mensagens: 672
Registrado em: 14 Out 2006 14:02
Localização: São Paulo

Re: ATmega simulando memória 24Cxx

Mensagempor longo.251272 » 02 Jun 2023 13:26

Vi sim, porém a biblioteca não me disponibiliza esse byte.

Rotinas que estou usando,
Código: Selecionar todos
void I2C_Iniciar( void )
{
   // set received/requested callbacks
   I2C_setCallbacks( I2C_Received, I2C_Transmit );

   // init I2C
   I2C_init( I2C_ADDR );
}
void I2C_Received( uint8_t received_data )
{
   I2C_RxPosBuffer ++;
   I2C_RxBuffer[ I2C_RxPosBuffer ] = received_data;
}
void I2C_Transmit( void )
{
   I2C_transmitByte( I2C_TxData );
}


A I2C_Received me retorna os dados recebidos após o "Device Adrdress". Talvez uma opção seria alterar a biblioteca.
longo.251272
Byte
 
Mensagens: 318
Registrado em: 08 Nov 2011 11:58
Localização: São Paulo - SP


Voltar para AVR

Quem está online

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

x