Segue em anexo o Teste.ino, a imagem anexada é praticamente igual, só simplifiquei um pouco para deixar só a parte de lógica.
Basicamente estou escrevendo 8 caracteres na EEPROM e tentando ler, no arduino uno sempre funcionou perfeitamente, no Attiny se eu chamar a função gravaNome() ele grava tudo e consegue ler normalmente, se eu não chamo, mesmo tendo gravado anteriormente, o chip não consegue ler nada.
Pensei que pudesse ser uma memória volátil no Attiny, mas abri o datasheet ( http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bi... ) e já na primeira página fala:
Non-volatile Program and Data Memories
– 128/256/512 Bytes In-System Programmable EEPROM
Tem algo de diferente entre escrever na memória do Attiny e do arduino? O que estaria errado?
Obrigado.
Tags:
O Arduino Uno tem MCU ATmega328P no qual o EEAR e EEDR (endereços da EEPROM) estão mapeados nos endereços 0x40, 0x41 e 0x42.
MCU ATtiny tem os registradores EEAR e EEDR mapeados nos endereços 0x1D, 0x1E e 0x1F.
Então, quando for gravar em um ou no outro MCU, vc precisa compilar de acordo com o MCU. Se gravar o mesmo bitstream nos dois, um deles não vai funcionar.
Entendi o que estava ocorrendo.
Acho que entendi, o Attiny85 apaga toda a EEPROM caso ele seja programado via ISP, fiz um botão e esse botão acionava uma função que gravava na EEPROM, testei a impressão antes do botão e tava tudo em branco, apertei o botão e funcionou. Desliguei e liguei de novo e continuou escrito.
Valeu!
Ok, vi no datasheet que por padrão apaga a EEPROM quando grava via ISP, mas dá pra mudar alterando o "Fuse High Byte" EESAVE de 1 pra 0. Nesse caso preserva a EEPROM quando grava via ISP.
Valeu pela dica!
Acho que entendi, o Attiny85 apaga toda a EEPROM caso ele seja programado via ISP:
https://stackoverflow.com/questions/36623186/attiny85-eeprom-erase-...
Bem-vindo a
Laboratorio de Garagem (arduino, eletrônica, robotica, hacking)
© 2024 Criado por Marcelo Rodrigues. Ativado por