mikrocontroller.net

Forum: Compiler & IDEs Datenblocks im EEPROM Ablegen und CRC bilden


Autor: Florian H. (viper2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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!

Autor: Jörg G. (joergderxte)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Florian H. (viper2000)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.