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
  }
}