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.
Lesezeichen