Hab ne statische Variable:
1 | static volatile uint8_t watchdog;
|
Und eine Funktion die die impulse in während 1 ms zählen soll
1 | uint8_t pruefeObSichWasTut(void)
|
2 | {
|
3 | watchdog = 0;
|
4 |
|
5 | sei(); // Interrupt enable
|
6 | _delay_ms(1); // Warte 1 ms
|
7 | cli(); // Interrupt disable
|
8 |
|
9 | return watchdog;
|
10 | }
|
und dann noch eine ISR:
1 | ISR(INT1_vect)
|
2 | {
|
3 | ++watchdog;
|
4 | }
|
Das funktioniert soweit auch ganz gut, daß Flanken erkannt werden.
Und jetzt die große Frage: Warum wird maximal bis 1 gezählt?
Also kommt keine Flanke an, wird 0 zurück gegeben.
Kommt eine oder mehr Flanken, wird 1 zurück gegeben. Auch wenn mehr als
1 Flanke kamm.