Hallo, ich steh grad aufm Schlauch. Programm startet. Meine Kalibriermetode speichert Wert im Flash. Die Messmethode holt sich den K-Wert aus dem Flash und alles passt. Jetzt kommt ein Reset. Nach einem Reset soll sich der Mikrokontroller wieder den Kalibrierwert aus dem Flash holen. Eigentlich kein Problem. Wie kommt aber vor der Kalibrierung der "Grundwert" in den Flash? Klar eine Methode schreibt Ihn in den Flash, ABER die wird ja auch nach einem RESET aufgerufen und überschreibt den Kalibrierwert!! Wie kann ich das umgehen? Eine Möglichkeit wäre kein Betrieb ohne Kalibrierung. Möchte ich aber nicht. Ihr wißt bestimmt schon die Lösung nur ich steh aufm Schlauch. Danke,Gruß Marc
autokalibrierung? Sonst: Wenn bei Programstart eine Taste gedrückt wird, soll neukalibriert werden und die Werte gesichert werden...
danke, das geht schnell. Autokalibrierung ist in sofern schlecht da nach einem möglichem reset warum auch immer der Sensor "nicht immer" im Klimaschrank zu finden ist. Gruß Marc
Ich gehe mal davon aus, dass du nicht das Kalibrieren des internen RC-Oszillators über OSCCAL meinst. Mach doch den Aufruf der Kalibriermethode von einem äußeren Ereignis (Jumper) abhängig und benutze im Normalfall (normales Reset) den K-Wert, den die K-Routine irgendwann mal ermittelt hat. Alternativ kannst du den Aufruf der K-Routine davon abhängig machen, ob bereits ein gültiger K-Wert im Flash steht. ...
> Klar eine Methode schreibt Ihn in den Flash, ABER die wird ja auch > nach einem RESET aufgerufen und überschreibt den Kalibrierwert!! > Wie kann ich das umgehen? Indem die Kalibierroutine neben den Wert noch ein Byte benutzt, dass die Bedeutung: 'Kalibrierung gültig' ist. Findet die Hochfahrsequenz das Byt als 'gültig' vor, mcht sie nichts, ist das Byte anders, wird die Kalibrierung angeworfen. Nennt man in der Programmierung: ein Flag setzen bzw. abfragen.
O.K. da fehlen noch ein paar Infos. MSP430F149. an dem hängt ein Kapazitiver Feuchtesensor. Beim Kalibieren speichere ich den Wert ab. Soll halt aber auch ohne Kalibrierung laufen. Nur nicht so "genau" wie nach der Kalibration. Aber das mit dem "gültigem Wert" im Flash ist glaub nicht schlecht. Allerdings müsste das bei der Initialisierung abgefragt werden. Die Kalibriermethode muss immer den aktuellen Wert in den Flash schreiben sonst kann ich mir ja das kalibrieren sparen. Gruß Marc
Die Methode mit einem Jumper ist aber besser. Damit hast du dann eine einfache Möglichkeit im laufenden Betrieb den Sensor auch mal nachzukalibrieren. Zur Schaltung hingehen. Schaltung ausschalten. Jumper abziehen. Schaltung einschalten. Paar Sekunden warten Ausschalten Jumper aufstecken Einschalten Fertig. Das kann man jedem noch so popeligen Service-Techniker beibringen.
Flag setzten, das hört sich Gut an. Bevor ich aber den Flash beschreiben kann muss die Kalibriermethode ein ganzes Segment des Speichers löschen wenn ich das richtig weiß. Mal sehen ob ich noch ein anderes Segment über hab sonst wird auch mein Flag gelöscht. Gruß Marc
> O.K. da fehlen noch ein paar Infos.
Eben... - Und deshalb ziehe ich meine Aussage zurück und behaupte das
Gegenteil...
;-)
...
Jumper. Hmm das überleg ich mir mal. Im laufenden Betrieb mach ich das grad mit nem Taster -> Interrupt
> Im laufenden Betrieb mach ich das grad mit nem Taster -> Interrupt Aua, bei "Taster -> Interrupt" läuten bei mir alle Alarmglocken, den Taster prellen. > Bevor ich aber den Flash beschreiben kann muss die Kalibriermethode > ein ganzes Segment des Speichers löschen wenn ich das richtig weiß. Nu kenne ich den MSP430 nicht, aber beim AVR würde ich dazu das EEPROM wählen. Hat der MSP430 Sowas (EEP) nicht? ...
EEPROM ist nicht. Nur 60kB Flash oder was davon übrig ist wenn der Porgrammcode drauf ist. ;-) Mit dem Entprellen hatte ich bisher noch keinen ärger. Sofort nach aufruf der ISR sperre alle Interrupts und später lösche ich das Interrupt-Flag. Bist jetzt hats geklappt. Aber selbst mit EEPROM ist die Jumper-Abfrage eine gute Sache. Da kann ich auch umgehen das ausversehn der Interupt ausgelöst wird.
Der Interrupt löst trotzdem aus, aber ich kann den Jumper in der ISR abfragen ob kalibriert werden soll.
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.