Forum: Mikrocontroller und Digitale Elektronik Speicherung v. Variablen


von GMB (Gast)


Lesenswert?

Hallo zusammen!

Habe da mal eine "grundsätzliche" Frage:

Ich habe ein Programm, bei dem u.a. ein ADC-Wert eingelesen wird,und
mit einem von mir im Programm vorher festgelegten Wert verglichen wird,
und bei gleichheit der beiden Werte wird eine Aktion ausgeführt.

Jetzt möchte ich den Wert, bei dem die Aktion ausgeführt wird,
"extern" ändern. Habe mir jetzt dazu überlegt dies mit einem
Potentiometer machen, welches ebenfalls am A/D-Wandler angeschlossen
ist.

Ich möchte also den A/D-Wandler auslesen, nehme den Wert (der ja je
nach Poti-Stellung anders ist), und schreibe ihn in eine Variable.

Vorher frage ich den anderen ADC-Wert ab, schreibe ihn ebenfalls in
eine Variable, danach vergleiche ich die beiden Werte auf ihre
Gleichheit.

Wenn ich jetzt dem Controller die Spannung wegnehme, er also einen
Reset ausführt, ist dann der Wert der über den Poti eingestellt wurde
"gespeichert"? Oder ist er wieder auf dem "Ursprungswert"?

Mir ist klar, das ich im Programm vorher diese Variable dann nicht
"belegen" darf, da er ja sonst diese wieder beim Reset neu auf den
Wert "setzt".

Bin für jede Hilfe dankbar!!

von A.K. (Gast)


Lesenswert?

Der RAM-Inhalt bleibt beim Reset erhalten (in C-Programmen nicht, aber
das liegt dann an der Software). Es kann aber sinnvoll sein, einen
Controller mit aktiviertem Brownout-Detector zu verwenden und nach dem
Reset abzufragen, was die Ursache war. Denn nach einem Spannungseinbuch
ist der Inhalt wieder undefiniert.

von GMB (Gast)


Lesenswert?

Hallo!!

Also, es wäre dann so, dass der Controller ausgeschaltet wird, also die
Spannung "weg" ist...in dem Fall wäre dann der Inhalt undefiniert, ja?
Also müsste ich den Wert dann zu Beginn wieder über das Potentiometer
abfragen, ja? Um ihn dann auf einem "konkreten" Wert zu haben,
richtig?

Ich verwende übrigens Bascom für die Programmierung, es ist ein mega8
als Controller.

von A.K. (Gast)


Lesenswert?

PS: Controller mit Bootloader verwenden u.U. einen Teil des RAMs für
Daten vom Bootloader, und es kann je nach Typ auch sein, dass der
Bootloader nach Reset immer erst mal aktiv wird, auch wenn er nicht
gebraucht wird.

von A.K. (Gast)


Lesenswert?

Sorry, ich habe keine Ahnung was Bascom draus macht. Ich beziehe mich
auf die Hardware, und ggf. C/C++. Ob Bascom das RAM evtl. komplett
initialisiert weiss ich nicht.

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Du könntest Deinen Referenzwert auch im EEPROM des Controllers
speichern, das ist nichtflüchtig.

von Thomas O. (Gast)


Lesenswert?

ich sehe da überhaupt kein Problem wenn dein AVR einen Reset macht gehts
doch von vorne los und das Poti wird neu eingelesen, danach findet dein
Vergleich statt und dann erst die Aktion.

von GMB (Gast)


Lesenswert?

Ja, ich denke so werde ich das auch machen!! Das Poti bleibt ja am Gerät
dran in der Zielschaltung, so das der "Kunde" damit dann was
einstellen kann...danke für eure Hilfe!! :-)

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
Noch kein Account? Hier anmelden.