Hallo,
ich möchte, wenn ich zb 0x00 per USART sende, den watchdog starten um
den Atm. zu resetten.
Leider funtkioniert das nicht:
1 | int main (void)
|
2 | {
|
3 | //initialisierung etc hab ich hier natürlich auch gemacht
|
4 |
|
5 | USART_Transmit('S'); //zum zeichen daß er startet/resettet hat
|
6 | for (;;)
|
7 | {
|
8 | }
|
9 |
|
10 | }
|
11 | ISR(USART_RX_vect)
|
12 | {char puffer=UDR;
|
13 | if (puffer==0xff)
|
14 | {USART_Transmit('R'); //zum zeichen daß 0xff erkannt wird
|
15 | reset();
|
16 | }
|
17 | }
|
18 |
|
19 |
|
20 | int reset(void)
|
21 | {USART_Transmit('E'); //zum zeichen daß er auch resettet
|
22 | wdt_enable(WDTO_15MS);
|
23 | }
|
wenn ich jetzt 0xff sende, dann kriege ich nur das 'R' zurück, er
erkennt die 0xff also.
Allerdingt kommt danach weder ein 'E' daß er wenigstens in die reset()
funktion einsteigt, noch ein 'S' daß er neu gestartet hat.
Auch
1 | if (puffer==0xff) wdt_enable(WDTO_15MS);
|
fürht zu keinem reset, das 'S' für Programstart wird nicht gesendet.
Was läuft schief?
(ich simuliere nicht, sondern hab es auf nem breadboard laufen)