Autor Tema: Guardar variable int en Eeprom Interna pic16f877a  (Leído 3664 veces)

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

Desconectado jhoser

  • PIC10
  • *
  • Mensajes: 14
Guardar variable int en Eeprom Interna pic16f877a
« en: 26 de Mayo de 2016, 22:13:13 »
Buenas a todos :),

Gracias al foro estoy avanzando, de apoco pero avanzando con el manejo de los micros. Tengo una idea y es hacer un contador de vueltas para un motor. Inicialmente tengo el LCD, un pic16F877a y 3 botones. El tema que me trae aquí es que he encontrado que al guardar la variable NroVueltas en la eeprom interna del pic (aparentemente la graba porque lo veo en la simulación cuando cargo el .cof) y darle stop a la simulación cuando nuevamente enciendo la misma no se muestra el valor almacenado en la variable "NroVueltas".
Para grabar la variable en la eeprom estoy usando una función de RedPic que usa la #int_eeprom.  Les agradeceria mucho si me pudieran explicar que es lo que no estoy tomando en cuenta para grabar de modo correcto la eeprom interna en la posicion 0. La idea a futuro es guardar mas variables segun vaya necesitando, de antemano muchas gracias por la ayuda, saludos!! (adjunto programa y simulación).

Desconectado jhoser

  • PIC10
  • *
  • Mensajes: 14
Re:Guardar variable int en Eeprom Interna pic16f877a
« Respuesta #1 en: 29 de Mayo de 2016, 23:17:01 »
Buuenas a todos :),
Me puse a averiguar y al parecer es un tema con el simulador Proteus, acabo de añadir una rutina para leer la variable "NroVueltas" y cuando apago la simulación, la enciendo y entro directamente a EEPROM (en mi menú) lee el valor previamente almacenado. Considero que era lo que estaba buscando, cualquier observación o sugerencia será bienvenida de antemano muchas gracias por la ayuda, saludos!! (adjunto código modificado)

Desconectado DominusDRR

  • PIC24H
  • ******
  • Mensajes: 1982
    • Sicoy
Re:Guardar variable int en Eeprom Interna pic16f877a
« Respuesta #2 en: 01 de Junio de 2016, 10:43:59 »
Saludos.

Según recuerdo tu puedes grabar un byte en cada celda de la memoria EEPROM, en tu caso me imagino que tu variable int es de 16 bits, por lo que tendrías que dividirla en 2 bytes para guardarlas.

Yo lo haría algo asi:


Código: C
  1. void writeByteINTEEPROM(int MiVariableInt)
  2. {
  3.    char ValorBajo;
  4.    char ValorAlto;
  5.  
  6.    ValorBajo = (char)(MiVariableInt & 0xFF); //obtengo la parte baja la variable int
  7.    ValorAlto = (char)((MiVariableInt>>8) & 0xFF); //obtengo la parte alta de la variable int
  8.    flag_Writing_INTERNAL_EEPROM=1;
  9.    enable_interrupts(int_eeprom);
  10.    write_eeprom (PunteroEEPROM, ValorBajo);//guardo la parte baja
  11.  
  12.    while(flag_Writing_INTERNAL_EEPROM);
  13.    PunteroEEPROM++;
  14.    write_eeprom (PunteroEEPROM, ValorAlto); //guardo la parte alta
  15.    while(flag_Writing_INTERNAL_EEPROM);
  16.  
  17.    PunteroEEPROM++;
  18.    disable_interrupts(int_eeprom);  
  19. }

En el inicio de tu código debes iniciarlizar la variable global PunteroEEPROM a cero.
Tengo una idea algo difusa sobre MPLAB Harmony, XC32 con PIC32

Desconectado alexin

  • PIC10
  • *
  • Mensajes: 11
Re:Guardar variable int en Eeprom Interna pic16f877a
« Respuesta #3 en: 09 de Junio de 2016, 15:51:36 »
yo me canse de usar proteus para simular porque da muchos errores y diferencias con lo real. Opte por montar prototipos físicos y trabajar sobre ellos porque voy a la fija.


 

anything