so und hier meine routine:
Code:
'--------Definitionen für Servo------------
Config Timer1 = Timer , Prescale = 8
On Timer1 Timer1_irq nosave
Enable Timer1
Config Portc.3 = Output
Servo4 Alias Portc.3
Config Portc.1 = Output
Servo5 Alias Portc.1
Config Portc.0 = Output
Servo6 Alias Portc.0
Config Portb.0 = Output
Servo1 Alias Portb.0
Config Portb.1 = Output
Servo2 Alias Portb.1
Config Portb.2 = Output
Servo3 Alias Portb.2
Dim Servo_incr As Byte
Dim Servo_incr2 As Byte
Dim Servo(6) As Word '0-3900
Dim Servo_aus As Bit
Dim Servo_ber As Bit
Timer1_irq:
$asm
push r10
push r11
push r16
push r17
push r20
push r21
push r24
push r25
push r26
push r27
in r24,SREg
push r24
$end Asm
Select Case Servo_incr
Case 0 : Servo1 = 1
Int_daten = 0
Case 1 : Servo1 = 0
Case 2 : Servo2 = 1
Case 3 : Servo2 = 0
Case 4 : Servo3 = 1
Case 5 : Servo3 = 0
Case 6 : Servo4 = 1
Case 7 : Servo4 = 0
Case 8 : Servo5 = 1
Case 9 : Servo5 = 0
Case 10 : Servo6 = 1
Case 11 : Servo6 = 0
End Select
Incr Servo_incr
If Servo_aus = 0 Then
Incr Servo_incr2
Temp_word2 = 1000 + Servo(servo_incr2)
Timer1 = 65535 - Temp_word2
Else
Temp_word2 = 3900 - Servo(servo_incr2)
Timer1 = 65535 - Temp_word2
End If
Toggle Servo_aus
If Servo_incr = 12 Then
Servo_incr = 0
Servo_incr2 = 0
Servo_aus = 0
Timer1 = 65535 - 12000
Int_daten = 1
Servo_ber = 1
End If
$asm
pop r24
Out Sreg , R24
pop r27
pop r26
pop r25
pop r24
pop r21
pop r20
pop r17
pop r16
pop r11
pop r10
$end Asm
Return
dies ist für 6 servos... es würde bis ca. 8 gehen....
gruss bluesmash
Lesezeichen