MSP430: Timer-Problem

Gast #1017240
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.
Gast #1017258
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.
Gast #1017315
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?
Gast #1017385
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?
Gast #1017417
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.
Gast #1020070
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren