Gast
#6266862
Warum wird vom Timer Output Compare value häufig eine 1 abgezogen (eins, -1, subtrahiert, weniger)? Ich dachte, ich hätte dazu im Datenblatt auch einen Satz gelesen - finde ich nicht mehr (http://ww1.microchip.com/downloads/en/DeviceDoc/Atmel-2586-AVR-8-bit-Microcontroller-ATtiny25-ATtiny45-ATtiny85_Datasheet.pdf). Weil der Vergleich einen Timer-Tick dauert bzw. nach einem Tick stattfindet? Demnach dauert es beim Wert 0 bereits 1 Tick. Also muss vom Sollwert (Ticks) 1 abgezogen werden. Ja? Mein "Problem" ist nämlich, dass die eingestellte deutlich von der gemessenen Frequenz abweicht. Einstellung: 16.5e6/8/43 = 47965,11 (-> OCR0B += 42); Gemessen: 24.542 kHz Rechteck * 2 = 49084 kHz Interruptfrequenz Also über 2% Abweichung. F_CPU müsste jedoch auf besser 1% eingestellt sein (micronucleus USB bootloader), also ca. zwischen 47490 und 48444 kHz liegen. Ich messe mit einem Rigol Oszilloskop. Entweder ich bin off-by-one, die Kalibrierung ist falsch, oder ich messe Mist. Ich muss wohl mal den ISP rausholen und CKOUT aktivieren zum Vergleich.
