Variablen im EPROM Speichern

Gast #3174443
Hallo wieder an Alle hier,

ich muss auf die Schnelle noch ein Problem klären, ich möchte Variablen 
die während des Betriebes eines Atmega32 beschrieben werden, beim 
Ausschalten so speichern das sie beim nächsten Einschalten wieder 
gelesen werden können.
Geht natürlich nur wenn ich diese in einem nichtflüchtigen Speicher 
ablege.
Nur habe ich noch gar keine Erfahrung mit dem EPROM des Atmega32.
Die Schaltung die ich benötige um beim Ausschalten einen externen 
Interrupt auszulösen ist kein Problem. Nur dann im Falle des Interrupts 
die entsprechenden Variablen in den EPROM zu schreiben ist dann schon 
ein Problem für mich.

Bin Anfänger und muss das so schnell wie möglich lösen. Am besten 
gestern.
Ich wäre über schnelle Hilfe wirklich Dankbar.
Vielleicht hat Jemand auch ein kleines Beispiel, so das ich mir den Rest 
noch erarbeiten kann.

Vielen Dank
Lars
#3174460
Hallo Lars,
das ganze ist in BASCOM ganz einfach :

'Variablendeklaration
 Dim T_ein As Single              'flüchtige Variable
 Dim T_ein_sic As Eram Single     'nichtflüchtige Variable

'Variable aus dem ERAM lesen
 T_ein = T_ein_sic

'Variable im ERAM sichern
 T_ein_sic = T_ein

MfG von der Spree
Gast #3174463
>Nur habe ich noch gar keine Erfahrung mit dem EPROM des Atmega32.

Der hat kein Eprom.

>Bin Anfänger und muss das so schnell wie möglich lösen. Am besten
>gestern.

Also Hausaufgabe.

>Ich wäre über schnelle Hilfe wirklich Dankbar.
>Vielleicht hat Jemand auch ein kleines Beispiel, so das ich mir den Rest
>noch erarbeiten kann.

Im Datenblatt stehen Beispiele in C und ASM.

Deine Programmierprache scheint nicht dabei zu sein.
Gast #3174471
Entschuldigt, ich programmiere in C. Da ich gewaltig unter Stress stehe 
passiert das leider, das ich wichtige Details vergesse.

>Also Hausaufgabe.

Ja, da hast du völlig Recht, leider fehlt mir die Zeit, übermorgen ist 
Abgabe Projekt und mein Spannemann, der eigentlich dafür verantwortlich 
war, hat mich richtig hängen lassen.

>Der hat kein Eprom.

laut Datenblatt
1024Bytes EEPROM

OK, ich schrieb EPROM und im Datenblatt steht EEPROM, der Unterschied 
liegt hauptsächlich in der Art des Löschens
Gast #3177905
Hallo kbuchegg

vielen Dank für die Antwort. Ich habe das Tutorial durchgearbeit,
das lesen und schreiben der Variablen in den EEPROM funktioniert jetzt.

Allerdings habe ich noch eine Warnung.

../Belichter_Main.c:165: warning: passing argument 1 of 
'__eerd_byte_m32' makes pointer from integer without a cast


Kann mir Jemand erklären was mir diese sagen möchte.

Vielen Dank
#3178054
dass du dir die Zeile 165 in deiner Datei Belichter_Main.c noch mal 
ansehen sollst.
Dort erwartet der Compiler als erstes Argument einen Pointer, du hast 
ihm aber einen Integer vorgesetzt.
Hättest du mindestens auch diese Zeile veröffentlicht, könnte man 
vielleicht noch mehr dazu sagen.
Gast #3178124
Hallo jogedua

Danke für die Antwort und diese hat mich inspiriert noch einmal genauer 
nachzulesen und siehe da, jetzt sind die Warnungen weg und es 
funktioniert bestens. Danke an Alle

Lars

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 13 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.