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!!
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.
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.
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.
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.
Du könntest Deinen Referenzwert auch im EEPROM des Controllers speichern, das ist nichtflüchtig.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.