EEPROM com NRF24LE1
Todos os incidentes bons e ruins são armazenados na memória cerebral dos humanos. Da mesma forma, o controlador usa EEPROM para salvar dados ou variáveis. Neste artigo veremos como usar a EEPROM do NRF24LE1 e quais são seus usos?
Você sabe o que faz a memória na eletrônica? Vejamos um exemplo de capacitor. Ele tem a capacidade de reter tensão e, portanto, é tratado como componente de memória. Existem dois tipos de memórias em eletrônica; Volátil e não volátil. O volátil é apagado se a energia fornecida a esta memória for cortada. Isso significa que os dados armazenados serão apagados em caso de falha de energia. O não volátil tem a vantagem de reter dados mesmo quando a energia está desligada. O exemplo mais comum de memória volátil é a RAM usada em nossos computadores. Os exemplos de memória volátil são disco rígido, cartões SD, EEPROM, etc.
Fig. 1: Protótipo de interface NRF24LE1 e EEPROM
Neste artigo, focaremos na EEPROM em nosso módulo NRF e em seu uso. EEPROM significa memória somente leitura programável apagável eletricamente. É um tipo de Não Volátil. Ele pode ser programado e apagado fornecendo sinais de programação especiais. Eles estão disponíveis em tamanhos pequenos e podem ser facilmente interligados com AVR, Arduino ou PIC. Às vezes, eles estão embutidos em microcontroladores. Mas para expansão da memória temos que usar a externa.
O NRF24LE1, sendo um componente incrível, possui memória EEPROM embutida. Possui 1,5 Kb de memória de dados não volátil. Essa memória é útil quando conectamos sensores e desejamos reter as leituras para uso futuro. Para utilizar os recursos de leitura e gravação desta memória, usaremos função em nosso código.
Usaremos o nrfsdk (kit de desenvolvimento de software) fornecido pela Nordic Semiconductor Ltd.
Visite nosso artigo anterior sobre NRF24LE1 para obter mais ajuda.
Algumas funções que usaremos para ler e escrever EEPROM são:
• lib_eeprom_byte_write – Esta função pega a localização do endereço e um dado de byte para ser gravado.
• lib_eeprom_bytes_write – Esta função pega vários bytes de dados junto com o número de bytes e o endereço inicial.
• lib_eeprom_byte_read – Esta função gera dados de byte do endereço de memória fornecido.
FUNÇÃO | PARÂMETRO DE ENTRADA | SAÍDA | DESCRIÇÃO |
---|---|---|---|
lib_eeprom_byte_write | Endereço de 8 bits e dados de 8 bits | – | Para gravar dados de 8 bits no endereço de –bit especificado |
lib_eeprom_bytes_write | Endereço de 8 bits, ponteiro de 8 bits para bytes a serem gravados e valor de 8 bits indicando o número de bytes a serem gravados | – | Para gravar vários bytes no endereço inicial especificado |
lib_eeprom_byte_read | Endereço de 8 bits | Dados de 8 bits | Para ler dados de 8 bits de um endereço de 8 bits especificado |
lib_eeprom_bytes_read | Endereço de 8 bits, ponteiro de 8 bits para bytes a serem gravados e valor de 8 bits indicando o número de bytes a serem lidos | – | Para ler vários bytes do endereço inicial especificado. |
Para uma compreensão completa, dê uma olhada na implementação dessas funções no código. O código foi comentado para maior compreensão.
Gravaremos alguns dados na memória EEPROM e então reiniciaremos nosso sistema. Em seguida leremos os dados armazenados anteriormente para verificar o funcionamento da EEPROM.
Código-fonte do projeto
###
//Program to
/* Direitos autorais (c) 2009 Nordic Semiconductor. Todos os direitos reservados.
** As informações aqui contidas são propriedade confidencial da Nordic* Semiconductor ASA. Os termos e condições de uso são descritos em detalhes* no CONTRATO DE LICENÇA DE SOFTWARE PADRÃO DE SEMICONDUTORES NÓRDICOS.** Aos licenciados é concedido o uso gratuito e intransferível das informações. NÃO* GARANTIA DE QUALQUER TIPO é fornecida. Este título NÃO deve ser removido do* o arquivo.**$ÚltimaRevisãoAlterada: 133$*/#include "reg24le1.h" // arquivo de cabeçalho de E/S para NRF24LE1#include "lib_eeprom.h" // arquivo de cabeçalho contendo funções de leitura/gravação eeprom#include "hal_delay.h" // arquivo de cabeçalho contendo funções de atraso// Código principalvazio principal{P1DIR = 0; //define a porta1 como saídaP1 = 0; // torna todos os pinos da Porta1 baixosP1 = lib_eeprom_byte_read(0x00); // carrega dados de 8 bits da eeprom no endereço 0x00atraso_ms(2000); //atraso de 2 segundoswhile(1) //loop infinito{P10 = 0; //torna o pino0 da porta1 baixoP11 = 0; //torna o pino1 da porta1 baixolib_eeprom_byte_write(0x00, P1); // escreve os dados do registrador P1 na eepromatraso_ms(2000); //atraso de 2 segundoslib_eeprom_byte_write(0x00, P1); // escreve os dados do registrador P1 na eepromP10 = 1; //torna o pino0 da porta1 altoP11 = 0; //torna o pino1 da porta1 baixolib_eeprom_byte_write(0x00, P1); // escreve os dados do registrador P1 na eepromatraso_ms(2000); //atraso de 2 segundosP10 = 0; //torna o pino0 da porta1 baixoP11 = 1; //torna o pino1 da porta1 altolib_eeprom_byte_write(0x00, P1); // escreve os dados do registrador P1 na eepromatraso_ms(2000); //atraso de 2 segundosP10 = 1; //torna o pino0 da porta1 altoP11 = 1; //torna o pino1 da porta1 altolib_eeprom_byte_write(0x00, P1); // escreve os dados do registrador P1 na eepromatraso_ms(2000); //atraso de 2 segundos}}###
Diagramas de circuito
Diagrama de Circuito-NRF24LE1-Interface EEPROM |
Vídeo do projeto