Hallo,
ich will meinen Mikrocontroller alle 8 Sekunden wecken und Daten
auslesen lassen. Das würde ich gerne mit dem WDT machen.
Dazu habe ich diesen configuiert:
1 | void watchdog_timer(void) {
|
2 | WDTCSR = (1 << WDCE) | (1 << WDIE);
|
3 | WDTCSR = (1 << WDIE) | (1 << WDP3) | (1 << WDP0); // 8 Sekunden
|
4 | }
|
5 |
|
6 | ISR(WDT_vect) {
|
7 | // Daten messen/anfordern ...
|
8 | }
|
Und meine Main sieht dann so aus:
1 | int main(void) {
|
2 |
|
3 | watchdog_timer();
|
4 |
|
5 | while(1) {
|
6 |
|
7 | set_sleep_mode(SLEEP_MODE_PWR_DOWN);
|
8 | cli();
|
9 | sleep_enable();
|
10 | sei();
|
11 | sleep_cpu();
|
12 | sleep_disable();
|
13 | }
|
14 | return 0;
|
15 | }
|
Leider klappts aber nicht.
Zum Testen lasse ich einen PORT mit LED dran in der while(1) toggeln.
Die LED flackert mit hoher Frequenz vor sich hin.
Was mache ich falsch?