Dafür reicht 1 TImer. Die unterschiedlichen PwM-Rampen werden dann, beispielsweise mit OCR1A und OCR1B gemacht - so laufen auch meine Motoren mit EINEM TImer und trotzdem unterschiedlichen PwM-Rampen.Zitat von manhunt
Ich hatte mir einen 50µs-Interrupt gemacht, der eine uint16_t-Variable hochzählt bis max. etwa 60000, das wären dann 3 sek. Diese Zeitmarke ist für allerlei nutzbar.Zitat von manhunt
Zum Beispiel habe ich meine Encoder auf extINT0 und ~1 gelegt, lese dort die o.g. Zeitmarke aus und verarbeite auch den möglichen Überlauf.Zitat von manhunt
Bei meinem Dottie habe ich aktuell 2 Motor-PWMs an Timer0 hängen, getrennt regelbar natürlich, das Signal nutze ich ausserdem für einen entsprechenden Takt für meine Entfernungsmessung, meine irLED mit 36 kH läuft auf Timer1, und Timer2 macht mir den erwähnten 50µs-Takt. Ausserdem bediene ich in der ISR vom Timer2 noch die Rampe für den 5ervo, auf dem mein Sharp hängt (am Strohhalm *ggggg*). Blos nicht die Übersicht verlieren *gggggggg*.
Lesezeichen