Hallo,

Zitat von
fredred
Kommt schon wieder die nächste Aufgabe für dich.
Eeprom auslesen und meinen Code „hinzubiegen“.


In meinen Versuch wird zwar der Eeprom gelesen aber die Werte sind Expotential.
Somit nehme ich an die Ausleseadressen sind verschoben.
Ja, weil beim "Lesen:" die Mem_addr zu spät auf den richtigen Wert gesetzt wird.
Habe in grün meine Änderungen geschrieben und blau, daß was ich rausgenommen habe.
Vor dem Aufruf von "Schreiben" sollte auch die Variable "Aktionen" auf 0 gesetzt werden (Aber nicht innerhalb des jetzigen Unterprogramms). Wenn der µC nicht zurückgesetzt wird und Du die Funktion nochmal aufrufst, hat "Aktionen" irgendeinen Wert von vorher.
Würde auch empfehlen, das DEBOUNCE Kommando zum Entprellen und Aufruf der Unterprogramme zu nutzen.
Hoffe hab auf die Schnelle nichts übersehen.
Gruß
Searcher
Code:
'### BEGINN ext. EEPROM lesen (random address read method) ###
Lesen:
For L = 0 To 236 Step 4 'hier mein Versuch 10 Aktionen lesen
Mem_addr = L 'Mem_addr_first_store_loc 'Leseadresse für ext. EEPROM initialisieren
For J = 0 To 3 'Laufschleife um 4 Bytes zu schreiben
I2cstart
I2cwbyte Dev_addr_write 'Sendet ext. EEPROM Adresse zum Schreiben
I2cwbyte Mem_addr_high_byte 'Sendet Speicher-Leseadresse
I2cwbyte Mem_addr_low_byte 'Sendet Speicher-Leseadresse
I2cstart 'zweites Start ohne vorheriges Stop (siehe Datenblatt "random address read")
I2cwbyte Dev_addr_read 'Sendet ext. EEPROM Adresse zum Lesen
I2crbyte Byte_var_read(j) , Nack 'Liest Datenbyte
I2cstop
Mem_addr = Mem_addr + 1 'Leseadresse mit jedem Schleifendurchlauf erhöhen
Next J
'Mem_addr_first_store_loc = L (auskommentiert)
'### BEGINN SW UART Ausgabe ###
Print
Print "Adressbereich ab " ; Mem_addr 'Mem_addr zeigt hier schon auf den Anfang der nächsten Single
Print "Number read from ext. EEPROM : " ; Four_byte_var_read 'Single paßt nicht zu vorher geprinteten Mem_addr
Next L
Return
'########ENDE ext. EEPROM lesen (random address read method)
Lesezeichen