PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Verständnisfrage ERAM Variable



Brantiko
27.08.2007, 22:48
Guten Abend!

Ich habe folgendes Problem (schematisch umgebastelt auf das LED-Beispiel)
Ich möchte eine LED 1min einschalten, danach soll sie erlischen.
Die Varibale die dafür sorgt dass nach einer Min. Schluss ist wird daher vor der Hauptprogrammscheife mit einem Wert veresehen :



Wartezeit = 100 ' 100 = Eine Minute


Nun soll jedoch diese Variable veränderbar sein. Wenn beim einschalten ein Taster gedrückt ist, springt das Programm in eine Subroutine und Zählt die Variable hoch. Pro Sekunden blinkt die LED einmal was bedeutet dass der Wert nun um 10 erhöt wurde. Blinkt die LED 10 mal hat man die Wartezeit also verdoppelt. Ich weise den neuen Wert der Variable "Wartezeit" zu und speicher den Wert somit im EEPROM, damit beim nächsten einschalten die LED dann zwei Minuten leuchtet. Mit dem Taster kann die Wartezeit jederzeit wieder geändert werden.

Problem: Der Anfangswert von 100 wird der Variable jedes mal wieder zugewiesen, weil der Codeausschnitt oben bei jedem Einschalten einmal durchlaufen wird.. und daher die Wartezeit wieder auf 100 gesetzt wird, egal welchen Wert ich vorher manuel "eingegeben" habe.

Wie funktioniert dass mit einem Anfangswert der geändert werden kann und auch geändert bleibt?

Gruss

Alex

Gento
27.08.2007, 23:52
Dim Ram_bootzaehler As Long
Dim Eram_bootzaehler As Eram Long 'z.B. Adr 02,03,04,05


Ram_bootzaehler = Eram_bootzaehler
Incr Ram_bootzaehler 'oder Deine neue Zahl
Eram_bootzaehler = Ram_bootzaehler

mit ERam kann nicht direkt gerechnet werden,

Gento

Brantiko
28.08.2007, 19:49
Moin,
Trotzdem müsste ich Ram_bootzaehler doch einen Anfangswert zuweisen?

Gruss

Alex

Gento
28.08.2007, 21:38
Im Mega32 steht das Eram normal auf 0 ,denke ich .

Ich Schreibe beim ersten Flashen :

Debugen=1

#if Debugen = 1
Eram_bootzaehler = 0
SerienNR1 = 193
usw
#endif

So bekommt jedes Modul auch seine Seriennummer die Später nur noch gelesen wird.

Es muß aber so ein zweites mal Geflasht werden mit Debuggen=0

Auf der Art behält behält die CPU auch Ihre Werte nach dem Flashen per Bootloader.

lg Gento