Das hier sollte einfach auf einen ATM8 umzuschreiben sein:
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.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







Zitieren

Lesezeichen