Harware ist Atmega2560, RN-KeyLCD (über RS232), CC2net-Ram Interface (SAA1064) und CC2net-Ram Device mit 4MBit (und Batterie), Software Bascom 1.1.8.5. Ich bin Neueinsteiger bei Amtel (vorher CControll, da hatte ich den Speicher im Griff). Meine Versuche bringen leider kein Ergebnis beim Auslesen des EEProm (selbst wenn nichts geschrieben wird, es liegen 255000 Integerwerte im Speicher von der CControl her). Der Code ist der letzte Stand nach verschiedenen Versuchen. Das Programm läuft ohne Pause durch. Das Auslesen von ERR nach jedem Schritt beim Lesen / Schreiben bringt ein Ergebnis <> 1 (für die bessere Übersicht aus diesem Quelltext entfernt). Problem ist, das beim Auslesen des Speicher mit I2crbyte "Value" immer 0 ist. Nach 2 Tagen Code-basteln also die Frage, was mache ich falsch, bzw. was fehlt noch.
Code:$prog , 255 , &B11011001 , $regfile = "m2560def.dat" $hwstack = 82 $framesize = 68 $swstack = 68 $crystal = 16000000 $baud = 9600 $lib "i2c_twi.lbx" Config Sda = Portd.1 'SDA und SCL definiere Config Scl = Portd.0 'für TWI-Bus-Konfiguration I2cinit Config Twi = 100000 ' wanted clock frequency Declare Sub Write_eeprom(byval Adres As Word , Byval Wert As Byte) Declare Sub Read_eeprom(byval Adres As Word ) Dim Temp As Word Dim Adres As Word Dim Value As Byte Const Addressw = &H70 Const Addressr = &H71 'Sonstiges Dim X As Word Dim Wert As Byte Print Chr(12); Do Wert = 0 Print Chr(12); For X = 76 To 255 Wert = Wert + 1 Print Chr(27) ; Chr(79) ; Chr(1) ; Chr(1); Print "Adresse " ; X ; " " ; Wert ; Call Write_eeprom(x , Wert) Call Read_eeprom(x , Value ) Next X Loop End Sub Write_eeprom(byval Adres As Word , Byval Wert As Byte) Disable Interrupts I2cstart 'start condition I2cwbyte Addressw 'slave address I2cwbyte Adres 'asdress of EEPROM I2cwbyte Wert 'value to write I2cstop 'stop condition Enable Interrupts Waitms 10 End Sub Sub Read_eeprom(byval Adres Word , Value As Byte) Disable Interrupts I2cstart 'generate start I2cwbyte Addressw I2cwbyte Adres 'address of EEPROM I2cstart 'repeated start I2cwbyte Addressr 'slave address (read) I2crbyte Value , Nack 'read byte I2cstop Enable Interrupts Waitms 10 'generate stop Print Chr(27) ; Chr(79) ; Chr(1) ; Chr(2); Print "Wert " ; Value ; 'das Problem Value immer 0 End Sub







Zitieren

Lesezeichen