Forum: Mikrocontroller und Digitale Elektronik Timer1 Experten für ATMega 128


von debugger (Gast)


Lesenswert?

Hallo ich wolte schnell was programmieren mit dem 16 Bit Timer 1 .

Ich möchte einen interrupt habe bei einem bestimmten Zählerstand
(Copare Interrupt )aber der Timer 1 soll dabei weiterlaufen, da ich
auch noch den Overflowinterrupt brauche, geht dass überhaupt oder wird
der Timer automatisch zurückgesetzt ??

Danke

von Hannes L. (hannes)


Lesenswert?

Mit dem 128er mach ich nix, aber bei den anderen ATmegas geht das.

Ich nutze auch gelegentlich zwei OCR-Interrupts und den ICP-Interrupt
gleichzeitig. Man darf dabei nur den CTC-Mode nicht aktivieren.
In der ISR sieht das dann so aus:
1
TIM1_COMPB:         ;ISR für Timer1-Compare1B (alle Millisekunde)
2
 in srsk,sreg               ;SREG sichern
3
 push xh                    ;temporäre Variablen
4
 push xl                    ;beschaffen
5
 push wh
6
 in xl,ocr1bl               ;Zeitstempel dieses Interrupts
7
 in xh,ocr1bh               ;einlesen
8
 subi xl,low(-oc1binterval) ;Intervall zum nächsten
9
 sbci xh,high(-oc1binterval);Interrupt addieren
10
 out ocr1bh,xh              ;und in Referenzregister
11
 out ocr1bl,xl              ;zurückschreiben
12
 ;der 'Termin' für den nächsten Interrupt ist nun gesetzt
13
14
 ;eigentliche Arbeit des Interrupts...
15
16
 pop wh
17
 pop xl                     ;temporäre Variablen
18
 pop xh                     ;entsorgen
19
 out sreg,srsk              ;SREG wiederherstellen
20
 reti                       ;fertig...

...

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.