Hallo ihr Lieben,
ich bin gerade auf ein merkwürdiges Verhalten gestossen, welches ich mir nicht erklären kann. Da hatte ich in der Vergangenheit noch nie drauf geachtet, weil ich noch nie versucht hatte, den PWM- Takt zu erhöhen ...
Quelltext für den Test zum Nachvollziehen:
Code:
$crystal = 4000000
Config Pinb.0 = Output
Config Timer0 = Pwm , Compare A Pwm = Clear Down , Prescale = 1
Start Timer0
Dim Z As Byte : Dim T As Bit
Z = 0 : T = 0
Do
If T = 0 Then
Incr Z
If Z = 127 Then T = 1
Else
Decr Z
If Z = 0 Then T = 0
End If
Waitms 1
Pwm0a = Z
Loop
Verwendete Werte für den Takt: 1MHz, 8MHz, 10MHz, 20MHz
Unabhängig vom Takt erhalte ich am Ausgang immer etwa 2,2kHz. Ändere ich aber den Takt, ändert sich auch die Geschwindigkeit des Rauf- und Runterlaufens, und das nicht wie erwartet schneller werdend bei höherem Systemtakt, sondern mir unverständlich langsamer werdend! Der Systemtakt beeinflusst also nicht den PWM, wohl aber die schnöde Zählschleife, und das annährend unerwartet umgekehrt proportional?!?
Also... Nutze ich einen Systemtakt von 1MHz, dann dauert ein Zyklus (Do ... Loop) etwa 1/5 Sekunde. Setze ich den Takt auf 20MHz, dann dauert ein Zyklus etwa 4 Sekunden, bei 10MHz etwa 1,5 Sekunden ...
Hmmmm...
Mache ich da irgend wie einen doofen Denkfehler? Hab ich'n Knoten im Hirn? Kapier ich nicht *grummel*
Könnte mir mal bitte wer freundlicher Weise auf die Sprünge helfen?
BTW: Gibt es eine Möglichkeit, den Ausgangstakt des PWM zu erhöhen, also auf z.B. umzu 10kHz? Ich benötige letztlich nur ein Hochlaufen von 0-50% Puls/Pause (und wieder zurück; Dimmen eines EL- Converters)
Lesezeichen