Hallo Hermann,

ich hatte es mit dem folgendem Programm probiert.
Hier erfolgt eine serielle Ausgabe allerdings nur, wenn eine Taste gedrückt wurde.
Code:
int main(void)
{

  unsigned char sw;

  Init();
  
  DDRD |= (1 << DDD1);	// Port D1 als Ausgang
  PORTD &= ~(1 << PD1);	// PD1 auf LOW
  ocr2 = 0xFE;
  while (1)
  {
    UCSRB = 0;
    OCR2 = ocr2;

    if (PIND & (1 << PD0))
      StatusLED(GREEN);
    else
      StatusLED(RED);

    sw = PollSwitch();
    if (sw & 0x01)
      ocr2  = 0xFE;	//Pulsbreite 1
    if (sw & 0x02)
      ocr2  = 0xFD;	//Pulsbreite 2
    if (sw & 0x04)
      ocr2  = 0xFB;	//Pulsbreite 4
    if (sw & 0x08)
      ocr2  = 0xF7;	//Pulsbreite 8
    if (sw & 0x10)
      ocr2  = 0xEF;	//Pulsbreite 16
    if (sw & 0x20)
      ocr2  = 0x90;	//Pulsbreite 110

    if (sw)
    {  
      OCR2 = 0x91;
      PrintInt(sw); 
      SerPrint(" ");
      PrintInt(ocr2); 
      SerPrint("\r\n");
    }
//    Msleep(100);
  }
  return 0;
}
Mit deinem Programm bekomme ich dasselbe Ergebnis wie du. Merkwürdig.