Hmm ... ich hab eigentlich was gegen Basecom und werde daher hier sicherlich nicht die Lösung in nem Basiclisting liefern. Allerdings hab ich mal nen paar Denkansätze zu diesem Problem.
generell benötigt man nur einen Timer für dieses Problem.
nehmen könnte man z.B. den Timer 1 des Mega 32 (so einer sollte doch genommen werden oder)
diesen Timer betreibt man in dem Fall wohl am bestem im Mode 4 - CTC -> Datenblatt Seite 107
Die Frequenz wird in dem Fall über das Register OCR1A geändert ... höherer Wert -> kleinere Frequenz
Eine Bereichswahl wäre z.B. über den Prescaler möglich ... höherer Wert -> kleinerer Frequenzbereich
Das Tastverhältniss würde ich in einem Register (einer Variable) speichern .. für deinen Fall dürfte 128 der richtige Wert sein.
die 3 Offsetwerte für die Phasenverschiebung in 3 weitere Register ( Variablen)
des weiteren ist noch eine Variable als PWM Zähler notwendig ... (Wertebereich: 8 Bit)
in der ISR des Timers wir die PWM inklusive der Offsets verarbeitet
in der Hauptschleife werden die Frequenz, der Frequenzbereich, das Tastverhältniss sowie die Offsetwerte angepasst.
ansonsten kann ich nur empfehlen mal nen Blick in den Angehängten PAP für die ISR zu werfen.
Lesezeichen