mikrocontroller.net

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


Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: der inoffizielle WM-Rahul (Gast)
Datum:

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

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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.

...

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl heinz Buchegger (kbucheg)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> O.K. da fehlen noch ein paar Infos.

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

;-)

...

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jumper. Hmm das überleg ich mir mal.

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

Autor: Hannes Lux (hannes)
Datum:

Bewertung
0 lesenswert
nicht 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?

...

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Marc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der Interrupt löst trotzdem aus, aber ich kann den Jumper in der ISR
abfragen ob kalibriert werden soll.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.