www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik MSP430: Timer-Problem


Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute.
Ich arbeite mit MSP430F2012, habe nicht so viel Erfahrung damit, 
vielleicht kann mir jemand helfen.

Ich habe folgende Aufgabe. Beim Start des Programms wird PWM, ADC und 
ein Teimer von 10 Sekunden gestartet. Alles funktioniert soweit.

Wenn mir der ADC einen vorgegebenen Wert innerhalb von diesen 10 
Sekunden liefer oder einen Wert, der kleiner ist als der vorgegebene 
Wert, soll der 10 Sekunden Timer abgebrochen werden und ein 5 Sekunden 
Timer gestartet werden. PWM und ADC sollen aber weiter laufen.

Hat jemand vieleicht eine Idee wie ich dem Timer von 10 Sekunden auf 5 
Sekunden umstellen kann.

Bedanke mich jetzt schon für die Antworten.

Autor: Johnny (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, einfach den Timer anhalten, rücksetzen, Compare Wert (CCR-irgendwas) 
auf den neuen Wert umstellen für 5 Sekunden und Timer wieder starten.
Ist im Manual (SLAU049 irgendwas) ziemlich gut beschrieben.

Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kann doch den Compare-Wert gar nicht ändern, weil ich den für das 
PWM benutze.
Den 10 Sekunden Timer realisiere anders. Wenn PWM von 0xFFFF auf Null 
fählt, löst er ein Interrupt aus. Ich zähle einfach die Interrupts und 
nach 153 Interrupts sind 10 Sekunden vorbei.
Wie mache ich, dass er aufhört die 10 Sekunden zu zählen sondern anfängt 
die 5 Sekunden zu zählen?

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Ich zähle einfach die Interrupts und
>nach 153 Interrupts sind 10 Sekunden vorbei.
>Wie mache ich, dass er aufhört die 10 Sekunden zu zählen sondern anfängt
>die 5 Sekunden zu zählen?
Und wer hinder Dich daran in der ISR nicht bis 153 sondern nur bis 76 zu 
zählen?

Autor: Nat (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe es versucht aber es hat nicht funktioniert.

Ich habe es folgendermassen versucht zu machen. Ich frage erst mit einer 
if-Anweisung die Temperatur ab und wenn sie kleiner als das vorgegebene 
Wert ist, weise ich einer Variable den Wert für 5 Sekunden zu. Das 
Problem ist, wenn die Temperatur kleiner als der vorgegebene Wert ist, 
wird der Variable immer wieder ein Wert zugewiesen.

Wie kann ich es machen, dass wenn die Temperatur kleiner ist die 
Variable den Wert nur einmal bekommt und nicht immer wieder.

Autor: odic (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Nimm doch einfach eine zweite Variable in deren Abhängigkeit du den 
Timer neu initialisierst. Beim ersten Unterschreiten der Temperatur 
änderst du die Variable dann entsprechend und setzt sie unter (noch zu 
definierenden Umständen) wieder zurück.

Autor: Stefan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine andere Möglichkeit wäre es, in der ISR (in der ja bei Dir die 
Anzahl der Interruptaufrufe gezählt wird) einfach temperaturabhängig 
entweder auf 5s oder 10s zu prüfen.

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.