Hallo zusammen,

und zwar habe ich in meinem Programm ein paar Fehler:
- der Servo bekommt keine Wert. Vermute es liegt daran, dass ich mit
Variablen arbeite, weil wenn ich direkt die Werte an den Servo gebe, also
ohne Variablen, dann geht es. Könnte es sein, dass ich einen andere
Datentyp anstelle von "WORD" nehmen muss? Wenn ja welcher???

- das zweite Problem ist, dass die Cases auch nicht funktioneren. Hatte es
mir so vorgestellt, dass ich die Variable Z immer um 1 erhöhe, und so von
Case zu Case gehe. Wenn Z = 3 ist soll sie wieder auf 0 gesetzt werden.
Und das ganze beginnt von vorn.
Entweder es liegt hier auch wieder am Datentyp oder es geht nicht so,
dass ich "Select Case Z " nicht schreiben kann oder darf, wenn danach
immer "Case 1", "Case 2" oder "Case 3" aufgerufen werden soll.

Wäre super gut, wenn ihr mir weiter helfen könntet!!!
Wenn ihr eine Alternative habt, ist sie herzlich willkommen, nur würde ich
gern "Waitms" vermeiden.

Grüße High Light

Hier noch der Code:

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 Word
Servostellung1 = 90
Dim Servostellung2 As Word
Servostellung1 = 110
Dim Servostellung3 As Word
Servostellung1 = 130

Dim Xpos1 As Byte

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

'Datenausgabe

Config Portd.1 = Output
Config Portd.2 = Output
Config Portd.3 = Output
Config Portd.4 = Output

'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 Word
Dim Z As Word
Dim Z2 As Word
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 = 1


If T = 1 Then
   Select Case Z

   'Servostellung 1
   Case 1:

     Servo(1) = Servostellung 1
   T = 0

   'Servostellung 2
   Case 2:

     Servo(1) = Servostellung 2
    T = 0

   'Servostellung 3
   Case 3:

     Servo(1) = Servostellung 3
    T = 0

   End Select
End If

Loop

End


Isr_von_timer1:                                             'ISR von Timer1
Timer1 = 3035

If Z >= 3 Then
Z = 0
End If

Z = Z2
Z = Z2 + 1
T = 1

Return