Autor Tema: Duda con la Eeprom Externa  (Leído 9464 veces)

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

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Duda con la Eeprom Externa
« Respuesta #15 en: 28 de Junio de 2007, 15:47:12 »
¿Qué es la teoría de maritov?

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 Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Duda con la Eeprom Externa
« Respuesta #16 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
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
« Última modificación: 28 de Junio de 2007, 23:45:46 por Menta »
     

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Duda con la Eeprom Externa
« Respuesta #17 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
* 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 jdaniels

  • PIC10
  • *
  • Mensajes: 49
Re: Duda con la Eeprom Externa
« Respuesta #18 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

Desconectado maritov

  • Colaborador
  • PIC16
  • *****
  • Mensajes: 121
Re: Duda con la Eeprom Externa
« Respuesta #19 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

Desconectado micro_cadaver

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2102
    • blog microembebidos
Re: Duda con la Eeprom Externa
« Respuesta #20 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:
a cosechar!!!... :P
pic32... ahi voy....
aguante el micro 16f84  !!!!

visita mi pagina: http://www.microembebidos.wordpress.com

Desconectado jfh900

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3595
Re: Duda con la Eeprom Externa
« Respuesta #21 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
* 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 cesmarvas

  • PIC10
  • *
  • Mensajes: 13
Re: Duda con la Eeprom Externa
« Respuesta #22 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?

Desconectado Menta

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 607
Re: Duda con la Eeprom Externa
« Respuesta #23 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.
     

Desconectado hysterisis

  • PIC10
  • *
  • Mensajes: 4
Re: Duda con la Eeprom Externa
« Respuesta #24 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);
   }

}
********************************************************************************************************************

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda con la Eeprom Externa
« Respuesta #25 en: 04 de Julio de 2009, 19:20:40 »
Has colocado las resistencias pull-up?
No contesto mensajes privados, las consultas en el foro

Desconectado hysterisis

  • PIC10
  • *
  • Mensajes: 4
Re: Duda con la Eeprom Externa
« Respuesta #26 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.

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: Duda con la Eeprom Externa
« Respuesta #27 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. }
No contesto mensajes privados, las consultas en el foro

Desconectado michaelandres

  • PIC10
  • *
  • Mensajes: 3
Re: Duda con la Eeprom Externa
« Respuesta #28 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);
}

Desconectado hysterisis

  • PIC10
  • *
  • Mensajes: 4
Re: Duda con la Eeprom Externa
« Respuesta #29 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. }


 

anything