Problem mit 24C65 - kann nur 1 Byte speichern Kategorie: I²C-Bus (von MarcoF - 19.05.2003 9:13) | |
| |
Hallo *, ich habe folgendes Problem das mich allmählich ver2feln lässt :-) Es geht um ein 24C65 EEPROM an einem PIC18F452. Ich möchte z.B. 3 einzelne Bytes im EEPROM speichern, aber beim auslesen erhalte ich als Ergebnis immer das zuletzt geschriebene Byte - an JEDER Adresse. Beispiel - Schreiben: Adresse 0000 = Wert "01" Adresse 0001 = Wert "02" Adresse 0002 = Wert "03" Egal welche Adresse ich nun im EEPROM lese erhalte ich immer den Wert "03" zurück. Scheinbar gelingt es also nicht die Adresse zu setzen und das EEPROM schreibt wahr- scheinlich immer an Position 0000. Was mache ich blo� verkehrt? Wäre super-nett wenn da mal jemand drüberschauen könnte ;-) Hier mein Test-Programm: savetest ;# Wert "01" -> Adresse 0000 movlw 0x00 movwf ADDR_H movlw 0x00 movwf ADDR_L movlw 0x01 movwf SENDBYTE call eeprom_save ;# Wert "02" -> Adresse 0001 movlw 0x00 movwf ADDR_H movlw 0x01 movwf ADDR_L movlw 0x02 movwf SENDBYTE call eeprom_save ;# Wert "03" -> Adresse 0002 movlw 0x00 movwf ADDR_H movlw 0x02 movwf ADDR_L movlw 0x03 movwf SENDBYTE call eeprom_save return ;#--------------------------------------------------------------- ;# Save to EEPROM ;#--------------------------------------------------------------- eeprom_save ;# I2C Init call I2C_Init ;# I2C Start call I2C_Start ;# Write-Mode movlw 0xA0 call I2C_SendByte ;# Adresse setzen movf ADDR_H,w call I2C_SendByte movf ADDR_L,w call I2C_SendByte ;# Byte schreiben movf SENDBYTE, w call I2C_SendByte ;# I2C Stop call I2C_Stop return ;#--------------------------------------------------------------- ;# Load from EEPROM ;#--------------------------------------------------------------- eeprom_load ;# I2C Init call I2C_Init ;# I2C Start call I2C_Start ;# Write-Mode movlw 0xA0 call I2C_SendByte ;# Adresse setzen movf ADDR_H,w call I2C_SendByte movf ADDR_L,w call I2C_SendByte ;# Nochmal starten call I2C_Start ;# Read-Mode movlw 0xA1 call I2C_SendByte ;# Control-Byte lesen call I2C_ReceiveByte ;# Send Ack call I2C_SendAck ;# Byte lesen call I2C_ReceiveByte movwf READBYTE ;# Send Nak call I2C_SendNak ;# I2C Stop call I2C_Stop return | |
Antwort schreiben Antworten: Und was hat das mit CC2 zu tun ? (von André H. - 19.05.2003 12:27) Re: Und was hat das mit CC2 zu tun ? (von MarcoF - 19.05.2003 13:52) |