mehrere Timer, kollidieren ??

Gast #278692
Lesenswert?

Hallo,

ich betreibe einen ATMega8 mit einem 3,6468 MHz Quarz.
Einen Timer teile ich durch 256 vor. Mit passenem Reloadwert kommt dann
ein Überlauf, passend für eine Stoppuhr, von 0,01sec raus.
Parallel zu dieser laufenden "Stoppuhr" möchte ich ein immer
konstantes PWM-Signal ausgeben.
Die Routinen dür das PWM-Signal dürfen natürlich den Timer für die
Stoppuhr nicht beeinflussen.

Auf was muss ich achten ??
Können sich die Interrupts in die Quere kommen ??

Lieben Dank an euch !!
HPK
Gast #278694
Lesenswert?

Der Mega8 hat doch 3 Timer, da kannst Du ruhig den T1 für die PWMs
reservieren. Und mit T0 oder T2 machst Du dann Deine Stopuhr.


Genau genommen hat man sogar 5 Timer, wenn man die UART und den ADC
nicht braucht (Baudrategenerator, ADC-Prescaler).


Peter
#278697
Lesenswert?

> wie ist das denn, wenn Timer0 zeitgleich mit Timer1 seinen Interrupt
> auslöst? Kann das passieren ??

Ja, das kann passieren.

Man kann die Fehler aber kompensieren.

In der Timer0-ISR kann man den Reload auf den aktuellen Timerstand
addieren, dann ist es kein Problem, wenn die ISR etwas verzögert
aufgerufen wird.

Den Timer1 lässt man möglichst frei durchlaufen, dann kann man beide
Compare-Interrupts und den ICP-Interrupt nutzen.
In den Compare-ISRs liest man das Compare-Register (nicht den Timer
selbst!) ein, addiert das Intervall dazu und schreibt es zurück. Dann
entsteht kein Fehler, wenn die ISR etwas verspätet aufgerufen wird.

Die ISRs sind dabei möglichst kurz zu halten, aber das ist ja sowiso
eine Selbstverständlichkeit.

...
Gast #278698
Lesenswert?

Der Interrupt wird in bestimmten I/O-Registern zwischengespeichert und
wenn dein Interrupt fertig behandelt ist, wird der nächste ausgeführt.

Entweder du konfigurierst einen Timer gleich als PWM, oder du
aktivierst die Interrupts in der Interruptbehandlungsroutine - dann
kann dein Timer-Interrupt von einem zweiten Interrupt unterbrochen
werden. Das ist nicht ganz gefährlich, wenn die Interrupts sehr lange
dauern - dann kann sich ein Timer immer wieder selbst unterbrechen.
Wenn man sich aber daran hält, dass man in die Interruptroutinen eh
fast nichts steht, gibts auch keine Probleme.

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