Autor Tema: tengo un problema con la eeprom ayuda  (Leído 3099 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado zerotkd

  • PIC10
  • *
  • Mensajes: 4
tengo un problema con la eeprom ayuda
« en: 09 de Diciembre de 2007, 18:35:09 »
 como guardo datos en la eeprom para despues compararlos.......
« Última modificación: 10 de Diciembre de 2007, 16:51:40 por zerotkd »

Desconectado BrunoF

  • Administrador
  • DsPIC30
  • *******
  • Mensajes: 3865
Re: tengo un problema con la eeprom ayuda
« Respuesta #1 en: 09 de Diciembre de 2007, 19:28:07 »
Pues parece que realmente es urgente!
Asi que...ya! ya! ponte a trabajar en ello!!!
"All of the books in the world contain no more information than is broadcast as video in a single large American city in a single year. Not all bits have equal value."  -- Carl Sagan

Sólo responderé a mensajes personales, por asuntos personales. El resto de las consultas DEBEN ser escritas en el foro público. Gracias.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: tengo un problema con la eeprom ayuda
« Respuesta #2 en: 09 de Diciembre de 2007, 19:42:36 »
 :D :D compadre te recominedo que uses el buscador, para que veas como se maneja la eeprom del pic, ya que bastante hay sobre ello, supongo que tu codigo se ingresa por teclado, asi que tb busca por teclado matricial o teclado analogico si es de tu preferncia

aca no hacemos todo el trabajo por uno, podemos ayudarte en dudas, no hacerte la tarea, porque no es nada etico, asi que te recomiendo que porgrames lo que puedas y de ahi ves si alguien puede aclarar tus dudas o fallas

un saludo, y espero no te molestes, pues aca ya varios se han sentido muy molestos con mensajes como el que tu has dejado
.

Desconectado aitopes

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 5100
    • uControl
Re: tengo un problema con la eeprom ayuda
« Respuesta #3 en: 09 de Diciembre de 2007, 19:47:56 »
Hola zerotkd!

Amen de que dificilmente nadie tenga el proyecto listo para pasartelo, estari bueno saber algo mas de como has encarado el proyecto...

¿Tienes algun esquema del circuito?
¿Que codigo has intentado usar?

Saludos!
Si cualquier habilidad que aprende un niño será obsoleta antes de que la use, entonces, ¿qué es lo que tiene que aprender? La respuesta es obvia:
La única habilidad competitiva a largo plazo es la habilidad para aprender
“. Seymour Papert

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: tengo un problema con la eeprom ayuda
« Respuesta #4 en: 09 de Diciembre de 2007, 19:50:17 »
¿Con qué compilador de "C" programas?

Un saludo
* Cuando hables, procura que tus palabras sean mejores que el silencio.
* 'Todos somos ignorantes, lo que ocurre es que no todos ignoramos las mismas cosas.' Albert Einstein.
* No hay nada peor que un experto para evitar el progreso en un campo
* "La vida es como una novela. No importa que sea larga, sino que esté bien narrada" Seneca
* La vida no se vive por las veces que respiras, sino por los momentos que dejan sin aliento.
* Dios dijo: ∇·E=ρ/ε0 ; ∇·B=0 ; ∇xE=-dB/dt ; ∇xB= μ0ε0dE/dt..y la luz se hizo..!!..

Desde España Jesús

Desconectado car5

  • PIC10
  • *
  • Mensajes: 1
Re: tengo un problema con la eeprom ayuda
« Respuesta #5 en: 10 de Diciembre de 2007, 16:46:26 »
 como puedo hacer que la eeprom se incremente.........y luego compararla con datos ingresados

Desconectado zerotkd

  • PIC10
  • *
  • Mensajes: 4
Re: tengo un problema con la eeprom ayuda
« Respuesta #6 en: 10 de Diciembre de 2007, 17:12:04 »
el compilador que utilizo es el pic compiler

el codigo fuente que utilizo es el c, lo que he logrado hacer es lo siguiente:
guardo una clave en un registro, mi problema es con la eeprom......
#include <watchdog.h>
#include<lcd4.c>                             //libreria manejo lcd
#include<kbd2.c>
int cont,j;
int k;
void nueva_clave(void);       //funcion que guarda clave
void comprueba_clave(void);   //funcion que comprueba clave

//variables globales

char clave[4],c,limit;
signed char i;
boolean var=0;


///PROGRAMA
void main()
{

   setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_OFF);
   //setup_psp(PSP_DISABLED);
   setup_spi(FALSE);
   setup_counters(RTCC_INTERNAL,WDT_2304MS);
   setup_timer_1(T1_DISABLED);
   setup_timer_2(T2_DISABLED,0,1);
   setup_comparator(NC_NC_NC_NC);
   setup_vref(FALSE);


   set_tris_a(0xfc);
   lcd_init();                                 //inicializa lcd
   lcd_gotoxy(2,1);                            //posiciona el cursor
         lcd_putc("   Bienvenidos \n");        //muestra el mensaje entre comillas
         lcd_gotoxy(2,2);                      //posiciona el cursor
         lcd_putc("   Al Sistema \n");         //muestra el mensaje entre comillas
         delay_ms(500);                        //temporizacion
lcd_gotoxy(2,1);                               //posiciona el cursor
         lcd_putc("1_guardar clave \n");       //muestra el mensaje entre comillas
         lcd_gotoxy(2,2);                      //posiciona el cursor
         lcd_putc("2_ingrese clave\n");        //muestra el mensaje entre comillas
         delay_ms(1000);                       //temporizacion


         while(1)               //si es verdad hace siempre esto
         {
         cont==0;                   //inicia cont en cero
         lcd_gotoxy(2,1);           //posiciona el cursor
         uno:      if(cont==10)      //si cont=10 inicializa el contador en cero
            {
            cont=0;
            }
         lcd_putc("\f");            //limpia pantalla
         lcd_putc("    contador   \n");//muestra el mensaje entre comillas
         lcd_gotoxy(2,2);              //posiciona el cursor
         printf(lcd_putc,"      %d",cont);//imprime valor de cont
         delay_ms(1000);                  //temporizacion de 1segundo
         cont++;                          //incrementa contador
         c=kbd_getc();                    //guarda en c la tecla pulsada
         if(c=='1')                       //si esta tecla es "1" llama
         {                                //a la rutina nueva clave
          nueva_clave();
          goto dos;                       //finaliza y salta a dos
          }
         if(c=='2')                       //si esta tecla es "2" llama
         {                                //a la rutina comprueba clave
          comprueba_clave();
          }

            }
            while(1)
               {
         lcd_gotoxy(2,1);
         //delay_ms(1000);
         cont++;
dos:      if(cont==10)
            {
            cont=0;
            }
         lcd_putc("\f");
         lcd_putc("    contador   \n");
         lcd_gotoxy(2,2);
         printf(lcd_putc,"      %d",cont);
         delay_ms(1000);
         c=kbd_getc();

         if(c=='2')
         {
          comprueba_clave();
          }

            }
               }

void nueva_clave(void){
com:
   lcd_putc("\fGuardar Clave:\n");   //presentacion
   for(i=0;i<4;i++){
      do{               //espera hasta...
         c=kbd_getc();

         }while(c==0);   //...pulsar una tecla

      if(c=='A' || c=='B'){      //si se pulsa ENTER se sale de la funcion
         if(i==0){            //no se sale...
            lcd_putc("\fEscriba Una!!!");
            delay_ms(500);
            lcd_putc("\n             ");
            lcd_gotoxy(1,2);
            i=-1;

            continue;         //...hasta poner una clave valida
            }
            if(i!=5){         //no se sale...
         lcd_putc("\fNo Es Valida!!!");
         delay_ms(1000);
           }
                  goto com;   //vuelve a pedirse ingresar la clave

                  break;               //salir de funcion nueva_clave
         }
      lcd_putc("*");
      limit=i+1;               //longitud de la clave
      clave=c;               //almacena clave(maximo 4 caracteres)
      }
}



void comprueba_clave(void){
   lcd_putc("\fcomprueba clave:\n");
      for(i=0;;i++){
      do{
         c=kbd_getc();
         }while(c==0);
            lcd_putc("*");
            if(c=='A' || c=='B'){
         if(i==0){
            lcd_putc("\nEscribe una!!!");
            delay_ms(1000);
            lcd_putc("\n              ");
            lcd_gotoxy(1,2);
            i=-1;
            continue;
            }if(i!=limit)
            var=1;
         break;}
               if(c!=clave)
                  var=1;
      }   if(var>0){
      lcd_putc("\fClave\nIncorrecta!");
      cont=0;
      delay_ms(1000);
            }
   else{
      lcd_putc("\fClave\nCorrecta!");
      delay_ms(1000);
   var=0;
   while(1);
   }
}
mi problema es como guardarla en la eeprom::::::::::::::::::::::::::::::::::mi intencion no es molestar a nadie solo necesito ayuda con la eeprom.......

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: tengo un problema con la eeprom ayuda
« Respuesta #7 en: 11 de Diciembre de 2007, 15:42:26 »
me parece que estas usando el C de CCS, aunque esa libreria del watchdog nunca la vi, y te estarian faltando los fuses talvez

si es que usas el ccs, el compilador presenta dos funciones para el manejo de la eeprom:

write_eeprom(0x0,0x12);     //writes 0x12 to  data eeprom location 0  (escribe el dato 12 en la posicion 0)
value=read_eeprom(0x0);   //reads data eeprom location 0x0 returns 0x12 (lee la posicion 0 de la eeprom y lo guarda en value)

esas son funciones incorporadas del compilador y las usas en cualqeuir momento, cuando lo necesites

eso lo saque del manual del compilador, disponible en su pagina web (la descarga del manual es libre)

tb existe una directiva en el compilador con la que se graba cualquier dato directamente en la eeprom sin necesidad de cargarlo en el main, la directiva es:

#rom 0x2101={0x05} // significa que en la posicion 01 se guarda el dato 05
tb puedes hacer:
#rom 0x2101={0x05,0x09,0xab} // se guardan en posiciones contiguas a partir de la pos 01
o independientemente:
#rom 0x2101={0x05}
#rom 0x2109={0xf5}  // en la posicion 09 se guarda el dato f5

No creo que nadie se moleste simepre y cuando hagas una pregunta clara, y no la que pusiste inicialmente, que parecia que querias que alguien te haga la tarea, bueno debes ser mas claro, pues hablando se entiende la gente, ya que hay bastante espacio para que puedas expresar bien tus ideas y no como un telegrama :mrgreen:

espero haberte te sirva, y pues comentanos algun detalle mas... de ser necesario
.

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: tengo un problema con la eeprom ayuda
« Respuesta #8 en: 11 de Diciembre de 2007, 15:49:20 »
me parece que el c qeu usas el el hitech, asi que todo lo que te dije es para ccs, y talvez tenga algunas variaciones, nsoe, fijate en el manual que seguremnte distribuye el fabricante del software que usas y talvez se maneje la eeprom del PIC de manera similar
.

Desconectado zerotkd

  • PIC10
  • *
  • Mensajes: 4
Re: tengo un problema con la eeprom ayuda
« Respuesta #9 en: 11 de Diciembre de 2007, 15:51:51 »
Gracias maestro por un momento senti un desequilibrio en la fuerza..............

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: tengo un problema con la eeprom ayuda
« Respuesta #10 en: 11 de Diciembre de 2007, 16:11:36 »
 :D :D
vamos que se puede, y pues nos dices como es la cosa en el hitech, ya que yo solo uso ccs, jajaja, que mal no? :D
.

Desconectado zerotkd

  • PIC10
  • *
  • Mensajes: 4
Re: tengo un problema con la eeprom ayuda
« Respuesta #11 en: 11 de Diciembre de 2007, 16:19:01 »
 :-/

yo tambien uso el ccs lo que aparece de watchdog.h es porque se utiliza el compilador ccs con mplab para grabar la pic ........y el watchdog la pic los fuses etc...estan configurados en ese archivo

Desconectado Cryn

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4169
Re: tengo un problema con la eeprom ayuda
« Respuesta #12 en: 11 de Diciembre de 2007, 20:15:53 »
bueno si, vi muchas cosas similares, pero esto :shock::

setup_counters(RTCC_INTERNAL,WDT_2304MS)

nunca lo habia visto en ccs, separado con comas, jeeje, poruqe que yo sepa todos usan le OR | osea:

setup_counters(RTCC_INTERNAL | WDT_2304MS)

pero bueno espero ya hayas logrado la escritura y lectura en la eeprom del pic
.