Autor Tema: Problema con eeprom I2C en picbasic plus  (Leído 1547 veces)

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

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
Problema con eeprom I2C en picbasic plus
« en: 18 de Octubre de 2004, 15:01:00 »
Hola

Tengo un problema con una eeprom I2C conectada a un 16F88. Va como una especie de consola, asi que elijo escribir o leer, luego meto el adress, y o bien escribo un dato, o bien recibo un dato.

El caso es, que al parecer escribe el dato bien, pues recibo el mensaje de haberlo escrito. Luego, al intentar leer, no recibo ningun acuse (mensaje mediante puerto serie) , ahi radica mi problema. O sea, o se produce un reset, o el codigo se queda estancado, o nose. Ahi va el codigo:

Codigo:

device=16f88
xtal=8
HSERIAL_BAUD = 2400         " Set baud rate to 9600
HSERIAL_RCSTA = %10010000      " Enable serial port and continuous receive
HSERIAL_TXSTA = %00100000      " Enable transmit and asynchronous mode
HSERIAL_CLEAR = ON         " Optionally clear the buffer before receiving
SCL_PIN   = PORTB.4
SDA_PIN   = PORTB.1
BOOTLOADER=FALSE
ALL_DIGITAL=TRUE

DIM X[10] AS BYTE
DIM RX AS BYTE
DIM ADRESS AS WORD
DIM TMPDAT AS BYTE


DF:
RX=""
HRSOUT "[E]SCRIBIR O [L]EER",13
SERIN PORTB.2,396,[RX]
HRSOUT 13
IF RX="E" THEN GOTO ESCRIBIR
IF RX="L" THEN GOTO LEER
HRSOUT "COMANDO ERRONEO",13
GOTO DF

LEER:   "¡Este es el bucle que me da problemas!
HRSOUT "LEER>DIRECCION DE 0 A 65535? [X] PARA ACABAR NUMERO",13
SERIN PORTB.2,396,[DEC ADRESS]
HRSOUT 13
HBSTART
HBUSOUT %10100000
HBUSOUT ADRESS.HIGHBYTE
HBUSOUT ADRESS.LOWBYTE
HBRESTART
HBUSOUT %10100001
TMPDAT=HBUSIN
HBSTOP
HRSOUT "DATO EN LA DIRECCION ", DEC ADRESS ,":",13   "¡¡¡NO RECIBO ESTO!!!!
HRSOUT TMPDAT " ¡¡¡NI ESTO!!!!
GOTO DF

ESCRIBIR:
HRSOUT "ESCRIBIR>DIRECCION DE 0 A 65535? [X] PARA ACABAR NUMERO",13
SERIN PORTB.2,396,[DEC ADRESS]
HRSOUT 13,"DATO A ESCRIBIR?",13
SERIN PORTB.2,398,[TMPDAT]
HBSTART
HBUSOUT %10100000
HBUSOUT ADRESS.HIGHBYTE
HBUSOUT ADRESS.LOWBYTE
HBUSOUT TMPDAT
HBSTOP
DELAYMS 10
HRSOUT 13,"DATO ESCRITO CON EXITO",13
GOTO DF


end




Todo empieza en el bucle DF, segun la eleccion irá a un sitio a LEER o a ESCRIBIR.

Espero vuestras posibles soluciones, muchisimas gracias.

salu2!

Desconectado RGL

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 634
RE: Problema con eeprom I2C en picbasic plus
« Respuesta #1 en: 21 de Octubre de 2004, 09:34:00 »
Hola Manex,

No programo en Plus, pero pero creo que debes revisar el tipo de dirección que lees del puerto. En teoría, lo que te llega por el puerto son bytes y tu has puesto una variable tipo word, entonces puedes tener conflicto de tipos.

Para descartar esto yo pndría fijo cinco direcciones con un for (sin transmitir por puerta serie) y escribiría datos en la memoria. despue´s lees y envías por la puerta serie lo que hayas leido.

De esta forma evitas el problema de los tipos de variables y su conversión y te centras en el problema de escritura y lectura de la memoria.

Saludos
Ricky
Madrid-España