Página 1 de 2

Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 29 Ago 2013 12:09
por juracipereira
Bom dia a todos.

Algum dos amigos do fórum teria alguma rotina, ou saberia me informar algum modo de gravar uma variável com 32bits na eeprom interna do pic usando o CCS?

Muito grato

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 29 Ago 2013 12:53
por juracipereira
Boa tarde pessoal,


gostaria de compartilhar com os amigos e para quem necessitar, que achei a solução que estava sob meus olhos mas nunca havia percebido.
Trata-se da biblioteca INTERNAL_EEPROM do CCS que eu não sabia que existia.

É muito simples e funciona perfeitamente.

Um abraço a todos e muito obrigado.

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 29 Ago 2013 19:42
por andre_luis
Já tinha até usado isso aí, mas não liguei o nome á pessoa.
O fato é que uma das coisas legais do CCS é que vem tudo mastigado nessas API´s pra tudo quanto é modulo.


+++

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 29 Ago 2013 20:12
por juracipereira
Isso é verdade André...
O CCS ajuda muito nessas horas com essas libs já prontas..

Além de tudo dá pra aprender muito com elas, se tiver tempo e paciência, dentro delas explica tudo o que faz e assim podemos até fazer por conta própria, foi o que eu fiz com esse caso.

Mas já tenho tido essa dificuldade na gravação de variáveis com mais 8 bits na eeprom do pic há um bom tempo. E venho sempre empurrando com a barriga...apesar de procurar muito na net, não encontrei nada muito objetivo para esse caso.

Por isso, fiz questão de postar aqui o resultado, para outros que como eu tem essa mesma dificuldade.

Grande abraço


andre_teprom escreveu:Já tinha até usado isso aí, mas não liguei o nome á pessoa.
O fato é que uma das coisas legais do CCS é que vem tudo mastigado nessas API´s pra tudo quanto é modulo.


+++

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 24 Fev 2014 15:37
por Song_21
Alguém poderia me ajudar ??
Preciso escrever na EEPROM do PIC, gostaria de saber se alguém pode me dizer passo-a-passo ??
Eu uso o CCS

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 24 Fev 2014 20:39
por andre_luis
Song,


Quando você diz gravar na EEPROM do PIC, presumo que esteja se referindo á memória interna.
Já tentou usar o exemplo fornecido junto á instalação do compilador ?

Código: Selecionar todos
    /////////////////////////////////////////////////////////////////////////   
    ////                          EX_INTEE.C                             ////   
    ////                                                                 ////   
    ////  This program will read and write to the '83 or '84 internal    ////   
    ////  EEPROM.                                                        ////   
    ////                                                                 ////   
    ////  Jumpers:                                                       ////   
    ////     PCM,PCH    pin C7 to RS232 RX, pin C6 to RS232 TX           ////   
    ////                                                                 ////   
    ////  This example will work with the PCM and PCH compilers.  The    ////   
    ////  following conditional compilation lines are used to include a  ////   
    ////  valid device for each compiler.  Change the device, clock and  ////   
    ////  RS232 pins for your hardware if needed.                        ////   
    /////////////////////////////////////////////////////////////////////////   
    ////        (C) Copyright 1996,2003 Custom Computer Services         ////   
    //// This source code may only be used by licensed users of the CCS  ////   
    //// C compiler.  This source code may only be distributed to other  ////   
    //// licensed users of the CCS C compiler.  No other use,            ////   
    //// reproduction or distribution is permitted without written       ////   
    //// permission.  Derivative programs created using this software    ////   
    //// in object code form are not restricted in any way.              ////   
    /////////////////////////////////////////////////////////////////////////   
       
       
    #if defined(__PCM__)   
    #include <16F877.h>   
    #fuses HS,NOWDT,NOPROTECT,NOLVP   
    #use delay(clock=20000000)   
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)   
       
    #elif defined(__PCH__)   
    #include <18F452.h>   
    #fuses HS,NOWDT,NOPROTECT,NOLVP   
    #use delay(clock=20000000)   
    #use rs232(baud=9600, xmit=PIN_C6, rcv=PIN_C7)   
    #endif   
       
    #include <input.c>   
       
       
    // The following initializes the first 4 locations of the data EERPOM   
    //  using the #ROM directive   
    #IF defined (__PCM__)   
    #rom 0x2100={1,2,3,4}   
    #elif defined(__PCH__)   
    #rom int 0xf00000={1,2,3,4}   
    #endif   
       
    void main() {   
       
       BYTE i, j, address, value;   
       
       do {   
          printf("\r\n\nEEPROM:\r\n");              // Display contents of the first 64   
          for(i=0; i<=3; ++i) {                     // bytes of the data EEPROM in hex   
             for(j=0; j<=15; ++j) {   
                printf( "%2x ", read_eeprom( i*16+j ) );   
             }   
             printf("\n\r");   
          }   
          printf("\r\nLocation to change: ");   
          address = gethex();   
          printf("\r\nNew value: ");   
          value = gethex();   
       
          write_eeprom( address, value );   
       
       } while (TRUE);   
    } 



+++

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 25 Fev 2014 08:24
por juracipereira
Song,

Como citou o amigo André, se for apenas gravar na eeprom (memória não volátil) é muito simples, dê uma olhada na ajuda do CCS e procure pelos comandos write_eeprom e read_eeprom, tem todo o tutorial de utilização e é muito simples.
Não se esqueça que ela é de 8bits! Se precisar gravar dados maiores, dê uma lida nesse tópico desde o começo!

Abraço

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 25 Fev 2014 13:19
por Song_21
Valeu galera, Agradeço pela ajuda !!

O que quero fazer é digitar um número , e dependo do número digitado quero que acenda um determinado LED.

Por exemplo:
digitei 125- pisca um LED vermelho
digitei 012- pisca um LED azul
(OBS.:Quero fazer isso pra 40 números ou mais...)

KEYPAD (usando teclado matricial) e LCD eu consigo dominar, só faltava dominar a escrita/leitura na EEPROM para associar o numero ao LED ....

Aproveitando a ajuda, tem alguma forma mais fácil de fazer isso ???

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 25 Fev 2014 19:57
por juracipereira
Song,

Para essa aplicação não vejo a necessidade de utilizar gravação na eeprom, a não ser que deseje alterar a ordem dos números associados ao leds em tempo de execução.
Teclado Matricial tem uma biblioteca disponível no ccs. Procure por kbd.c.
Mas se esta iniciando, evite teclado matricial.

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 26 Fev 2014 10:36
por Song_21
Juraci,

Você poderia me dar um exemplo disso sem usar a eeprom ??

Estou iniciando sim, qualquer ajuda será bem vinda !!

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 26 Fev 2014 12:11
por juracipereira
Só resumindo a lógica:
Ainda será necessário fazer a leitura do teclado. Mas já dá pra ver como pode associar um número informado a uma cor de led

Código: Selecionar todos
#define PIN_XX led_vermelho
#define PIN_XX led_amarelo
#define PIN_XX led_verde

void main()
{
   int num_informado=0;
   led_verde=0;
   led_amarelo=0;
   led_verde=0;
   while (true)
   {
      if (num_informado == 123)
         led_vermelho=1;
      else if (num_informado == 321)
         led_amarelo=1;
      else if (num_informado == 213)
         led_verde=1;
   }
}

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 27 Fev 2014 12:30
por Song_21
Valeu cara , muito obrigado !!!
vou tentar fazer assim...

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 27 Fev 2014 13:05
por ze2
pra quem gosta de "elegâncias", um switch case até que num fica fêi demai da conta não...
Código: Selecionar todos
switch (num_informado){
case 123:         led_vermelho=1;break;
case 321:          led_amarelo=1; break;
case 213:         led_verde=1; break;
default:               led_vermelho=led_verde=led_amarelo=0;
}

Cuidado: um erro que todos iniciantes cometem é usar led_verde

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 27 Fev 2014 16:16
por juracipereira
Pois é Ze, também pensei nisso,

mas como nosso amigo Song está apenas iniciando resolvi passar a essência da coisa, para ele não se perder logo de cara. Convenhamos que "if-else" é muito mais intuitivo para que tá partindo do zero, concorda?

Abraço

Re: Gravar Eeprom Interna 32bits PIC CCS

MensagemEnviado: 27 Fev 2014 17:03
por ze2
"Ai quem manda é o o projetista. Ele tem que dosar os prós e contras. Foi apenas uma sugestão."
(by cfeund)
(kk)