Problema EEPROM dados corrompidos

Software e Hardware para ATMEL

Moderadores: 51, guest2003, brasilma

Problema EEPROM dados corrompidos

Mensagempor Jairo15 » 22 Jul 2014 15:39

Pessoal,

Estou com um problema em um projeto, de vez em quando algumas posições da EEPROM aparecem com os dados corrompidos.

Isso acontece quando tiro a alimentação e ligo novamente, a EEPROM não é acessada muitas vezes, na verdade na inicialização e depois em dois comandos acessados via serial ... (leitura), a escrita é feita somente em um comando via serial que ocorre a pedido do usuário.

O AVR que uso é o ATMEGA64, já ativei os fuses "BODEN" e "BODLEVEL" e ajudou muito, reduziu bastante o problema, quase poderia dizer que ficou 100%, mas ainda teve um episódio que corrompeu os dados ... e pelo projeto precisa ficar 100% !

Existe ainda mais algum macete para evitar dos dados sejam corrompidos na EEPROM ?

Abraço
Jairo15
Nibble
 
Mensagens: 52
Registrado em: 06 Fev 2009 12:59

Re: Problema EEPROM dados corrompidos

Mensagempor lopesjm » 22 Jul 2014 18:00

Olá Jairo,

Tem capacitor de 100 nF entre VCC e GND próximo ao mcu ?

A fonte de alimentação pode estar gerando ruído. Veja no osciloscópio com o circuito alimentado e durante essa transição, quando ligar o circuito. Verifique a fonte com uma carga resistiva, sem alimentar o circuito do mcu.

Tem alguma fonte de rf próxima ? Motor ? Lâmpada fluorescente ? Monitor de tubo ? TV de tubo ?

[]s
Jorge
lopesjm
Byte
 
Mensagens: 133
Registrado em: 26 Out 2006 12:40

Re: Problema EEPROM dados corrompidos

Mensagempor andre_luis » 22 Jul 2014 19:43

Tem certeza que o acesso não está sendo feito muito rápido, alem da velocidade permitida pela EEPROM ?
Tem casos em que o core com cristal muito alto precisa de delays dentro da função I2C.

Outra coisa é a seleção do valor dos resistores de pull-up apropriados.



+++
"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

Re: Problema EEPROM dados corrompidos

Mensagempor tcpipchip » 22 Jul 2014 19:45

ATmega64 EEPROM Write During Power-down Sleep Mode

When entering Power-down Sleep mode while an EEPROM write operation is active, the EEPROM write operation will continue, and will complete before the Write Access time has passed. However, when the write operation is completed, the oscillator continues running, and as a consequence, the device does not enter Power-down entirely. It is therefore recommended to verify that the EEPROM write operation is completed before entering Power-down.

ATmega64 Preventing EEPROM Corruption

During periods of low VCC, the EEPROM data can be corrupted because the supply voltage is too low for the CPU and the EEPROM to operate properly. These issues are the same as for board level systems using EEPROM, and the same design solutions should be applied.
An EEPROM data corruption can be caused by two situations when the voltage is too low. First,
a regular write sequence to the EEPROM requires a minimum voltage to operate correctly. Secondly, the CPU itself can execute instructions incorrectly, if the supply voltage is too low.
EEPROM data corruption can easily be avoided by following this design recommendation:
Keep the AVR RESET active (low) during periods of insufficient power supply voltage. This can be done by enabling the internal Brown-out Detector (BOD). If the detection level of the internal BOD does not match the needed detection level, an external low VCC Reset Protection circuit can be used. If a reset occurs while a write operation is in progress, the write operation will be completed provided that the power supply voltage is sufficient.
------------------------------------------
http://www.youtube.com/tcpipchip
Avatar do usuário
tcpipchip
Dword
 
Mensagens: 6560
Registrado em: 11 Out 2006 22:32
Localização: TCPIPCHIPizinho!

Re: Problema EEPROM dados corrompidos

Mensagempor Red Neck Guy » 22 Jul 2014 20:10

O macete é consistência por software.
Para os parametros eu sempre gravo valores dobrados em estruturas com checksum ao final, e sempre escrevo em operações separadas. Dessa forma, se der pau durante a escrita de um novo valor, o valor antigo continua preservado.
No caso de ponteiro para fila e listas, eu crio a estrutura de controle duplicada e também faço a atualização em operações separadas. Dessa forma, se der pau perco somente a ultima atualização.
ASM51 descanse em paz!
Avatar do usuário
Red Neck Guy
Dword
 
Mensagens: 1968
Registrado em: 12 Out 2006 22:24

Re: Problema EEPROM dados corrompidos

Mensagempor Jairo15 » 23 Jul 2014 07:08

lopesjm escreveu:Olá Jairo,

Tem capacitor de 100 nF entre VCC e GND próximo ao mcu ?

A fonte de alimentação pode estar gerando ruído. Veja no osciloscópio com o circuito alimentado e durante essa transição, quando ligar o circuito. Verifique a fonte com uma carga resistiva, sem alimentar o circuito do mcu.

Tem alguma fonte de rf próxima ? Motor ? Lâmpada fluorescente ? Monitor de tubo ? TV de tubo ?

[]s
Jorge


Jorge,

Alimentação é via USB, estou usando capacitor entre VCC e GND, e não possui nenhuma fonte de interferência perto ...

tcpipchip escreveu:During periods of low VCC, the EEPROM data can be corrupted because the supply voltage is too low for the CPU and the EEPROM to operate properly. These issues are the same as for board level systems using EEPROM, and the same design solutions should be applied.
An EEPROM data corruption can be caused by two situations when the voltage is too low. First,
a regular write sequence to the EEPROM requires a minimum voltage to operate correctly. Secondly, the CPU itself can execute instructions incorrectly, if the supply voltage is too low.
EEPROM data corruption can easily be avoided by following this design recommendation:
Keep the AVR RESET active (low) during periods of insufficient power supply voltage. This can be done by enabling the internal Brown-out Detector (BOD). If the detection level of the internal BOD does not match the needed detection level, an external low VCC Reset Protection circuit can be used. If a reset occurs while a write operation is in progress, the write operation will be completed provided that the power supply voltage is sufficient.


TCPIPCHIP,

Já havia lido isso no datasheet, por isso ativei os fuses "BODEN" e "BODLEVEL" (Brown-out Detector (BOD)), e fez uma grande diferença ...


Aquino escreveu:O macete é consistência por software.
Para os parametros eu sempre gravo valores dobrados em estruturas com checksum ao final, e sempre escrevo em operações separadas. Dessa forma, se der pau durante a escrita de um novo valor, o valor antigo continua preservado.
No caso de ponteiro para fila e listas, eu crio a estrutura de controle duplicada e também faço a atualização em operações separadas. Dessa forma, se der pau perco somente a ultima atualização.


Aquino,

Era uma alternativa que estava pensando ... gravar dobrado em outra posição e fazer um check ...

Fiz alguns testes ontem e não consegui simular mais o problema, na verdade depois que ativei os fuses "BODEN" e "BODLEVEL", tive problema uma vez e aconteceu depois que fiz um curto na alimentação quando estava medindo um sinal com o osciloscópio.

Por garantia vou gravar os dados dobrados e fazer um check mesmo.

Obrigado pessoal !
Jairo15
Nibble
 
Mensagens: 52
Registrado em: 06 Fev 2009 12:59


Voltar para AVR

Quem está online

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

x