Gast
#1961326
Hallo, ich habe hier auf einem AT90CAN128 eine PWM als Fast-PWM (Mode 14) laufen. Alles wunderbar. Nun möchte ich periodisch für eine sehr kurze Zeit (ca 400us was kleiner als die PWM Frequenz ist (1000Hz bzw 250Hz) gerne den PWM Pin auf high legen, damit ich einen definierten high Pegel für eine bestimmte Aktion habe. Wenn ich den Dutycycle auf 100% setze bekomme ich ein unregelmäßiges Verhalten, da ich ja schneller als die PWM Frequenz sein will und der Wert für den Dutycycle ja immer erst nach Ablauf einer Periode umgeladen wird. Meine Idee war nun den Portpin zu entkoppeln. Was ich mit dem Umschalten auf Mode 0 mit folgender Funktion beabsichtige.
1 | |
2 | |
3 | |
4 | |
5 | |
6 | |
7 | |
8 | |
9 | |
10 | |
11 | |
12 | |
13 | |
14 | |
15 | |
16 | |
17 | |
18 | |
19 | |
20 | |
21 | |
Dann setze ich den Pin auf high (Ausgang ist er ja bereits). Scheint alles auch zu klappen. Wie bekomme ich nun wieder das PWM Signal? Ich habe gedacht, ich muss nur den Pin wieder an den Timer koppeln und dafür den Mode mit obiger Funktion wieder auf 2 stellen, so wie er vorher war. Aber das scheint nicht zu klappen. Vorm Funktionsaufruf setze ich den Pin wieder auf low und erhalte nun nur noch einen kurzen Puls entsprechend meines periodischen Aufrufs. Muss ich die PWM komplett neu initialisieren? Eigentlich habe ich das so verstanden, dass die PWM bzw. der Timer im Hintergrund einfach weiter läuft. Das Neuinitialisieren würde ja auch relativ lange dauern. Ich möchte den normalen PWM Ablauf so kurz wie möglich stören. Über Hilfe wäre ich sehr dankbar, da ich jetzt hier schon einige Zeit rumprobiere. Danke. Gruß Max