Ich weiß nich obs an mir liegt jedenfalls hat diese lösung mit sehr viel hin und herprobieren immernoch nicht funktioniert. Habs nu mit bisschen rumsuchen und probieren anders gelöst. Deshalb meine Lösung nochmal damit sich nich noch mehr leute damit rumärgern müssen wenns nich geht![]()
Code:'Hardware: AT Mega 32 $regfile = "m32def.dat" $crystal = 7372800 'I2C konfigurieren Config Sda = Porta.7 Config Scl = Porta.6 Dim Wert As Byte Dim Adresse As Word Dim Temp As Byte 'Funktionen deklarieren Declare Sub Read_byte(byval Ee_adresse As Word, Value As Byte) Declare Sub Write_byte(byval Ee_adresse As Word , Byval Ee_daten As Byte) 'Hauptprogramm=================================== Print "EEPROM schreiben..."; Do For Adresse = 1 To 5 ' die ersten 5 Byte schreiben Wert = Adresse + 100 'Beginnend mit Zahlenwert 105 um Verwechslungen zu vermeiden Call Write_byte(adresse , Wert) 'Daten schreiben Next Wait 1 Print "*2"; Print "EEPROM lesen: "; Print "*3"; For Adresse = 1 To 5 'die geschriebenen 5 Byte auslesen Call Read_byte(adresse , Wert) 'auslesen Print Str(wert); 'Ausgabe an UART Next Loop 'Funktionen============================= 'Routine zum schreiben von Daten in das EEPROM Sub Write_byte(byval Ee_adresse As Word , Byval Ee_daten As Byte) Temp = High(ee_adresse) 'MSB von ee_adresse speichern I2cstart 'generate start I2cwbyte &B10100000 'write addres of24C65 I2cwbyte Temp 'write high adress I2cwbyte Ee_adresse 'write low adress I2cwbyte Ee_daten 'write daten I2cstop 'Stop senden zum schreiben End Sub 'Routine zum lesen von Daten aus dem EEPROM Function Read_byte(byval Ee_adresse As Word , Value As Byte) Temp = High(ee_adresse) 'MSB von ee_adresse speichern I2cstart 'generate start I2cwbyte &B10100000 'write addres of 24C65 I2cwbyte Temp 'write high adress I2cwbyte Ee_adresse 'write low adress I2cstart 'generate repeated start I2cwbyte &B10100001 'write read commando I2crbyte Value , Nack I2cstop End Function







Zitieren

Lesezeichen