Hallo, ich habe das GCC Tutorial über den EEPROM gelesen. Ist auch gut verständlich. Allerdings habe ich noch eine Frage zu meinem konkreten Problem: Ich kommuniziere über SPI mit einem anderen Baustein. Dieser Baustein benötigt sofort nach dem Einschalten Setup Daten per SPI in der Form von 16 Byte-Werten um korrekt zu arbeiten. Das heißt im Klartext: Ich übertrage nach dem Einschalten per SPI die 16 Bytes mit den Setup Daten zum Baustein und bekomme als Antwort die CRC Checksumme über die gesamten gesendeten Setup-Daten. Diese Setup Daten will ich im EEPROM des Host-Microcontroller (ATMega644P) ablegen. Jetzt ist die Frage wie ich diese 16 Bytes am geschicktesten im EEPROM ablege um einfach die CRC aus diesen Daten zu bilden, denn die CRC muss ich ja mit der Antwort des anderen Bausteins gegenchecken. Am liebsten wäre mit eine Art "Setupdaten-Struktur" die ich in einem Rutsch aus dem EEPROM lesen kann und flott die CRC darüber bilden kann. Hat da jemand eine Idee wie man ein solches Problem am elegantesten lösen kann? Viele Grüße!
Wenn der Atmega die Setup-daten stückweise ändern kann - weil das lauter verschiedene Parameter sind - dann sollten die auch auch als struct ins EEPROM. Und werden als Byte-array (Union oder Pointer-cast) ausgelesen. Wenn der Atmega die nicht einzeln ändern kann, sondern z.B. immer denn ganzen Block per USART, SPI o.ä. bekommt, dann tut's auch ein Byte-(char-) Array. Wenn diese Daten gar nicht verändert werden, tu' sie in den Flash-Speicher (einfacher zu warten, bzw. zu flashen), inklusive vorher berechneter CRC. hth, Jörg
Hallo Jörg, danke für die Antwort. Der Benutzer des Geräts kann diese Setup Daten über ein Menü, was auf einem LCD zur Verfügung gestellt wird, ändern. Also müssten die Daten in den EEPROM und bei jeder Inbetriebnahme des Geräts aus dem EEPROM ausgelesen und die CRC gebildet werden. Denkst du es ist dann sinnvoll diese Daten fest im Quellcode als EEMEM Variablen zu deklarieren oder lieber "händisch" eine .eep Datei zu bauen. Soweit ich es verstanden habe wird die .eep Datei beim Flashen mit in den Controller übertragen. Somit hätte man unabhängig vom Quellcode die Default-Setup Paramter zu ändern. Sehe ich das richtig!? Viele Grüße
Hallo, CRC-Routine muß Du sowieso programmieren. Also Default-Datensatz ins Flash. Beim Start des µC Prüfsumme des Datensatzes im EEPROM berechnen und mit CRC-Wert im EEPROM vergleichen. Wenn ok -> Datensatz zum IC schicken und und die Antwort mit der Prüfsumme im EEPROM vergleichen. Wenn nicht ok -> Datensatz aus Flash ins EEPROM kopieren und weiter wie oben, der EEPROM war dann entweder leer oder die Daten ungültig. Gruß aus Berlin Michael
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.