Autor Tema: 16F876 y eeprom externa  (Leído 3007 veces)

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

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
16F876 y eeprom externa
« en: 20 de Marzo de 2004, 05:05:00 »
Estoy intentando comunicar el pic con una memoria 24LC16B.
A excepción de Vdd,y las correspondientes señales SDA y SCL(conectadas,respectivamente,a los pines RC4 y RC3 del pic),el
resto de pines de la eeprom los tengo puestos todos a masa.
El problema es que quiero escribir un byte en la eeprom para posteriormente leerlo y sacarlo por display,pero en vez de sacarme el valor que le mando,me saca un 255,por lo que parece que ni escribe,ni lee(bueno,leer si,pero a saber de donde jejeje),ni na de na.Ahí va el código:

#include <16F876.h>
#use delay(clock=10000000)
#fuses XT,NOWDT,NOPROTECT,NOLVP,NOBROWNOUT
#include <2416.c>   //  Hice la modificación SDA=PIN_C4 , SCL = PIN_C3
#include <lcd.c>

void main()
   {
   byte dato1,dato2;
   EEPROM_ADDRESS direccion;
   init_ext_eeprom();
   lcd_init();
   dato1 = 25;
   direccion = 35;
   write_ext_eeprom(direccion,dato1);
   delay_ms(20);
   dato2 = read_ext_eeprom(direccion);
   printf(lcd_putc," %u",dato2);
   for(;;) {}
   }

El programa está bien ¿no?
¿ Debo cambiar alguna de las conexiones ?

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: 16F876 y eeprom externa
« Respuesta #1 en: 21 de Marzo de 2004, 00:30:00 »
Hola Biot.

El programa está bien. El problema lo debes tener en el conexionado.

Otra cosilla: #include <2416.c> // Hice la modificación SDA=PIN_C4 , SCL = PIN_C3      ¿Porqué dices que modificaste esto si está igual que en el fichero original de CCS? A ver si el fallo viene por ahí.

Otra cosilla: ¿Tienes conectadas las resistencias pull-up (10K) a las líneas SCL y SDA?

Repasa las conexiones.

Un saludo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: 16F876 y eeprom externa
« Respuesta #2 en: 21 de Marzo de 2004, 09:36:00 »
Gracias por tu respuesta pocher.
Si,las pull up estan puestas a Vdd en ambas líneas.
El fichero 2416.c de CCS me traía por defecto RB0 y RB1 como pines de transmisión,no las que yo estoy usando,como tú me comentas,así que no se que leches  puede pasar.

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: 16F876 y eeprom externa
« Respuesta #3 en: 21 de Marzo de 2004, 11:48:00 »
Vaya si es raro lo de RB0 y RB1. En el fichero que yo tengo de CCS SDA=C4 y SCL=C3

Aunque seguramente lo tendrás bien, en la LCD tienes:

RB0=E
RB1=RS
RB2=R/W

RB4=D4
.
.
Rb7=D7

Por último comentarte que yo he comprobado tu programa con una 24LC65 (no tengo 16) y funciona bien. A ver si dás con el fallo.

Un saludo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: 16F876 y eeprom externa
« Respuesta #4 en: 21 de Marzo de 2004, 20:12:00 »
Pues no se.
El lcd está bien ya lo he comprobado.Me parece curioso que en vez de sacarme el número que yo le mando,saque el valor 255.
¿Es correcto que los pines A0,A1,A2 y Wp de la memoria estén puestos a masa? ¿Para qué sirven estos pines?

Desconectado pocher

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 2569
RE: 16F876 y eeprom externa
« Respuesta #5 en: 21 de Marzo de 2004, 23:32:00 »
Los pines A0,A1 y A2 son para seleccionar un chip de memoria entre 8. Yo los tengo a masa.

El pin WP es de para protección de escritura, yo lo tengo al aire.

Utilizo un cristal de 4MHz.

Si te saca 255 es porque no te escribe nada y te saca el valor que tienen todas sus posiciones sin usar (FF).

Como última prueba, tan solo te resta cambiar el chip por si estuviera roto.

Un saludo

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: 16F876 y eeprom externa
« Respuesta #6 en: 22 de Marzo de 2004, 06:14:00 »
Eso haré.
GRACIASSSSSSSSSSSSSSSSS


Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
RE: 16F876 y eeprom externa
« Respuesta #7 en: 22 de Marzo de 2004, 07:41:00 »
YA TAAAAAAAAAAAAAAAAAAAAAAAAAAAAA!!!!

No se si sería el cristal.Le cambie el de 10M por uno de 4 y le puse Wp al aire como me has dicho.Parece ser que este pin es activo a nivel bajo ¿no?

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
RE: 16F876 y eeprom externa
« Respuesta #8 en: 06 de Marzo de 2006, 16:43:00 »
¿Realmente funciona ese programa?, lo he probado en proteus y no va.

Estoy buscando un programa para guardar datos en una eeprom externa, si alguien tiene un ejemplito que funcione, agradeceria que lo pusiese.

Saludos y gracias.
Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡

Desconectado vszener

  • Moderador Local
  • PIC24H
  • *****
  • Mensajes: 2395
RE: 16F876 y eeprom externa
« Respuesta #9 en: 08 de Marzo de 2006, 06:45:00 »
Buenas!!!un ejemplito en c de escritura/lectura de una eeprom externa esta en el post de ejemplitos en c para 16f648a, aqui el link:
http://miarroba.com/foros/ver.php?foroid=46840&temaid=4061462
Es el numero 52, aparte creo que en el post de ejemplitos del amigo RedPic tambien encontraras el que necesitas...


Suerte!!!Giño
· Nos vemos en los bares!!!!!
· Mi Blog: Aqueronte

Desconectado micro_pepe

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 3216
RE: 16F876 y eeprom externa
« Respuesta #10 en: 09 de Marzo de 2006, 13:23:00 »
Hola, el ejemplito funciona perfecto, el problema estaba en el proteus, que las resistencias pull-up, las tenia puestas al positivo de la pila, y lo que hay que poner es un simbolo de voltaje (una flechita).

Se obtiene más en dos meses interesandose por los demás, que en dos años tratando de que los demás se interesen por ti.

新年快乐     的好奇心的猫死亡