GG schrieb:
> Man muss den Port konfigurieren, dass er auf gewisse Ereignisse
> reagiert!
>
> z.B. eine Taster (steigende oder fallende Flanke)
Der Interrupt reagiert auf beide Flanken, deshalb die Abfrage. Wenn der
Schalter eingeschaltet wird, soll es eine Zeitverzögerung geben, wenn
der Schalter abgeschaltet wird soll es sofort abschalten. Die Schalter
Abfrage und die Interrupts funktionieren auch, die Konfiguration sollte
also stimmen.
Trotzdem hier noch die Initialisierung des Timers und der IO:
1 | PORTJ.DIRSET=0x38;
|
2 | PORTK.DIRSET=0xFF;
|
3 |
|
4 |
|
5 | // -=Timer Initialisieren=- //
|
6 | TC_SetPeriod( &TCC0, 0x7A10 ); //Interrupt Periode definieren, annäherungsweise 1s
|
7 |
|
8 | TC0_SetOverflowIntLevel( &TCC0, TC_OVFINTLVL_LO_gc ); //Overflow Interrupt auf Low Level erlauben
|
9 |
|
10 | PMIC.CTRL |= PMIC_LOLVLEN_bm; //low level Interrupt erlauben
|
11 |
|
12 | PORTJ.INTCTRL = 0x01; //Interrupt Level an PORTJ festlegen
|
13 | PORTJ.INT0MASK = 0x40; //Interrupt an PORTJ PIN6 freigeben
|
14 | PORTJ.PIN0CTRL = 0x00; //Interrupt auf beide Flanke einstellen
|
15 | sei(); //Interrupt einschalten
|
16 |
|
17 | TC0_ConfigClockSource( &TCC0, TC_CLKSEL_DIV1024_gc ); //Prescaler sowie Clock wählen und Timer starten
|
Kann man den einstieg in die Timer0 Periode überhaupt so machen wie ich
es wollte (TCC0.CNT - 1) oder gibt es da eine „normalere“ Variante?