Autor Tema: Eeprom en oled 18f2550  (Leído 2106 veces)

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

Desconectado LuisAlexander

  • PIC10
  • *
  • Mensajes: 10
Eeprom en oled 18f2550
« en: 24 de Abril de 2020, 19:31:08 »
Hola Amigo , llevo tratando varios dias en escribir un numero en la eeprom para luego leerlo y imprimirlo en una pantalla oled
Tengo solucionado la parte del oled, y la parte de escribir , pero al momento de leer para imprimir en la pantalla oled, me lee 255
adjunto mi codigo
Código: [Seleccionar]

#include <18F2550.h>
#device ADC=16
#include "usb_bootloader.h"
#FUSES NOWDT                   
#FUSES NOBROWNOUT             
#FUSES NOLVP                   
#use delay(internal=32000000)
#use i2c(Master,Fast=400000,sda=PIN_B0,scl=PIN_B1,force_sw) // maybe force_hw
#include <string.h>
#define OLED 0x78
#INCLUDE <stdlib.h>
#include <internal_eeprom.c>
///////////////////////////////////////////////////////////////////////////////
////PARA LEER EEPROM

///////////////////////////////////////////////////////////////////////////////

long int value=0;
 int i;


 VOID main()
   {
    OLED_clear();
    cont2=0000;
      CHAR txt[100];
      OLED_init(OLED);//INICIALIZAMOS LA PANTALLA OLEDS
         
 ////////////////////////////////////////////////////////
 ////////////////////////////////////////////////////////
 ///////REALIZAMOS ESTE PROGRAMA INFINITAS VECES
 WHILE (1)
      {
     WRITE_EEPROM(0,15); // aca escribo el numero 15
     value= read_eeprom(0); // aca leo el numero guardado
     sprintf(txt, "Dato: %Lu",value); ///// ID PARA MOSTRAR EN LA PANTALLA
     OLED_text(0,40,txt,2);
     OLED_write(OLED);
     delay_ms(2000);
       
      }
cuando trato de leer pongo este codigo, elimino el Write

Código: [Seleccionar]
WHILE (1)
      {
    // WRITE_EEPROM(0,15); // aca escribo el numero 15
     value= read_eeprom(0); // aca leo el numero guardado
     sprintf(txt, "Dato: %Lu",value); ///// ID PARA MOSTRAR EN LA PANTALLA
     OLED_text(0,40,txt,2);
     OLED_write(OLED);
     delay_ms(2000);
       
      }

El código esta sin la parte del código oled , por que se me hacia muy largo por eso lo omiti
Espero puedan echarme una mano  Saludos

Desconectado remi04

  • PIC24F
  • *****
  • Mensajes: 657
Re:Eeprom en oled 18f2550
« Respuesta #1 en: 25 de Abril de 2020, 06:52:11 »
Value es de 16 bits cuando te vale con 8. No obstante no debería ser el problema.

Por si acaso prueba con un cast:

Código: C
  1. value= (int8) read_eeprom(0);

  Si no te funciona prueba al asignarle a value un valor manualmente
Código: C
  1. value= 15;


  A ver si así te sale. Es para mirar si el problema es de lectura de la eeprom, o de paso del string a txt aunque lo dudo.

   Otra cosa es mirar en el archivo hex que te genera el compilador y asegurarte de que el numero 15 se ha grabado en la posicion 0 de la eeprom. Lo puedes ver en el propio ide del pickit2 o 3 o el que uses o editando el hex directamente y mirandolo, está en las lineas de abajo del todo.

  Con eso puedes ver si el problema es de escritura o si es de lectura.

  Lo primero prueba con lo mas tonto,  cambia la variable value a 8 bits y prueba o hazle el cast.

 Saludos.


Desconectado LuisAlexander

  • PIC10
  • *
  • Mensajes: 10
Re:Eeprom en oled 18f2550
« Respuesta #2 en: 28 de Abril de 2020, 21:25:03 »
Hola ya solucione el problema  Gracias