Forum: Mikrocontroller und Digitale Elektronik Kalibrierwerte I/O<-> Flash


von Marc (Gast)


Lesenswert?

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

von der inoffizielle WM-Rahul (Gast)


Lesenswert?

autokalibrierung?
Sonst: Wenn bei Programstart eine Taste gedrückt wird, soll
neukalibriert werden und die Werte gesichert werden...

von Marc (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

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.

...

von Karl heinz B. (kbucheg)


Lesenswert?

> 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.

von Marc (Gast)


Lesenswert?

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

von Karl heinz B. (kbucheg)


Lesenswert?

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.

von Marc (Gast)


Lesenswert?

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

von Hannes L. (hannes)


Lesenswert?

> O.K. da fehlen noch ein paar Infos.

Eben... - Und deshalb ziehe ich meine Aussage zurück und behaupte das
Gegenteil...

;-)

...

von Marc (Gast)


Lesenswert?

Jumper. Hmm das überleg ich mir mal.

Im laufenden Betrieb mach ich das grad mit nem Taster -> Interrupt

von Hannes L. (hannes)


Lesenswert?

> 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?

...

von Marc (Gast)


Lesenswert?

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.

von Marc (Gast)


Lesenswert?

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