Hallo!
Ja das müsste stimmen, bin dann beim googeln später auch darauf gestoßen.
So, nun wollte ich einen PIN für PWM und einen zur Frequenzausgabe (Schrittmotortakt), das mit der Frequenz ist schwieriger.
Da PWM nur mit Timer1 geht musste ich Timer0 nehmen -> der hat aber nur 8Bit, da ist die geringste Frequenz 4000Hz.
Das Ganze habe ich so gelöst.
Code:
$regfile = "m8def.dat"
$crystal = 16000000
Config Portb.1 = Output
Config Portb.2 = Output
Mot Alias Portb.2
Dim N As Word
Dim Dreh As Word
Config Timer1 = Pwm , Pwm = 8 , Prescale = 8 , Compare A Pwm = Clear Down
Config Timer0 = Timer , Prescale = 8
On Timer0 Inter
Enable Timer0
Enable Interrupts
Do
Dreh = 150
Compare1a = Dreh
Loop
End
Inter:
Timer0 = Dreh
Incr N
If N > 60 Then
Mot = 1
Else
Mot = 0
End If
If N = 120 Then
N = 0
End If
Return
Ich musste im Interrupt eine Art Zählerschleife mit Übertrag einbauen.
Mir ist dieser Lösungsweg etwas unbequem und frisst viel Ressourcen.
Kann man das nicht eleganter lösen???
Vielen Dank!
Lesezeichen