Gast
#1681653
Hallo, ich nutze das XPLAIN-Evalboard mit dem Atmega128A1 und beschäftige mich grade mit dem Timer/Counter. Ich möchte die LEDs mit einer konstanten Frequenz von 0,5 Hz toggeln. Wenn ich die Blinkfrequenz mit dem Sekundenzeiger meiner Uhr vergleiche, blinken die LEDs nur ein zweimal synchron mit der Uhr und laufen dann schneller, bis sie irgendwann wieder "aufsynchronisiert" sind. Ist das einfach eine Toleranz die man akzeptieren muss oder mache ich einen Fehler? Ich nutze den Timer-Treiber aus der entsprechenden AppNote von Atmel: /* Set period/TOP value. */ TC_SetPeriod( &TCC0, 31249 ); /* Interrupt on */ TC0_SetOverflowIntLevel( &TCC0, TC_OVFINTLVL_LO_gc); PMIC.CTRL = PMIC_LOLVLEN_bm; sei(); /* Select clock source. */ TC0_ConfigClockSource( &TCC0, TC_CLKSEL_DIV64_gc ); Es wird also eine Periode gesetzt, die Interrupts gestartet und ein Divider von 64 festgelegt. Die Systemclock ist der interne 2MHz-Oszillator. Den Wert von SetPeriod habe ich folgendermaßen berechnet: Period = (CLKsys/(2*DIV*0,5)) - 1 ergibt (2000000/(2*64*0,5)) -1 = 31249 Meine ISR für den Overflow sieht folgendermaßen aus: ISR(TCC0_OVF_vect) { PORTE.OUT ^= 0xFF; } Danke schonmal.