Ir ao conteúdo

Gravar o valor de uma variável na EEPROM - PIC16F628A - CCS


Tehuan Melo

Posts recomendados

Postado

Boa noite galera

 

Galera eu to querendo gravar o valor de uma variável na memoria eeprom do pic16f628a já ate consegui faze-lo mas não tenho riqueza em conhecimentos da função. Logo abaixo segue meu código.

Criei um programinha de exemplo para aprender a utilizar a função.

 

quantas vezes eu posso gravar esses dados na memoria?

A que se refere last volume? (em minhas pesquisas percebi que é o endereço da memória)

Qual o endereço adequado?

 

Acho que essas duvidas vão ajudar muita gente.

 

Exemplo CCS

#define LAST_VOLUME 10 // Location in EEPROMvolume++;write_eeprom(LAST_VOLUME,volume);#define LAST_VOLUME 10volume = read_EEPROM (LAST_VOLUME);

Programa exemplo

#include <16f628a.h>#FUSES NOWDT                    //No Watch Dog Timer#FUSES INTRC_IO                 //Internal RC Osc, no CLKOUT#FUSES PUT                      //Power Up Timer#FUSES PROTECT                  //Code protected from reads#FUSES NOBROWNOUT               //No brownout reset#FUSES NOMCLR                   //Master Clear pin used for I/O#FUSES NOLVP                    //No low voltage prgming, B3(PIC16) or B5(PIC18) used for I/O#FUSES CPD                      //Data EEPROM Code Protected#use delay(clock=4000000)#define liga      output_high#define desliga   output_low#define led       pin_b3#define button    pin_a1#define set       pin_a2int soma = 1;void main(){soma = read_EEPROM (0);while (true){   if (!input(set))            {            soma++;            do{}            while (!input(set));                              }            if (soma>3)                  {               soma=1;                                   }                        if (!input(button))                  {              if (soma==1)              {              liga(led);              delay_ms(100);              desliga(led);              }                            else if (soma==2)              {              liga(led);              delay_ms(100);              desliga(led);              delay_ms(100);              liga(led);              delay_ms(100);              desliga(led);              }                            else if (soma==3)              {              liga(led);              delay_ms(100);              desliga(led);              delay_ms(100);              liga(led);              delay_ms(100);              desliga(led);              delay_ms(100);              liga(led);              delay_ms(100);              desliga(led);                            }                           }             write_eeprom(0,soma);            }}

z3s9nQ8.png

 

Agradeço a todos!

Postado

last_volume é uma constante, é um valor que você define e o usa sempre, neste caso é o 10...

ai no seu código ao invés de você escrever no seu código toda hora o numero 10, você coloca last_volume, ai se for mudar só precisa mudar la em cima na definição e não precisa mudar o código inteiro de no novo pela mudança do valor

 

na familia PIC a eeprom aguenta um milhão de ciclos de escrita.

 

flowwww

Postado

valeu meu amigo!

 

Uma duvida, esse 1 milhão de escritas, é no caso 1 escrita a cada falta de alimentação?

 

Por exemplo desliguei o pic conta uma gravação?

Postado

não cara, esse 1 escrita significa você escrever na memória....

 

a escrita ocorre quando você da o comando

 

 write_eeprom(LAST_VOLUME,volume); 

 

neste momento o pic escreve o valor determinado na posição determinada.

 

flowww

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...

Ebook grátis: Aprenda a ler resistores e capacitores!

EBOOK GRÁTIS!

CLIQUE AQUI E BAIXE AGORA MESMO!