Comunicação I2C entre PIC e EEPROM 24xx65

Software e Hardware para uC PIC

Moderadores: andre_luis, 51, guest2003, Renie

Comunicação I2C entre PIC e EEPROM 24xx65

Mensagempor MOR_AL » 13 Ago 2007 15:44

Caros colegas.

Possuo algumas memórias EEPROM 24C65 (8k por 8 ) e decidi aprender a usá-las.
Baixei o manual 24AA65/24LC65/24C65 da Microchip (DS21073J). Após lê-lo, fiz umas rotinas em assembler para o PIC16F628, que não possui facilidades para a comunicação I2C. Fiz as que geram o pulso de start, stop, e as que escreve e um byte no cache da memória (uma espécie de buffer interno).
Ainda não pude testar as rotinas, pois estou dependendo de esclarecer um pequeno detalhe. Quase que decorei o manual, mas não há menção sobre este detalhe. Procurei aqui no fórum e também não encontrei.
A dúvida é a seguinte:
Há uma memória interna intermediária, de 8 páginas com 8 bytes cada, que o manual chama de cache. Sua função é de poder gravar com maior velocidade nela e usar o PIC para fazer outras coisas, enquanto esta memória transfere seus dados para a EEPROM, pois gravar em EEPROM é um processo mais lento (5ms por página).
Este processo de gravação é disparado por meio de um pulso de Stop enviado pelo PIC.
Acontece que há três modos de se gravar nesta EEPROM.
- Byte Write – Grava um byte.
- Page Write – Grava uma página ou 8 bytes.
- Cache Write – Gravam 8 páginas ou 64 bytes.
Para todos os três casos deve-se terminar o procedimento com um pulso de Stop, que inicia o processo de transferência entre a memória cache e a EEPROM.
O detalhe é que entendi que o pulso de Stop transfere TODA a memória cache (64 bytes) para a EEPROM.
Minha dúvida é que, se isso for verdade, a operação de gravar um byte ou uma página (8 bytes) vai fazer gravar TODO O RESTANTE DA MEMÓRIA CACHE NA EEPROM. Desta forma se estaria gravando dados já gravados anteriormente e fora de seqüência, pois a memória cache é do tipo anel de 6 bits de endereçamento.
A única forma de gravar corretamente, que visualizo fazer sentido, é gravar blocos de 64 bytes. Aí a seqüência dos dados ficaria correta. Mas há os outros dois primeiros modos de gravação.

Então como fica? Alguém sabe?

Note que esta dúvida independe da linguagem de programação utilizada, pois é conceitual.

Desde já, agradeço pelo auxílio.

MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ

Mensagempor MOR_AL » 13 Ago 2007 20:04

Olá.
Complementando. Achei a última frase do ítem 7.2 do manual, que talvez esclareça alguma coisa:
If a partially loaded page in the cache remains when the Stop bit is sent, only the bytes that have been loaded will be written to the array.
MOR_AL
Avatar do usuário
MOR_AL
Dword
 
Mensagens: 2934
Registrado em: 19 Out 2006 09:38
Localização: Mangaratiba - RJ


Voltar para PIC

Quem está online

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

x