Hallo,
also. Was ich bis jetzt herausgelesen habe ist, dass der TCB im
asyncronen Modus funktioniert nur im Single Shot Mode erlaubt ist. Laut
Beschreibug im Manual. Ich denke auch das benötigt der TO nicht. Wenn
das wird der Eingang der gesamten Übung, also Pin PA4, im Event System
asyncron konfiguriert. Meine Meinung. Ich würde erstmal versuchen alles
normal syncron zum laufen zubekommen, dann hat man eine Basis um danach
asyncron auszuprobieren.
TCB sollte so erstmal richtig sein.
1 | void initTCB0 (void)
|
2 | {
|
3 | TCB0.CTRLA = TCB_CLKSEL_CLKDIV2_gc; // CLK_PER divider
|
4 | TCB0.CTRLB = TCB_CNTMODE_FRQPW_gc; // Capture Mode
|
5 | TCB0.EVCTRL = TCB_CAPTEI_bm; // Enable Event Input and Event Edge
|
6 | TCB0.INTCTRL = TCB_CAPT_bm; // Enable Capture interrupt
|
7 | TCB0.CTRLA |= TCB_ENABLE_bm; // Enable TCB0
|
8 | }
|
9 |
|
10 | ISR(TCB0_INT_vect) // Bsp.
|
11 | {
|
12 | counter.periode = TCB0.CNT; // read out CNT first, then CCMP
|
13 | counter.pulsweite = TCB0.CCMP;
|
14 | TCB0.INTFLAGS = TCB_CAPT_bm; // Clear the interrupt flag
|
15 | }
|
Das Eventsystem ist umfangreicher im Vergleich zu meinem ATmega.
Da müßte ich mich erst noch mehr einlesen.
Was stimmen müßte als Anfang wäre
1 | EVSYS.SYNCCH0 = EVSYS_SYNCCH0_PORTA_PIN4_gc; // Synchronous Event from Pin PA4
|
Jetzt fehlt noch diesen Sync-Channel-0 dem TCB Capture Eventeingang zu
zuweisen.
Bei meinem ATmega reicht das hier:
1 | EVSYS.CHANNEL0 = EVSYS_CHANNEL0_PORTA_PIN4_gc; // set Pin PA4 as input event
|
2 | EVSYS.USERTCB0CAPT = EVSYS_USER_CHANNEL0_gc; // Connect user to event channel 0
|
Beim ATtiny416 ist das anders, sollte jedoch in gewisser Weise ähnlich
sein. Vielleicht 1-2 Zeilen mehr? Was bei deinem Code fehlt ist genau
diese Zuordnung. Du hast mittels TCB0.INTCTRL Register den Timer für das
Eventsystem konfiguriert. Aber das Eventsystem gibt an den
Timer-Eventeingang noch kein Signal weiter. Hier fehlt noch wie gesagt
die Zuordnung das der Sync-Channel-0 (woran der Pin PA4 zugewiesen
wurde) an den TCB0 weitergereicht werden soll. Die Optionsvielfalt
erschlägt mich jetzt auch ...