Página 1 de 2
Gravar Eeprom Interna 32bits PIC CCS

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
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

Enviado:
27 Fev 2014 12:30
por Song_21
Valeu cara , muito obrigado !!!
vou tentar fazer assim...
Re: Gravar Eeprom Interna 32bits PIC CCS

Enviado:
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

Enviado:
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

Enviado:
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)