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.
Nur funktioniert nichts, der Portd.0 und Portd.1 reagieren gar nicht,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
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







Zitieren

Lesezeichen