TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: jdaniels en 21 de Mayo de 2007, 01:41:42

Título: Duda con la Eeprom Externa
Publicado por: jdaniels en 21 de Mayo de 2007, 01:41:42
Alguien sabe porque al leer la eeprom externa siempre da 0xff? he leido varios temas de aqui y en la pagina ccs pero asi arregle la libreria de la memoria, ponga lo q ponga no me escribe ni lee, tengo q repertir la operacion 3 veces para q escriba o lea, que pasa es problema de proteus o las librerias de las memorias en ccs?

Lo curioso es que si pongo las instrucciones write_ext_eeprom y read_ext_eeprom en el main si lo hacen, si las pongo es otra funcion no, como dije antes tengo q repetir el proceso 3 veces y listo lo hace, medio fastidiosas estas memorias no?
Título: Re: Duda con la Eeprom Externa
Publicado por: Menta en 21 de Mayo de 2007, 03:34:31
Me pasa exactamente lo mismo... si es proteus o no? lo voy a comprobar cuando me lleguen las 24FC1025 que encargué a mcelectronic, pero me dijeron que demoraban como 3 semanas y hoy hace 26 días que las encargué, supongo que no deberían demorar mucho más. Cuando las tenga las pruebo y te cuento si hacen ese efecto.

Yo hice un programa para grabar toda la memoria y si no grababa bien una página la volvía a grabar hasta que quedara bien y el proteus me arrojaba entre un 20% y 50% de exceso de grabación. Es decir que para grabar efectivamente 500 páginas, lo hacía entre 600 y 750 veces aprox. eso si no se clavaba, que 2 por 3 pasaba...
Título: Re: Duda con la Eeprom Externa
Publicado por: omix en 21 de Mayo de 2007, 08:28:22
Cita de: jdaniels
Alguien sabe porque al leer la eeprom externa siempre da 0xff?

Todas las eeprom cuando estan vacias o sin programar estan todas sus celdas a 0xFF.

Cita de: jdaniels
he leido varios temas de aqui y en la pagina ccs pero asi arregle la libreria de la memoria, ponga lo q ponga no me escribe ni lee, tengo q repertir la operacion 3 veces para q escriba o lea, que pasa es problema de proteus o las librerias de las memorias en ccs?

Yo no me fiaria mucho de las simulaciones, lo mejor es probarlo con un circuito real. De todas formas si la libreria no esta bien hecha puede pasarte eso de que no leas ni escribas correctamente. Ten en cuenta que en la escritura has de esperar unos 5ms para que la memoria termine le proceso interno de escritura, si intentas leer o escribir antes de que hayan transcurrido esos 5ms, es muy probable que leas 0xff o no escribas correctamente.

Cita de: jdaniels
Lo curioso es que si pongo las instrucciones write_ext_eeprom y read_ext_eeprom en el main si lo hacen, si las pongo es otra funcion no, como dije antes tengo q repetir el proceso 3 veces y listo lo hace, medio fastidiosas estas memorias no?

Si te pasa eso, lo mas probable es que sea tu libreria la que falle, comprueba que dejas los 5ms de espera cuando realizas una escritura.

Un saludo.
Título: Re: Duda con la Eeprom Externa
Publicado por: maritov en 05 de Junio de 2007, 02:58:07
Por favor ayudenme.......estoy tratando hacer funcionar una memoria 24lc16b con un pic16f877 y simulando con proteus, y NO hay manera de que me escriba lo que yo deseo........espero alguien me pueda ayudar.....(podra ser proteus 6.9 SP4???)...ya no se que mas probar, adjunto el codigo....gracias

este es el *.c

#include "D:\CONTROL ACCESO\CCS\PIC 4 Bit LCD Driver\proyecto.h"
#include <2416.C>

void main() {
int i;

  setup_adc_ports(NO_ANALOGS);
   setup_adc(ADC_CLOCK_DIV_2);
   setup_spi(FALSE);
   setup_psp(PSP_DISABLED);
   setup_counters(RTCC_INTERNAL,RTCC_DIV_2);
   setup_ccp1(CCP_OFF);
   setup_ccp2(CCP_OFF);
   init_ext_eeprom();


for (i=1;i<=10;++i)
      {

      output_low(PIN_C5);
      write_ext_eeprom(i, i);
      delay_ms(100);
      output_high(PIN_C5);

        }
   
}

este es el *.h

#include <16F877.h>
//#use fast_io(C)
#use delay(clock=4000000)
#fuses HS,NOWDT
#use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7)
#define EEPROM_SCL   PIN_C3
#define EEPROM_SDA   PIN_C4

Título: Re: Duda con la Eeprom Externa
Publicado por: micro_cadaver en 06 de Junio de 2007, 11:31:43
hola maritov, que raro que no funcionen las librerias del CCS, le has colocado en el hardware (o en la simulacion) sus respectivas resistencias de colector abierto en las lineas de control del i2c? sino es eso que podras ser?
Título: Re: Duda con la Eeprom Externa
Publicado por: maritov en 06 de Junio de 2007, 14:21:51
Hola micro_cadaver.....te cuento que todavia no he echado mano en el hardware debido a que la simulacion no me responde!!
Y si......las resistencias de PUL-UP están colocadas!!
Adjunto ahora el codigo en CCS y además la simulación en proteus....a lo mejor tu u otro amigo puede ayudarme.
Estoy un poco desilusionado al punto tal que no me dan ganas de montar la eeprom en el protoboard....saludos!!

Archivos:
Archivos (http://ar.geocities.com/marioviola1983/e2eprom/e2prom.zip)
Título: Re: Duda con la Eeprom Externa
Publicado por: micro_cadaver en 06 de Junio de 2007, 14:34:00
pero maritov, precisamente ese es el camino de un picmaniaco, y la diferencia se marca en los momentos donde nada sale y tu entusiasmo muere o persiste.....

pd_voy a chekear a ver si encuentro algo raro en tu codigo
Título: Re: Duda con la Eeprom Externa
Publicado por: micro_cadaver en 06 de Junio de 2007, 16:53:00
ya taaaaaaaaaaaaaaaaaaa jijiji
los archivos estan dentro de una carpeta que dice ayuda.  :-)
cheka lo que le cambie y eso del tiempo creo que es un bug del CCs o del Proteus, porsica prueba habilitando el retardo en la realidad y nos comentas.
http://www.box.net/shared/y30pzlrjkt

Título: Re: Duda con la Eeprom Externa
Publicado por: maritov en 06 de Junio de 2007, 19:55:33
micro_cadaver (y quien se quiera prender en el tema!!) !!!  sigo probando y no hay manera, de hecho en cada prueba de escritura que hago obtengo resultados distintos, o sea, los huecos que quedan no son siempre los mismos. Lo que si observo es que casi siempre en el inicio de la EEPROM los datos se graban mejor......sigo probando con PROTEUS 6.9 SP4 y los resultados están a la vista(ver imagen). Pretendo hacer una escritura secuencial desde la direccion 0x0000 hasta 0x00AF de un valor constante=0xAA y los resultados están a la vista en las imágenes.......sinceramente ya me canse de PROTEUS, asi que voy a hacer las pruebas en el mundo real, montaré todo en el protoboard y luego les comento los resultados......adjunto los archivos....hasta pronto.

PD:estoy usando:PROTEUS 6.9 SP4 + PCWH COMPILER VERS 4.013

Archivos (codigo + simulacion) (http://ar.geocities.com/marioviola1983/e2eprom/foro_todopic2/ayuda.zip)

(http://ar.geocities.com/marioviola1983/e2eprom/foro_todopic2/MAPA.GIF)
Título: Re: Duda con la Eeprom Externa
Publicado por: micro_cadaver en 06 de Junio de 2007, 20:06:41
no has revisado lo que te mande¿????  :shock:
Título: Re: Duda con la Eeprom Externa
Publicado por: maritov en 11 de Junio de 2007, 15:18:24
Amigos!!!! Espero hacer un aporte........dada mi experiencia llego a dos posibles conclusiones:

1-. Proteus 6.9 falla cuando se usa una 24lc16b
2-.O bien yo no se configurar Proteus :?......por eso invito a quien tenga ganas de ver la simulación aqui (http://ar.geocities.com/marioviola1983/e2eprom/foro_todopic2/ayuda.zip) y me comente, y en todo caso me enseñe a configurar correctamente proteus. El error es mas evidente cuando se intenta escribir un intervalo grande (por ej: desde 0x0000 a 0x00ff).   

A estas conclusiones se llegan, dado que he montado todo en protoboard y todo funciona correctamente....y en Proteus NO!! :shock:
Saludos.
Título: Re: Duda con la Eeprom Externa
Publicado por: jfh900 en 11 de Junio de 2007, 16:52:51
Prueba a poner las resistencias especificas de polarización que trae el Proteus "PULLUP" para polarizar las líneas I2C.

Un saludo.
Título: Re: Duda con la Eeprom Externa
Publicado por: maritov en 11 de Junio de 2007, 18:25:44
jfh900!!!........Ya he probado con los pullups..........en un primer momento puse como Device unas resistencias comunes de 4k7 y luego puse como Device unos PullUps y asi y todo el error persiste.. ...Saludos
Título: Re: Duda con la Eeprom Externa
Publicado por: cmero en 23 de Junio de 2007, 19:02:38
Hola a todos, yo he tenido el mismo problema con el proteus, la unica diferencia es que estoy utilizando un 24LC128 y que grabo varios bytes de una sola vez (hasta 64) o lo que es lo mismo grabo una pagina, en total grabo mas de 2000 bytes, la simulacion graba al principio pero despues comienza a dejar espacios de memoria sin grabar y salia varios mensajes como este:

256.122201m [STOPPED    ]: *WARNING* Stop detected part way through receiving data byte. Write operation aborted.


 Yo creia que era algun error de mi programa en CCS pero me di cuenta que cuando simulaba varias veces un mismo programa me salian diferentes resultados sin haber cambiado lo que tenia en CCS. Ademas tambien tenia que dejar exactamente 5ms para escribir en la eeprom nuevamente lo cual es normal, pero si dejaba "más tiempo" la simulacion fallaba mucho mas todavia, y lo peor es cuando quieres sobreescribir en un espacio de memoria.     
Título: Re: Duda con la Eeprom Externa
Publicado por: Menta en 28 de Junio de 2007, 14:47:00
Aunque me pasa lo mismo, en proteus 6.7 SP3 además, cuando configuro la dirección del chip poniendo a Vdd o a Vss las patitas A0 y A1 con algunas combinaciones va y con otras no! de locos :!:
Los chip con dir 0, 1, 3 y 7 funcionan, los 2, 4, 5 y 6 no!  :z)  no encuentro el significado  :?   

Por suerte me llegaron las memorias 24FC1025 SOIJ (no hay stock de las otras en microchip hasta el 2 de julio)
Con ellas voy a hacer pruebas la semana que viene, espero tener tiempo.
Espero poder confirmar la "teoría de maritov" y que todo funcione bien.

Tambien estoy escribiendo páginas de 128 bytes, ya que de lo contrario el proceso de escritura masiva se tornaría extremadamente lento. Usando páginas es un poco menos lento  :mrgreen:
Título: Re: Duda con la Eeprom Externa
Publicado por: jfh900 en 28 de Junio de 2007, 15:47:12
¿Qué es la teoría de maritov?

Un saludo
Título: Re: Duda con la Eeprom Externa
Publicado por: Menta en 28 de Junio de 2007, 23:37:19

... Proteus 6.9 falla cuando se usa una 24lc16b

...A estas conclusiones se llegan, dado que he montado todo en protoboard y todo funciona correctamente....y en Proteus NO!! :shock:
Saludos.


Esta es la teoría del usuario maritov, la cual espero hacer extensiva a las memorias 24FC1025 y por inducción determinar que PROTEUS es muy poco confiable al usar memoria eeprom

libreria para 24FC1025 (http://www.todopic.com.ar/foros/index.php?topic=17014.msg113583#msg113583)
Esta es la librería que uso, para quien le interese, es bastante similar a las que hay dando vueltas, se aceptan sugerencias es 100% modificable, jajaja
Título: Re: Duda con la Eeprom Externa
Publicado por: jfh900 en 28 de Junio de 2007, 23:45:51
Jejejejeje ya me queda claro lo que es la teoría de maritov, la inscribimos en la Wikipedia o esperamos?  :D

Un saludo
Título: Re: Duda con la Eeprom Externa
Publicado por: jdaniels en 29 de Junio de 2007, 00:11:03
Cierto maritov en proteus la memoria eeprom externa no funciona correctamente pero es solo en proteus, en el mundo real funciona al pelo, yo lo monte y me funciono todo bien, yo lei en un post viejo que alguien le paso lo mismo y lo pudo simular perfectamente en una version vieja de proteus la cual no recuerdo si era 6.2 o 6.5 algo asi de verdad no recuerdo ni tampoco busque hacerlo a ver si era cierto
Título: Re: Duda con la Eeprom Externa
Publicado por: maritov en 29 de Junio de 2007, 17:08:28
Bueno!! En cierta forma estoy "contento" por el hallazgo.........tomemos el caso como un aporte para todos los que usamos Proteus.
Estaría bueno que se reporten estos tipos de problemas en este mismo foro para no lidiar. Y por otro lado habria que comunicarle a la gente de Proteus del problema.......aunque a eso lo tendría que hacer alguien que tenga una licencia verdadera.... :roll:.........

Invito a publicar todas aquellas posibles fallas en Proteus. No es en contra de los desarrolladores del simulador, sino a favor de nuestros propios desarrollos.

Saludos
Título: Re: Duda con la Eeprom Externa
Publicado por: micro_cadaver en 29 de Junio de 2007, 23:07:36
algunas veces falla lo del i2c, pero he sabidio meterle mano hasta que arranca al menos en ASM y en C18 no he tenido muchos problemas y usando esas resistencias PULLUP especiales del proteus. otro problema que tuve al simular fue la interrupcion del portb en donde el simulador no limpiaba el bit de bandera de dicha interrupcion, alguien ha chocado con esto antes? yo lo solucione poniendole una linea de código mas antes de limpiar el bit y solucionado, jijij :mrgreen:
Título: Re: Duda con la Eeprom Externa
Publicado por: jfh900 en 30 de Junio de 2007, 08:04:59
Si, ya hace tiempo postee el problema y la solución:

http://www.todopic.com.ar/foros/index.php?topic=4889.0

Saludos
Título: Re: Duda con la Eeprom Externa
Publicado por: cesmarvas en 24 de Julio de 2007, 13:54:16
hola amigos tengo el mismo problema al escribier una memoria i2c y luego leer no sale el dato que yo quiero, es muy fastidioso

quiero preguntar que version de proteus es el que si funciona derrepente la version ultima 7.1 si lo hace.

alguien ya ha hecho pruebas conl la ultima version?
Título: Re: Duda con la Eeprom Externa
Publicado por: Menta en 14 de Agosto de 2007, 17:06:41
Listo.... demoré mucho, pero ya lo he hecho. He implementado un par de memorias 24FC1025 y funcionan bien. tengo un problema con el direccionamiento que no he solucionado pero lo he "esquivado"....
Teoría de Maritov CORROBORADA!!!
Quiero aclarar que proteus me simulaba con errores y que cuando le puse resistencias tipo pull-up directamente no me simulaba nada se clavaba en la sentencia #use i2c... del programa en C
Así que cambiar las resistencias no fue una solución en mi caso para proteus 6.7 sp3.
Gracias a Dios en la realidad funcionan.
Título: Re: Duda con la Eeprom Externa
Publicado por: hysterisis en 04 de Julio de 2009, 19:06:11
 :-/ :-/ :-/  Hola señores. Pues resulta que he probado todos los códigos que se han propuesto, pero al simularlos en el proteus, además de que bota n mil errores no trabaja igual que en la proto, pues en el proteus aparentemente lee y escribe datos pero erroneos, en cambio en el proto ni siquiera salta de la rutina de escribir y se queda ahí paralizado !!!!!!  :shock: :shock: :shock:.
Estoy intentando escribir un simple dato y luego leerlo y compararlo para ver si fué el mismo que escribí, pero nada de esto resulta, ya que lee datos con valores aleatorios... ¿?¿?¿?¿?    Quisiera saber en dónde está mi error.... Adjunto las lineas en picc. Gracias por la ayuda!   :)

***************************************** PRUEBILLA PARA LA 24LC16B CON PIC18F4550 **********************************************

#include <18f4550.h>
#fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT   //comandos para el programador
#use delay(clock=4000000)
#include <lcd.c>
#define EEPROM_SDA  PIN_C4
#define EEPROM_SCL  PIN_C5
#include <2416.c>               //libreria de eeprom externa 24LC16

int i=0;


void main(){
   BYTE dato1,dato2;
   EEPROM_ADDRESS direccion;
   init_ext_eeprom();
   lcd_init();
   while(true){
      output_high(pin_c0);
      output_low(pin_c1);
      dato1=64;
      direccion=i;
      i=i++;
      if(i==100){
         i=0;
      }
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      lcd_putc("Test");
      lcd_putc("\n");
      lcd_putc("EEPROM");
      delay_ms(250);
      write_ext_eeprom(direccion,dato1);
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      lcd_putc("EEPROM");
      lcd_putc("\n");
      lcd_putc("ESCRITA");
      dato2=read_ext_eeprom(direccion);
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      lcd_putc("EEPROM");
      lcd_putc("\n");
      lcd_putc("LEIDA");

      if(dato2==dato1){
         output_high(pin_c0);
         output_high(pin_c1);
         lcd_putc("\f");
         lcd_gotoxy(1,1);
         lcd_putc("EEPROM");
         lcd_putc("\n");
         lcd_putc("WORKS!");
      }
      else{
         output_low(pin_c0);
         output_high(pin_c1);
         lcd_putc("\f");
         lcd_gotoxy(1,1);
         printf(lcd_putc,"DAMN %u",dato1);
         lcd_putc("\n");
         printf(lcd_putc,"IT!  %u",dato2);
      }
      delay_ms(250);
      output_low(pin_c0);
      output_low(pin_c1);
      delay_ms(250);
   }

}
********************************************************************************************************************
Título: Re: Duda con la Eeprom Externa
Publicado por: Suky en 04 de Julio de 2009, 19:20:40
Has colocado las resistencias pull-up?
Título: Re: Duda con la Eeprom Externa
Publicado por: hysterisis en 04 de Julio de 2009, 19:30:32
Has colocado las resistencias pull-up?
Hola Suky, gracias por responder... Si, ya he colocado las resistencias pull-up con valores desde los 330 ohm hasta las de 10k, actualmente le tengo unas de 4.7k pero cuando hago la prueba en el proto, el programa no avanza de la instrucción de escribir y queda paralizado... A diferencia de la simulación en proteus que arroja una serie de errores  --Stop detected part way through receiving data byte. Write operation aborted. -- pero no se queda paralizado como en la vida real...   Aún no encuentro el error y necesito salir de esta cuanto antes para un proyecto final en la U.... Gracias por tu interés.
Título: Re: Duda con la Eeprom Externa
Publicado por: Suky en 04 de Julio de 2009, 20:12:23
Acabo de simular el siguiente ejemplo, idéntico al tuyo,  en proteus y me funciona correctamente. No obtengo caracteres raros como los que mencionas  :? En el proto compruebas las conexiones, que estén fijas y no muy alejadas del PIC. Prueba cambiando de pines, etc.


Código: C
  1. #include <18f4550.h>
  2. #fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT   //comandos para el programador
  3. #use delay(clock=4000000)
  4. #include <lcd.c>
  5. #define EEPROM_SDA  PIN_C4
  6. #define EEPROM_SCL  PIN_C5
  7. #include <2416.c>               //libreria de eeprom externa 24LC16
  8.  
  9. int i=0;
  10.  
  11.  
  12. void main(){
  13.    BYTE dato1,dato2;
  14.    EEPROM_ADDRESS direccion;
  15.    init_ext_eeprom();
  16.    lcd_init();
  17.    for(direccion=0;direccion<100;direccion++){
  18.       dato1=64;
  19.       lcd_putc("\f");
  20.       lcd_gotoxy(1,1);
  21.       lcd_putc("Test");
  22.       lcd_putc("\n");
  23.       lcd_putc("EEPROM");
  24.       delay_ms(500);
  25.       write_ext_eeprom(direccion,dato1);
  26.       lcd_putc("\f");
  27.       lcd_putc("EEPROM");
  28.       lcd_putc("\n");
  29.       lcd_putc("ESCRITA");
  30.       delay_ms(500);
  31.       dato2=read_ext_eeprom(direccion);
  32.       lcd_putc("\f");
  33.       lcd_putc("EEPROM");
  34.       lcd_putc("\n");
  35.       lcd_putc("LEIDA");
  36.       printf(lcd_putc,":%u",dato2);
  37.       delay_ms(500);
  38.   }
  39. }
Título: Re: Duda con la Eeprom Externa
Publicado por: michaelandres en 06 de Julio de 2009, 16:50:13

Hola Suki, Diego... No me aguante las ganas de escribir sobre el tema, :D :D :D...
Primero, gracias por las ideas que nos dieron para la comunicacion con la memoria eeprom externa, desde hoy aseguro que funciona y muy bien!!!,  :-/ :-/ :-/, proteus no es 100% seguro pero el codigo que esta a continuacion funciona en la vida real y en proteus con muy pocos errores, si en algun momento al simularlo obtienen datos que no corresponden no se preocupen que es normal, funciona perfecto al montarlo, gracias de nuevo al foro por la ayuda y a Suki por responder, siguiente paso comunicacion usb!  :shock:...  :mrgreen: :mrgreen: :mrgreen:

Código: [Seleccionar]
#include <18f4550.h>
#fuses xt,nowdt,nobrownout,nolvp,put
#use delay(clock=4000000)
#define EEPROM_SDA pin_a4
#define EEPROM_SCL pin_a5
#include <2416.c>
#include <lcd.c>

int data=0,dir=0,value=0;
int F[23];

void main(void){
   output_a(0x00);
   output_c(0x00);
   init_ext_eeprom();
   lcd_init();
   for(dir=0;dir<23;dir++){
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      lcd_putc("Writing...");
      lcd_putc("\n");
      lcd_putc("EEPROM");
      output_high(pin_c0);
      output_high(pin_c1);
      delay_ms(100);
      value=value+dir;
      write_ext_eeprom(dir,value);
      F[dir]=value;
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      lcd_putc("EEPROM");
      lcd_putc("\n");
      lcd_putc("Writed");
      output_low(pin_c0);
      output_low(pin_c1);
      delay_ms(100);
   }
   for(dir=0;dir<23;dir++){
      data=read_ext_eeprom(dir);
      lcd_putc("\f");
      lcd_gotoxy(1,1);
      lcd_putc("Reading...");
      lcd_putc("\n");
      if(data==F[dir]){
         printf(lcd_putc,":) %u = %u",data,F[dir]);
         output_high(pin_c0);
         output_low(pin_c1);
      }
      else{
         printf(lcd_putc,":( %u = %u",data,F[dir]);
         output_low(pin_c0);
         output_high(pin_c1);
      }
      delay_ms(500);
   }
   lcd_putc("\f");
   lcd_gotoxy(1,1);
   lcd_putc("EEPROM");
   lcd_putc("\n");
   lcd_putc("Read");
   output_low(pin_c0);
   output_low(pin_c1);
   delay_ms(100);
}
Título: Re: Duda con la Eeprom Externa
Publicado por: hysterisis en 06 de Julio de 2009, 17:04:58
Hola de nuevo. Muchas gracias por colaborar... Y definitivamente las simulaciones en proteus en cuanto a la memoria EEPROM externa se refieren no funcionan como se quiere, pero en el proto todo parece estar bien.   :? que raro  :? Ya simulé el código que me pasaste y lo implementé en la vida real, y como digo, en la proto todo parece estar bien, pero en proteus no. En últimas lo que necesito es que trabaje bien y en la vida real!!!
Nuevamente muchas gracias por tu colaboración... Saludos desde Colombia ...
Acabo de simular el siguiente ejemplo, idéntico al tuyo,  en proteus y me funciona correctamente. No obtengo caracteres raros como los que mencionas  :? En el proto compruebas las conexiones, que estén fijas y no muy alejadas del PIC. Prueba cambiando de pines, etc.


Código: C
  1. #include <18f4550.h>
  2. #fuses XT,NOPUT,NOPROTECT,NOBROWNOUT,NOLVP,NOWDT   //comandos para el programador
  3. #use delay(clock=4000000)
  4. #include <lcd.c>
  5. #define EEPROM_SDA  PIN_C4
  6. #define EEPROM_SCL  PIN_C5
  7. #include <2416.c>               //libreria de eeprom externa 24LC16
  8.  
  9. int i=0;
  10.  
  11.  
  12. void main(){
  13.    BYTE dato1,dato2;
  14.    EEPROM_ADDRESS direccion;
  15.    init_ext_eeprom();
  16.    lcd_init();
  17.    for(direccion=0;direccion<100;direccion++){
  18.       dato1=64;
  19.       lcd_putc("\f");
  20.       lcd_gotoxy(1,1);
  21.       lcd_putc("Test");
  22.       lcd_putc("\n");
  23.       lcd_putc("EEPROM");
  24.       delay_ms(500);
  25.       write_ext_eeprom(direccion,dato1);
  26.       lcd_putc("\f");
  27.       lcd_putc("EEPROM");
  28.       lcd_putc("\n");
  29.       lcd_putc("ESCRITA");
  30.       delay_ms(500);
  31.       dato2=read_ext_eeprom(direccion);
  32.       lcd_putc("\f");
  33.       lcd_putc("EEPROM");
  34.       lcd_putc("\n");
  35.       lcd_putc("LEIDA");
  36.       printf(lcd_putc,":%u",dato2);
  37.       delay_ms(500);
  38.   }
  39. }
Título: Re: Duda con la Eeprom Externa
Publicado por: Suky en 06 de Julio de 2009, 21:41:09
Ya simulé el código que me pasaste y lo implementé en la vida real, y como digo, en la proto todo parece estar bien, pero en proteus no.
No entendí  :mrgreen: Funciona o no? Si es no, revisa las conexiones, porque en el código no veo errores.
Título: Re: Duda con la Eeprom Externa
Publicado por: MLO__ en 07 de Julio de 2009, 01:16:43
A mi me funciona a 100%.

Prueba cambiar las resistencias. Si estas usando el modelo MINRES cambialas por las PULLUP. Estas ultimas son para ese proposito, las MINRES son para asignar valores y otras cosas.

Saludos
Título: Re: Duda con la Eeprom Externa
Publicado por: hysterisis en 08 de Julio de 2009, 10:54:57
Sí me funcionó, en la protoboard... En proteus es re loko... varía su comportamiento hasta con cambiar de ruta la carpeta del proyecto.... es re loko!! :? pero bueno... igual en la vida real SI funciona y eso es lo importante....  Muchas gracias a todos...
Título: Re: Duda con la Eeprom Externa
Publicado por: michaelandres en 08 de Julio de 2009, 14:32:24
Ahora si funciona en proteus como en la vida real sin ningun error o warning,...  :-/ :-/ :-/

Prueba cambiar las resistencias. Si estas usando el modelo MINRES cambialas por las PULLUP. Estas ultimas son para ese proposito, las MINRES son para asignar valores y otras cosas.

Eso que dices es muy cierto y no habia caido en el error en la simulacion, utilizaba las resistencias inapropiadas y de alli se derivaban los errores y las lecturas incorrectas,...  :mrgreen: :mrgreen: :mrgreen:
Quizas con esto se pueda replantear la Teoria de Maritov,  :D

Subo al foro el ejemplo dado anteriormente con la simulacion en proteus, para corroborar que funciona al 101%, muchas gracias por toda la ayuda y espero que esto ayude tambien a otros usuarios que tengan este tipo de problemas...

Saludos
Título: Re: Duda con la Eeprom Externa
Publicado por: MLO__ en 08 de Julio de 2009, 15:00:08
Ok.

Que bueno que se solucionara.