Forum: Compiler & IDEs Attiny 44 Timer1 im CTC für ADC Autotrigger ?


von Dominic B. (southarsch)


Lesenswert?

Hallo zusammen,

habe da ein kleines Problem über das ich mir schon eine Weile den Kopf 
zerbreche. Ich möchte mit einem Attiny44 über Autotrigger Modus in 
festen Zeitintervallen ein ADC-Sampling starten. Soweit so klar. Nun 
wollte ich dafür den Timer1 und Timer Compare Match B benutzen und den 
Timer1 im CTC Modus für OCR1BH / OCR1BL betreiben. Leider kann ich im 
gesamten Datenblatt nicht finden, wie man den Timer1 in den CTC Modus 
für OCR1B setzt, OCR1A habe ich gefunden, aber OCR1A Compare Match kann 
nicht als Trigger Source für den ADC ausgewählt werden, so dass ich auf 
OCR1B angewiesen bin.

Hat jemand vieleicht ne idee wie ich das Problem lösen kann ?

von Stefan E. (sternst)


Lesenswert?

Dominic Burkhardt schrieb:
> Leider kann ich im
> gesamten Datenblatt nicht finden, wie man den Timer1 in den CTC Modus
> für OCR1B setzt, OCR1A habe ich gefunden, aber OCR1A Compare Match kann
> nicht als Trigger Source für den ADC ausgewählt werden, so dass ich auf
> OCR1B angewiesen bin.
>
> Hat jemand vieleicht ne idee wie ich das Problem lösen kann ?

CTC mit OCR1A verwenden, und OCR1B auf einen beliebigen Wert zwischen 0 
und OCR1A setzen.

von Dominic B. (southarsch)


Lesenswert?

> CTC mit OCR1A verwenden, und OCR1B auf einen beliebigen Wert zwischen 0
> und OCR1A setzen.

HAllo,

danke für die schnelle Antwort, aber leider funktioniert es so leider 
auch nicht. Habe es ausprobiert, das Problem ist, das dann erst bei 
erreichen von OCR1A der Timer wider genullt wird, wodurch ich keine 
saubere Taktunk für den ADC bekomme.

von Stefan E. (sternst)


Lesenswert?

Dominic Burkhardt schrieb:
> das dann erst bei
> erreichen von OCR1A der Timer wider genullt wird, wodurch ich keine
> saubere Taktunk für den ADC bekomme.

Natürlich bekommst du die. Du hast immer exakt die gleiche Anzahl Takte 
zwischen den Compare-Match-B-Events, nämlich OCR1A + 1 Takte.

Dominic Burkhardt schrieb:
> aber leider funktioniert es so leider
> auch nicht. Habe es ausprobiert,

Dann hast du irgendein anderes Problem.

von Dominic B. (southarsch)


Lesenswert?

Hallo,

hast Recht, habe da einen kleine Denkfehler gemacht, hatte OCR1A 
möglichst hoch gewählt, was natürlich totaler Blödsinn ist. Im Prinzip 
ist es egal wie ich OCR1B setzte, der OCR1A legt mir die Periodendauer 
fest. Das gilt allerdings erst nach einmaligem Durchlauf, damit kann ich 
aber Leben.

Trotzdem würde mich interessieren ob es nicht eine Möglichkeit gibt den 
AutoTrigger auf OCR1A zu stellen, oder CTC für OCR1B zu aktivieren. So 
verschwende ich ja eigentlich ein Grenze.

Aber schon mal ein riesen Dankeschön für die Hilfe, mit diesem 
"workaround" kann ich arbeiten.

von Peter D. (peda)


Lesenswert?

Der Pferdefuß ist aber, Du mußt im ADC-Interrupt das Timerflag löschen 
(also setzen), sonst kriegst Du nie wieder einen ADC-Interrupt!
Daher nehme ich gleich den Timerinterrupt.


Peter

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.