Stimmt 
Jetzt gehts einwandfrei, nachdem ich Terminalprogramm geschlossen und wieder gestartet hab =D>
Thx für die Hilfe, und wieder was dazugelernt !!!
Probier jetzt ma bischen absichtliche Delays aus mit dem WD
Gruß
schamp
EDIT:
Hier nochmal die fehlerfreie Source, falls es jemanden interessiert 
Code:
#include <iom88.h>
#include <ina90.h>
#include <string.h>
#include "sw_uart.h"
void watchdog_init(void);
void sende_routine(void);
void health_check(void);
static char bTxt[24] = "\r\nHello, World\r\n";
unsigned char Flag;
#define SENDEROUTINE_M_OK 1
__task void main(void)
{
watchdog_init();
while(1)
{
sende_routine();
health_check(); // Am Ende der Hauptschleife prüfen, ob sende_routine() ordnungsgemäß ausgeführt
}
}
void watchdog_init(void)
{
__disable_interrupt();
MCUSR = 0; // Alle vorher gesetzten Flags clearen
Flag = 0;
sw_uart_init();
WDTCSR |= (1<<WDIF); // Clear WD Interrupt Flag
__watchdog_reset();
/* Setup Watchdog, bzw. Start timed sequence (wie im Datenblatt) */
WDTCSR |= (1<<WDCE) | (1<<WDE); // Watchdog Change Enable setzen
/* Set new prescaler(time-out) value (siehe Datenblatt) */
WDTCSR = (1<<WDE) | (1<<WDP3); // Timeout auf 4.0 Sekunden setzen
__enable_interrupt();
}
void sende_routine(void)
{
unsigned char bIx;
unsigned char bLn;
bLn = strlen(bTxt);
for (bIx = 0;bIx < bLn; bIx++)
{
send_one_byte(bTxt[bIx]);
// hier später delay um System Reset zu simulieren....
}
Flag |= (1<<SENDEROUTINE_M_OK); // Routine korrekt ausgeführt
}
void health_check(void)
{
if(Flag & (1<<SENDEROUTINE_M_OK)) // alles ok ?
{
Flag &=~ (1<<SENDEROUTINE_M_OK);
__watchdog_reset(); // dann Reset Watchdog
}
}
Lesezeichen