Hallo zusammen,

jetzt ist es soweit, dass nächste Problem,
also der Servo fahrt nun seine Positionen an.
Immer wenn er eine Position angefahren hat, soll
ein Analogwert eingelesen, ausgewertet und dann
in ein Array geschrieben werden.
Wenn das Array mit einem bestimmten Wert beschrieben ist,
soll ein Signalausgang geschalten werden.

Code:
$regfile = "m48def.dat"
$crystal = 16000000
$baud = 9600


'Servoeinstellungen
Config Servos = 1 , Servo1 = Portd.6 , Reload = 10
Servo(1) = 90

Config Portd.6 = Output

Enable Interrupts

Dim Servostellung1 As Byte
Servostellung1 = 90
Dim Servostellung2 As Byte
Servostellung2 = 110
Dim Servostellung3 As Byte
Servostellung3 = 130

Dim Xpos1 As Byte

'StatusLED
Config Portd.7 = Output
Statusled Alias Portd.7

'Signalausgabe
Signal1 Alias Portd.0
Config Signal1 = Output

Signal2 Alias Portd.1
Config Signal2 = Output

Signal3 Alias Portd.2
Config Signal3 = Output

Signal4 Alias Portd.3
Config Signal4 = Output

Signal1 = 1
Signal2 = 1
Signal3 = 1
Signal4 = 1

'Analogeinstellungen
Const Adc_multi = 0.0048828125                              ' = 5.0 / 1024.0
Config Adc = Single , Prescaler = Auto , Reference = Avcc

Start Adc

Dim Messergebnis As Word
Dim Volt As Single

Messergebnis = Getadc(0)
Volt = Messergebnis * Adc_multi


'Arraykonfiguration
Dim Volt_list(3) As Single

'Schrittvariablen
Dim T As Byte
Dim Z As Byte
Dim Z2 As Byte
Z = 0
T = 0

'Timer
Config Timer1 = Timer , Prescale = 256                      'Konfiguriere Timer1
Enable Timer1                                               'schalte den Timer1 ein
On Timer1 Isr_von_timer1                                    'verzweige bei Timer1 überlauf zu   Isr_von_Timer1
Timer1 = 3035                                               'Timer1 soll schon von 3035 wegzählen


Do
'Statusled
Statusled = 1

'Wenn Arrayinhalt = 10 dann SignalX = 0
If Volt_list(1) = 10 Then
Signal3 = 0
Elseif Volt_list(1) = 100 Then
Signal3 = 1
End If

If Volt_list(2) = 10 Then
Signal2 = 0
Elseif Volt_list(2) = 100 Then
Signal2 = 1
End If

If Volt_list(3) = 10 Then
Signal2 = 0
Elseif Volt_list(3) = 100 Then
Signal2 = 1
End If

'Servo stellen und Analogwert auslesen und Arry schreiben
If T = 1 Then
   Select Case Z

   'Servostellung 1
   Case 2:

     Servo(1) = Servostellung1
   T = 0

         If Volt <= 3.0 Then
         Volt_list(1) = 100

         Elseif Volt > 3.0 Then
         Volt_list(1) = 10

         End If


   'Servostellung 2
   Case 4:

     Servo(1) = Servostellung2
    T = 0

        If Volt <= 3.0 Then
        Volt_list(2) = 100

        Elseif Volt > 3.0 Then
        Volt_list(2) = 10

        End If


   'Servostellung 3
   Case 6:

     Servo(1) = Servostellung3
    T = 0

       If Volt <= 3.0 Then
       Volt_list(3) = 100

       Elseif Volt > 3.0 Then
       Volt_list(3) = 10

       End If

   End Select
End If

Loop

End


Isr_von_timer1:                                             'ISR von Timer1
Timer1 = 3035

If Z >= 6 Then
Z = 0
End If

Z2 = Z
Z = Z2 + 1
T = 1

Return
Nur funktioniert nichts, der Portd.0 und Portd.1 reagieren gar nicht,
auch wenn sie dierekt geschalten werden. Portd.2 und Portd.3 kann
man direkt schalten, aber mit dem Programm funktioniert es nicht???

Also muss zum einen ein oder mehrere Fehler im Programm sein
und zum anderen versteh ich nicht, warum die ersten 2 Ausgänge nicht
reagieren???
Hat jemand eine Idee???

Grüße High Light