Hi,

ich meinte, der Wert für den Servo, der der Funktion übergeben wird, ändert sich mit 1kHz, die Funktion selber ist so ausgelegt, 3 Servos anzusteuern. Zuerst wird der erste Servo mit dem Puls versorgt, dann der zweite und der dritte. Durch die Pulse der anderen Servos entsteht schon sowas wie eine Pause im Signal, die aber je nach Dauer der Pulse der anderen beiden Servos variabel ist. Deshalb habe ich noch 3 zusätzliche "Dummyservos" definiert, die ebenfalls angesteuert werden, und so die Pause verlängern.

Aber hier mal der Code:

Code:
$regfile = "m32def.dat"                                     'verwendeter Chip
$crystal = 16000000                                         'Taktfrequenz
$hwstack = 32                                               'HardwareStack
$swstack = 32                                               'SoftwareStack
$framesize = 32

'-----------------------------------------------------------------------'
'Timer initialisieren:                                                  '
'-----------------------------------------------------------------------'

Config Timer1 = Timer , Prescale = 8
On Timer1 Servo
Enable Timer1
Enable Interrupts


'-----------------------------------------------------------------------'
'Portdefinition:                                                        '
'-----------------------------------------------------------------------'

Config Porta.0 = Output
Servo1 Alias Porta.0

Config Porta.1 = Output
Servo2 Alias Porta.1

Config Porta.2 = Output
Servo3 Alias Porta.2


'-----------------------------------------------------------------------'
'Variblendefinition:                                                    '
'-----------------------------------------------------------------------'

Dim Servo(7) As Word                                        'Array für die Servowerte
Dim I As Byte                                               'Zählvariable
I = 1
Dim J As Word
Dim K As Byte
Dim Dummyservo As Byte
Const S = 5000


'-----------------------------------------------------------------------'
'Hauptprogramm:                                                         '
'-----------------------------------------------------------------------'

For J = 4 To 7
   Servo(j) = S
Next


Gosub Enable_servos

Do

   For J = 2500 To 3500

   Servo(1) = J
   'Servo(2) = 1500
   'Servo(3) = 1500

   Waitms 1

   Next

Loop

Enable_servos:
   Start Timer1
Return


Disable_servos:
   Stop Timer1
Return


Servo:

   Select Case I
      Case 1 : Servo1 = 0
      Case 2 : Servo2 = 0
      Case 3 : Servo3 = 0
      Case 4 : Dummyservo = 0
      Case 5 : Dummyservo = 0
      Case 6 : Dummyservo = 0
      Case 7 : Dummyservo = 0

   End Select

   Incr I

   If I = 7 Then I = 0

   '-----------------------------------------------------------------------'
   'Portpin des gewählten Servos wieder auf 1 setzen:                      '
   '-----------------------------------------------------------------------'

   Select Case I
        Case 1 : Servo1 = 1
        Case 2 : Servo2 = 1
        Case 3 : Servo3 = 1
        Case 4 : Dummyservo = 1
        Case 5 : Dummyservo = 1
        Case 6 : Dummyservo = 1
        Case 7 : Dummyservo = 1
   End Select

   Timer1 = 65535 - Servo(i)

Return
Wie gesagt, dieses Programm funktioniert wunschgemäß, im IK Programm "verpackt" allerdings, produziert die Funktion nur noch Müll...


Viele Grüße