Uma das seções do Arduino que provavelmente não se tornará confiável ao longo do tempo é a sua memória. Existem três conjuntos de memória no microcontrolador usado nas placas Arduino baseadas em avr:
- Memória flash (espaço do programa), é onde o esboço do Arduino é armazenado.
- SRAM (memória estática de acesso aleatório) é onde o esboço cria e manipula variáveis quando é executado.
- EEPROM é um espaço de memória que os programadores podem usar para armazenar informações de longo prazo.
A memória é uma parte do quadro que pode ser verificada e verificada e, portanto, avaliada quanto à confiabilidade / integridade. Uma maneira muito básica de verificar a memória seria escrever um determinado padrão de 8 bits (caractere de byte) em todos os endereços da memória e, em seguida, ler o valor presente de cada endereço. Se o valor gravado corresponder ao valor lido, esse bloco específico de 8 bits na memória estará funcionando corretamente no momento.
O desgaste na memória ROM geralmente ocorre em um padrão de bloco, ou seja, blocos de n * 8 bits se degradam com o tempo. Portanto, para um chip ROM de 2K bytes, a integridade do chip pode ser estimada escrevendo e lendo todos os bytes no chip e calculando a porcentagem de blocos que funcionam corretamente. Se a porcentagem de blocos com falha for significativa (15% a 20%), isso significa que a memória provavelmente falhará em breve.
O código de teste pode ser escrito usando métodos separados para cada uma das seções da memória.
SRAM
Quaisquer variáveis declaradas estática ou dinamicamente são alocadas na SRAM. Portanto, poderíamos declarar uma grande matriz de caracteres (~ 2000) e preencher todos os elementos com 255 (todos os bits 1). Em seguida, poderíamos tentar ler cada um desses elementos e verificar se o valor que está sendo lido é de fato 255.
EEPROM
A EEPROM pode ser manipulada usando a biblioteca EEPROM . A biblioteca fornece funções para ler e gravar em locais específicos na EEPROM. Portanto, todos os endereços de memória podem ser testados simplesmente fazendo um loop em todo o espaço da memória. Esta operação exigirá 500 gravações e leituras.
Dependendo do uso da placa, é mais provável que a EEPROM falhe primeiro, mas não é crítica para a operação da placa.
Instantâneo
Os dados podem ser armazenados na memória flash usando a PROGMEM
diretiva. Semelhante à SRAM, uma grande matriz pode ser declarada e inicializada aqui. Em seguida, os valores podem ser lidos e verificados.