HOME      PROJETOS      PROGRAMAÇÃO     

Rotinas de leitura e gravação para EPROM 93C66


Às vezes, em determinados circuitos, se torna necessário armazenar dados para que possam ser recuperados posteriormente ou para alimentar aplicativos como planilhas e outros programas no PC ou para que o próprio circuito volte a funcionar adequadamente quando for religado.

A maneira mais fácil de armazenar dados é usar uma memória EEPROM. Muitos microcontroladores PIC possuem memória EEPROM porém seu tamanho é muito limitado e, dependendo da aplicação, é insuficiente para guardar todos os dados requeridos. Assim, o jeito é usar um chip de EEPROM externo como o EPROM 93C66 que, segundo o seu data sheet, possui 4096 bits organizados num array de 256x16 bits, isto é, comporta 512 bytes de 8 bits. Outras características da EPROM 93C66 são:

  • Tensão de alimentação entre 2,7v a 5,5v.
  • Drenagem de corrente de 200uA (micro Ampères).
  • 40 anos de retenção dos dados gravados.
  • Pode ser gravada 1.000.000 de vezes.

A fim de facilitar a operação da EPROM 93C66, este projeto define as rotinas necessárias para gravar, ler, e apagar essa memória.


REQUISITOS DE HARDWARE

As rotinas aqui apresentadas são desenvolvidas para microcontroladores da família 16F.

Para usar uma EPROM 93C66 é necessário que se reserve 4 (quatro) portas de I/O do microcontrolador PIC para controlar os seguintes sinais:

  • CS sinal do chip select.
  • SK sinal de clock.
  • DI entrada serial de dados.
  • DO saída serial de dados.

A figura abaixo mostra o esquema elétrico para a construção de um circuito montado em torno de um microprocessador PIC16F628A que será usado para testar o programa de demonstração da rotinas.


AS ROTINAS

As rotinas desenvolvidas para ler, gravar e apagar a memória EPROM 93C66 fazem parte do módulo eeprom_93c66.asm que deve ser incluido no programa fonte através de um comando #include "eeprom_93c66.asm".

DEFINIÇÃO DE REGISTRADORES E SÍMBOLOS NO PROGRAMA

Antes de compilar o programa que vai usar essas rotinas, é necessário incluir os registadores e símbolos abaixo na sessão adequada do programa. Esses registradores são para uso exclusivo das rotinas de controle da EEPROM e não devem ser usados pelo programador para quaisquer outras finalidades.

EP_ADDRESS RES 1 ; endereco corrente na EPROM EP_DATA RES 2 ; 16 bits de dados EP_ILC RES 1 ; tamanho da instrucao EP_ICACHE RES 4 ; cache de instrucao da EPROM EP_TMP1 RES 1 ; temp EP_READ, EP_rotate, EP_wait EP_TMP2 RES 1 ; temp EP_READ EP_TMP3 RES 1 ; temp EP_READ, EP_put

Os símbolos abaixo permitem ao programador definir as portas e bits de I/O que serão usados pelas rotinas para controlar a memória EEPROM. Os bits podem ser escolhidos a vontade contanto que pertençam a mesma porta. Os valores atribuidos aos símbolos abaixo são apenas exemplos.

#define EP_TRIS TRISx ; I/O da EPROM #define EP_PORT PORTx ; porta da EPROM EP_CS equ 3 ; pino CS da EPROM Chip Select ---> PIC output EP_SK equ 2 ; pino SK da EPROM Clock ---> PIC output EP_DI equ 1 ; pino DI da EPROM Input ---> PIC output EP_DO equ 4 ; pino DO da EPROM Output ---> PIC input EP_STABLE equ .200 ; tempo para estabilizar a EEPROM no Chip Select (micro segundos)

Pode-se, opcionalmente, acender um LED indicador de estado da EEPROM durante as instruções de gravação. Para acender o LED indicador, reserve um bit de uma porta qualquer, definindo-os no programa com os símbolos abaixo e conecte o LED a esse pino. Se não desejar o LED indicador, não defina os símbolos abaixo e automaticamente a rotina não vai gerar instrucões para mostrar o status da EPPROM com o LED.

#define EP_LED PORTy ; porta para o LED de Wait da gravação (OPCIONAL) EP_LEDBIT equ n ; pino para o LED de Wait da gravação (OPCIONAL)



DESCRICAO DAS ROTINA

ROTINA FUNÇÃO ENTRADA SAÍDA COMO CHAMAR
 EP_WEN     Habilita a EEPROM para gravação  não há   EEPROM habilitada para gravação
call EP_WEN   
 EP_WDS     Desabilita a EEPROM para gravação  não há   EEPROM desabilitada para gravação   
call EP_WDS   
 EP_WRALL     Grava um unico valor (16 bits) em toda a EEPROM     EP_DATA deve conter os 16 bits de dados   toda a EEPROM gravada com o dado especificado   
call EP_WEN ; habilita gravação na ; memória eprom movlw "A" movwf EP_DATA+0 movlw "X" movwf EP_DATA+1 call EP_WRALL
 EP_WRITE     Grava um dado (16 bits) num endereço da EEPROM     EP_ADDRESS deve conter um endereço (0x00 a 0xFF) 

 EP_DATA deve conter os 16 bits de dados
 dado em EP_DATA (16 bits) gravado no endereço EP_ADDRESS   
call EP_WEN ; habilita gravação na ; memória eprom movlw 0x20 movwf EP_ADDRESS movlw "A" movwf EP_DATA+0 movlw "X" movwf EP_DATA+1 call EP_WRITE;
 EP_READ     Le um dado (16 bits) de um endereço da EEPROM     EP_ADDRESS deve conter um endereço (0x00 a 0xFF) 

 EP_DATA (16 bits) contera o dado lido   
movlw 0x20 ; endereço movwf EP_ADDRESS call EP_READ;
 EP_ERAL     Apaga todos os dados da EPPROM gravando 0xFF     não há 

 toda a EPPROM apagada (gravada com 0xFF)   
call EP_WEN ; habilita gravação na ; memória eprom call EP_ERAL
 EP_ERASE     Apaga um endereço da EEPROM gravando 0xFF     EP_ADDRESS deve conter um endereço (0x00 a 0xFF) 

 endereço especificado apagado (gravado com 0xFF)   
call EP_WEN ; habilita gravação na ; memória eprom movlw 0x20 movwf EP_ADDRESS call EP_ERASE;
 EP_PUT     Move bytes da memória de dados do processador para a EEPROM     o registrador W contem o número de bytes a serem movidos 

 o registrador FSR contem o endereço de origem do dado na memória do processador

 EP_ADDRESSS contem o endereço destino do dado na memória EEPROM
 endereço EP_ADDRESS da EEPROM com o dado movido do processador   
call EP_WEN ; habilita gravação na memória ; eprom movlw dado ; endereço do dado na memória de ; dados do processador movwf FSR ; carrega indexador movlw 0x50 ; endereço destino na EEPROM movwf EP_ADDRESS ; carrega destino movlw n ; número de bytes a mover call EP_PUT ; chama a movimentação



PROGRAMA EXEMPLO

O programa de demonstração mostra como ler a EPROM.
Esse programa usa a controladora de LCD descrita em LCD HD44780 - interface com 2 fios. Monte o circuito mostrado no esquema elétrico acima para poder testar o programa. O botão de contato momentâneo, ligado ao pino RA0 (PORTA), permite ler sequencialmente a EPROM cada vez que for pressionado.


DOWNLOADS



Índice dos circuitos




H P S P I N

Desde 04 de Março de 2010

Atualização: 19 de Mar de 2024