Página 1 de 1

Dado que não apaga ao desenergizar

MensagemEnviado: 13 Abr 2020 19:59
por EduardoLenz
Boa noite colegas,

Estou com uma dúvida. Um tanto quanto básica, porém será de grande ajuda se puderem esclarecê-lá para mim.

A situação é: preciso cadastrar um dispositivo no microcontrolador ARM. No caso, com ele ligado, vou através de um teclado inserir uma informação. Quando ele for desligado, não pode perde esse cadastro.

Esta variável na qual o dado cadastrado vai ser armazenado, pode ser programada de uma forma padrão? Ou, por exemplo, eu precisaria programar essa variável em um outro tipo de memória.

Meu dispositivo é um LPC1768.

Novamente, peço desculpas por publicar uma dúvida básica como essa. Porém, esclarecendo-a vai me tirar um grande trabalho das costas.

Obrigado desde já.

Re: Dado que não apaga ao desenergizar

MensagemEnviado: 13 Abr 2020 22:19
por eliveltonpsantos
A primeira e mais fácil alternativa é utilizar a Memória EEPROM do microcontrolador. Contudo, pelo o que eu analisei do datasheet, esse microcontrolador não possui Memória EEPROM.

Uma outra alternativa é você adicionar um CI de Memória EEPROM Externa comunicando via I2C, por exemplo, com o microcontrolador.

A terceira alternativa que eu conheço é utilizar uma parte da Memória Flash, a memória onde fica armazenada seu código dentro do microcontrolador, para ser utilizada como uma "Memória EEPROM" emulada, dado que ela não se apaga quando você desenergizá-lo.

Em relação à segunda, a terceira alternativa tem a vantagem de não precisar de um CI a mais; contudo, sua implementação no código é bem mais complexa. Não sei em detalhes seu nível de conhecimento/experiência, nem a opinião dos demais colegas do fórum, mas eu te aconselho a ficar com a segunda alternativa.

Re: Dado que não apaga ao desenergizar

MensagemEnviado: 27 Abr 2020 08:56
por tronico
A segunda alternativa do amigo é uma boa (utilizar uma memória externa).

A terceira além da complexidade tem um detalhe, as interrupções devem ser desligadas durante a gravação da Flash interna, isso pode ser um problema dependendo o projeto.

Re: Dado que não apaga ao desenergizar

MensagemEnviado: 27 Abr 2020 09:11
por xultz
EduardoLenz, o microcontrolador mais próximo do LPC1768 que trabalhei foi o LPC2106, e ele não possui memória EEPROM (como é o caso de outros microcontroladores, geralmente menores), porém é possível usar a flash interna para guardar dados não voláteis. No datasheet do LPC2106 inclusive tinha uma rotina em C de exemplo para armazenar dados na memória flash.
É altamente provável que se você pesquisar a respeito, vai encontrar códigos de exemplo fazendo isso, porque essa tua necessidade é muito comum (por exemplo, neste exato momento estou tendo que fazer isso, mas no caso estou usando um microcontrolador ATSAME54P20A da Microchip, ele é um ARM, e a Microchip disponibiliza uma biblioteca para usar este microcontrolador chamado Harmony, e ele tem rotinas que eles chamam de SmartEEPROM com exatamente esta finalidade).

Desculpe não ter esclarecido de forma mais direta tua dúvida, mas é que não trabalho com LPC já fazem mais de 10 anos...

Re: Dado que não apaga ao desenergizar

MensagemEnviado: 27 Abr 2020 10:07
por denis
Dá pra usar o que o xultz comentou, esse processo chama-se IAP (In-Application Programming).

acho que neste link tem mais detalhes:
http://tinystudy.blogspot.com/2012/04/i ... c1768.html

Re: Dado que não apaga ao desenergizar

MensagemEnviado: 30 Abr 2020 09:20
por dreher
Eu Uso muito a linha STM32 e tambem não possuem EEPROM, então reservo a ultima pagina do banco de memoria flash para isso.
não é tão complexo, porem alguns cuidados:
Para reescrever voce sempre tem que apagar a memoria toda, então tem que ter um buffer de tudo
Desligar as interrupções
Os endereços são de 4 em 4 posições

Re: Dado que não apaga ao desenergizar

MensagemEnviado: 17 Jun 2021 12:21
por Guri
Eu costumo deixar uma e2prom externa para armazenar coisas...
Uma dica que pode parecer inocente demais! Procure sempre fazer uma espelho da sua e2prom ou eeprom em RAM quando iniciar seu boot, isso agiliza muito o processo com esses tipos de memórias.