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







Könnte es sein, dass ich einen andere
Zitieren

Lesezeichen