Zitat Zitat von ähM_Key
Hm, keine Ahnung was das für ein Modus ist; ist ein HardwarePWM der von Timer 1 abhängt und an OC1A, B und C ausgibt.

Ursprünglich wollte ich die im Compiler integrierte 'FreqCount'-Funktion nutzen, da ich aber 2 PWM-Frequenzen erzeugen muss (Timer1) und 2 Frequenzen einlesen möchte (Freqcount braucht für jede Frequenz nen eigenen Timer) und der Atmel nur 2 Timer (1 und 3 [desswegen Timer2 nicht möglich]) hat, geht das nicht.

Ja, in 5ms müsste sich einiges reißen lassen...
Wobei wenn ich jetzt dran denke, dass ich aufgrund der auch benötigten ADC-Wandlung 12ms 'Zwangs Pause' einlegen muss - tja, da wird mal wohl nicht um Multitasking drum rum kommen und stat nem Delay Sleep nutzen; naja bis jetzt ist das aber alles in dem Testprogramm noch nicht implementiert, kann also auch keine Fehlerquelle sein.
Die von deinem Compiler zur Verfügung gestellten Goodies sind bestimmt nett -- wenn man ausser denen sonst nichts braucht. Da gibt es einige Abhängigkeiten, wie du schon bemerkt hast.

Ein MUSS ist zu wissen, was in deinem Programm abgeht, also auch was der Compiler/Laufzeitumgebung dazu tut. Etwa was ein "Systick" macht. Hört sich nach Zeitbasis an. Demnach belegt Compiler/Libfunction/Laufzeitumgebung zumindest einen Timer oder implementiert sogar ne ISR für die Ticks.

Soft-PWM ist machbar, aber du hast nen Riesen-Overhead und brauchst massig Bandbreite für deine PWM-ISR. Ausserdem kannst du mit einem gründlichen Jitter auf der so generierten PWM/Frequenz rechenen.

Mega64 hat 4 Timer.
Timer0: 8 Bit,
Timer1: 16 Bit, PWM, InCapt, CTC
Timer2: 8 Bit, PWM, CTC
Timer3: wie Timer1

Du brauchst ja schon 2 Timer für die 2 PWM-Frequenzen. Oder sind's 2 PWMs bei der gleichen Frequenz?

Auch denkbar: Den InCapt via externem IRQ nachbilden. Das erhöht die Ungenauigkeit und geschachtelte IRQs müssen zugelassen werden:
Die EXT-IRQ darf alle anderen ISRs unterbrechen, ist selbst aber ununterbrachbar. Zumindest bis zu dem Zeitpunkt, wo sie TCNTx liest. IMHO ist das nicht nötig, weil genug Timer da sind.

Für den ADC gibt's auch ne IRQ, warten braucht man nicht.