Hallo,
Zitat Zitat von fredred Beitrag anzeigen
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)