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.Zitat von ähM_Key
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.
Lesezeichen