Das hier sollte einfach auf einen ATM8 umzuschreiben sein:
Code:
$Regfile = "m32def.dat"
$crystal = 16000000
$hwstack = 48
$swstack = 32
$framesize = 32
' ### Reine Hardware-Pulserzeugung für ein einzelnes Servo, jitterfrei ###
Const WGM10 = 0
Const WGM11 = 1
Const WGM12 = 3
Const WGM13 = 4
Servopin Alias PortD.4
Config Servopin = Output ' OC1B als Ausgang
Servo_Pos Alias Compare1B ' Stellposition des Servos
Servo_Pos = 3000 ' Defaultposition, 2000 = 1ms, 4000 = 2ms
TCCR1A = Bits(WGM11 , WGM10 , COM1B1) ' Mode 15, Fast PWM, CTC
TCCR1B = Bits(WGM13 , WGM12 , CS11) ' Mode 15, Prescaler 8
COMPARE1A = 39999 ' Obere Zählgrenze
Enable Compare1A
Enable Interrupts
Do
For Servo_Pos = 2000 To 4500 ' Testcode, wechselweise Endpositionen anfahren
Waitus 80
Next Servo_Pos
For Servo_Pos = 4500 To 2000 Step -1
Waitms 1
Next Servo_Pos
Loop
End
20ms_Tick_ISR: ' ISR wir alle 20ms aufgerufen, kann für weitere Zwecke verwendet werden
Return
Bascom benötigt für den ATM8 nicht die Definitionen der WGM..., die sind bereits im .dat drin, können also entfallen. Was geändert werden muss, ist die Pindefinition für OC1B.
Lesezeichen