Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - FAQ - Zum CC1-Forum - Zum CC-Pro-Forum

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)