Autor Tema: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG  (Leído 2551 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Deckblank

  • PIC10
  • *
  • Mensajes: 10
Saludos a  TOdos , bueno llendo al grano quiero implementar una EEPROM externa a un proyecto con 18f asi q estoy aprenciendo acerca de la EEPROM 24LC256
para descartar errores en una les digo q la Version del Compilador es 4.104
asi que este es mi pequeño codigo

Código: [Seleccionar]
#include <18F4550.h>
#fuses HSPLL,MCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN

#use delay( CRYSTAL=4000000,CLOCK=5000000)
#include "EEPROM24256.c"
#byte   porta = 0xf80
#byte   portb = 0xf81
#byte   portc = 0xf82
#byte   portd = 0xf83
#byte   porte = 0xf84
#byte   adcon = 0xFC1

void main ()
{
int dato;
adcon=0x0F; 
set_tris_d(0x00);
portd=255;
DISable_interrupts(GLOBAL);
init_ext_eeprom();
delay_ms(100);
write_ext_eeprom(10,15);
delay_ms(100);
dato = read_ext_eeprom(0);
portd=dato;
while(1)
{
}
}

ALgunos detalles del porque de mi codigo

bueno mi codigo tiene una particularidad #use delay( CRYSTAL=2000000,CLOCK=5000000) esto porque como quiero acoplar una EEPROM a un proyecto que ya tengo (que usa USB y esta es la unica manera que consegui que funcionara , ademas de que en proteus parece correr a 1.8x osea un segundo en proteus dura menos esta como acelerado)

la Libreria que uso para el 24LC256  es la misma que da CCS pero le cambie de nombre para conservar la original
SI  he puesto resistencias PULLUP en ISIS
SI e puesto los puertos SDA Y SCL  en RB0 Y RB1 (por harware),
SI puse #use i2c(...  FORCE_HW ) en la libreria EEPROM24256 (la unica variante que hize) para forzar por hardware

Un pequeño Rastreo del error

Un artilugio que utilizo para saber en que funcion mis codigos se quedan plantados cuando la cosa ya no me da mas es
usar un puerto para descarte

delay_ms(1000);
      portd=0;

y como inicialmente el portd = 255 , entonces si se pasa una funcion X la siguiente instruccion apaga el puerto y lo puedo ver en el compilador

y asi di con que en la parte de la libreria

Código: [Seleccionar]
void write_ext_eeprom(long int address, BYTE data)
{
   short int status;
   i2c_start();
   i2c_write(0xa0);
   delay_ms(1000);
      portd=0;
   i2c_write(address>>8);
   i2c_write(address);
   i2c_write(data);

y es en   i2c_write(0xa0); donde el programa se queda pegado , osea no apaga al puerto d como deberia


Bueno espero que le den solucion a mi problema , sigo buscando entre tanto .....  :-/ ... y gracias  ((:-)) siempre e avanzado con este foro

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #1 en: 20 de Marzo de 2013, 17:43:19 »
tengo el mismo problema,igualito,jeje cuando llega a esa instruccion se cuelga y no hace mas,yo estoy utilizando una eeprom 24C02 y un PIC12F683 con CCS 4.140
Nunca se deja de aprender

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #2 en: 20 de Marzo de 2013, 20:29:54 »
los fuses los tienes mal....
segun veo, usas un cristal de 4mhz.... osea que deberia de ser XTPLL....
despues tienes el PLL5.... cosa que deberias de tenerlo en NOPLL
y si a eso le sumamos que tienes mal definido el #use delay.... ya tienes un posible error de programacion...
asi lo tienes....

#fuses HSPLL,MCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,PLL5,CPUDIV1,VREGEN,NOPBADEN
#use delay( CRYSTAL=4000000,CLOCK=5000000)

prueba asi....

#fuses XTPLL,MCLR,NOWDT,PROTECT,NOLVP,NODEBUG,USBDIV,NOPLL,CPUDIV1,VREGEN,NOPBADEN
#use delay( CRYSTAL=48mhz)

haz la prueba y cuentas los resultados....
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #3 en: 20 de Marzo de 2013, 20:54:39 »
hola ppyote

jeje creo que decir que lo tengo "igualito" estuvo mal jajaja,no esa parte no la tengo asi,mas bien debi decir que me da el mismo problema,pero extrañamente es hasta ahora que lo tengo,nunca me habia fallado la escritura de las eeprom de la serie 24C02, mira lo que yo tengo:


Código: [Seleccionar]
#include<12f683.h>
#fuses INTRC,MCLR,NOWDT,PUT,NOPROTECT,NOCPD,NOBROWNOUT,NOFCMEN,NOIESO
#use delay(clock=8000000)

#use I2C(MASTER,SDA=PIN_A5,SCL=PIN_A4,FORCE_SW)

no se igual tengo por ahi un detalle,revisare bien mis conexiones y probare llegando a casa
Nunca se deja de aprender

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #4 en: 20 de Marzo de 2013, 22:26:50 »
hola ppyote

jeje creo que decir que lo tengo "igualito" estuvo mal jajaja,no esa parte no la tengo asi,mas bien debi decir que me da el mismo problema,pero extrañamente es hasta ahora que lo tengo,nunca me habia fallado la escritura de las eeprom de la serie 24C02, mira lo que yo tengo:


Código: [Seleccionar]
#include<12f683.h>
#fuses INTRC,MCLR,NOWDT,PUT,NOPROTECT,NOCPD,NOBROWNOUT,NOFCMEN,NOIESO
#use delay(clock=8000000)

#use I2C(MASTER,SDA=PIN_A5,SCL=PIN_A4,FORCE_SW)

no se igual tengo por ahi un detalle,revisare bien mis conexiones y probare llegando a casa

revisa la libreria del 24c02 ya que estan definidos los pines y el tipo de comunicacion i2c en la misma libreria y a lo mejor esta ahi tu problema...aunque lo dudo ya que el 12F no tiene pin_C3 y C4...

#ifndef EEPROM_SDA

#define EEPROM_SDA  PIN_C4
#define EEPROM_SCL  PIN_C3

#endif


#use i2c(master, sda=EEPROM_SDA, scl=EEPROM_SCL)
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #5 en: 20 de Marzo de 2013, 23:27:10 »
asi es ppyote,pues mira,cuando regrese a casa lo volvi a checar con el que yo sabia que funcionaba,y comparando con el codigo que hice en mi trabajo,solo cambia en el bit del oscilador interno,en el codigo que publique hace unas horas puse: INTRC y no funciona

en el de mi casa en mi amada computadora jaja,tengo INTRC_IO y con la version 4.138 del CCS,creo que es evidente que ha sido error mio pero no lo veia,lo comprobe,gracias por ayudar
Nunca se deja de aprender

Desconectado ppyote

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 929
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #6 en: 21 de Marzo de 2013, 10:52:05 »
asi es ppyote,pues mira,cuando regrese a casa lo volvi a checar con el que yo sabia que funcionaba,y comparando con el codigo que hice en mi trabajo,solo cambia en el bit del oscilador interno,en el codigo que publique hace unas horas puse: INTRC y no funciona

en el de mi casa en mi amada computadora jaja,tengo INTRC_IO y con la version 4.138 del CCS,creo que es evidente que ha sido error mio pero no lo veia,lo comprobe,gracias por ayudar

si solucionaste el fallo, me alegro Jajaja
PPyote... siempre estareis en mi corazon.... Te quiero Hermano...

Desconectado thegame

  • PIC18
  • ****
  • Mensajes: 439
    • Mcu Tronics
Re: ERROR EEPROM EXTERNA , segui el error y i2c_write(0xa0) genera el BUG
« Respuesta #7 en: 21 de Marzo de 2013, 13:42:35 »
si jaja es de risa porque creo que en ocaciones a todos nos ha pasado que ya no vemos que mas moverle y resulta que es una tontera jajaja pero si ya quedo gracias
Nunca se deja de aprender


 

anything