Hi. Möchte gerne ein kleines Programm mit einem LC Display machen und ein paar Daten auf EEPROM sichen. Wie ich ein EEprom lesen oder beschreiben kann, weiß ich. Mir geht es eher darum, wie ich das EEprom beschreibe, ohne es im Programmanfang machen zu müssen. Also wenn ich es immer am Programmanfang machen würde, dann würde im EEprom immer das gleiche drin stehen, oder? Sagen wir mal, im EEprom sind Daten für ein Lauflicht. Das wäre dann das Grundprogramm oder das Grundlauflicht. Wenn ich das Lauflicht verändern will, dann speichere ich es über die alten EEprom Daten. Aber wie bekomm ich sie auf EEprom?
Normalerweise kann jedes Brennprogramm ein EEPROM beschreiben. Aber so würde ich das nicht machen. Ich würde der Schaltung eine RS232 Schnittstelle verpassen. Ins Programm kommt dann eine 'Konfigurationsmöglichkeit' über RS232, sodass ich das Lauflicht ganz simpel mit einem Terminalprogramm interaktiv ändern kann. Dieser Konfigurationsteil nimmt die neuen Werte an und speichert sie im EEPROM.
Wo kriegst Du denn die neuen Daten her? Liest Du halt am Programmanfang, ob schon was drinsteht, wertest das aus und schreibst in Abhängigkeit davon den EEPROM neu. Im laufenden Programm kannst Du die Daten seriall per UART / PC empfangen und nach Empfang neu schreiben.
was hat eigentlich der Schreibvorgang in EEPROM mit dem Programmstart zu tun? Mir wars bisher eigentlich völlig Wurst wo in meinem Programmcode ich ins EEPROM schreibe oder daraus lese und meinen Controllern auch. bye Frank
Hallo Andre, unter studio4, in Assembler, habe ich es folgendermaßen gelöst: nach dem Assembler-statement .eseg den EEPROM-Inhalt mit .db hinschreiben. Beim Assemblieren entsteht zusätzlich ein x.eep-file. Da beim Programmieren mit dem hex-file gibt es ein obligatorisches chip-erase. Erst nach dem .hex file kann man das .eep file einprogrammieren. Schau dir mal das Beispiel im Anhang an.
> Da beim Programmieren mit dem hex-file gibt es ein obligatorisches > chip-erase. Erst nach dem .hex file kann man das .eep file > einprogrammieren. ...was sich bei vielen neueren AVRs per Fuse deaktivieren lässt. Wenn die "Daten" (Lauflicht-Bitmuster) schon zur Entwurfszeit feststehen, dann kann man sie auch in einer Flash-Tabelle speichern. Das EEPROM ist eigentlich nur interessant, wenn man Daten zur Laufzeit ändern möchte (oder wenn es eng im Flash wird, was bei einem Lauflicht im Mega8 unwahrscheinlich ist). Die dazu erforderlichen Routinen für EEP-Zugriff sind in den Datenblättern und Appnotes recht brauchbar beschrieben. ...
Das gleiche Problem habe ich auch ..... Nutze AVR Studio 4.12 mit STK500 und serieller ISP Programmierung. Problem ist: Wenn neues Programm in den Flash geschrieben wird, wird automatisch das EEPROM gelöscht, was ich aber nicht möchte. Daraufhin habe ich das Flag "Erase Device Before Programming" gelöscht (siehe Bild 1). Das Programmieren des Flash funktioniert aber nicht mehr, wenn ich das Programm neu compiliert habe (siehe Fehlermeldung Bild 2). Kann mir jemand sagen, warum ich den Flash nicht einfach überschreiben kann, ohne das EEPROM gleichtzeitig zu löschen ? Gruß Manni
Manni wrote: > Das gleiche Problem habe ich auch ..... > > Nutze AVR Studio 4.12 mit STK500 und serieller ISP Programmierung. > > Problem ist: > Wenn neues Programm in den Flash geschrieben wird, wird automatisch das > EEPROM gelöscht, was ich aber nicht möchte. > > Daraufhin habe ich das Flag "Erase Device Before Programming" gelöscht Das ist falsch! Gehe auf Fuses und markiere preserve eeprom (oder so ähnlich, ich habe das jetzt nicht vor mir). > (siehe Bild 1). Das Programmieren des Flash funktioniert aber nicht > mehr, wenn ich das Programm neu compiliert habe (siehe Fehlermeldung > Bild 2). > > Kann mir jemand sagen, warum ich den Flash nicht einfach überschreiben > kann, ohne das EEPROM gleichtzeitig zu löschen ? Flash lässt sich nur "im Ganzen" löschen, jedes Schreiben zieht die Bits bis zum nächsten Löschen nach 0. EEPROM lässt sich in beide Richtungen ändern, nach 1 und nach 0. > > Gruß > Manni ...
Hannes, das ging ja wie der Blitz. Problem gelöst !! Nur nebenbei: bei den Fuse Bits bin ich immer etwas zurückhaltend -- aus bekannten Gründen -- deshalb hab' dort bisher noch nicht rumgefummelt. Besten Dank !! Manni
Manni wrote: > bei den Fuse Bits bin ich immer etwas zurückhaltend -- aus > bekannten Gründen -- deshalb hab' dort bisher noch nicht rumgefummelt. Das ist ja ok. Ich empfehle ja auch jedem Anfänger, die Finger erstmal von den Fusebits zu lassen, bis es sich etwas eingearbeitet hat und das dazu erforderliche Wissen und Verständnis hat. Aber irgendwann will man mehr, dann muss es sein, dann führt kein Weg an den Fuses vorbei. ;-) ...
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.