Jap so etwas hatte ich mir inziwschen fast gedacht, dass die Pins
nicht funktionieren wegen einem Fehler im Programm.
Hatte das ganze Ding schon zerlegt, Controller getauscht,
Verbindungskabel überprüft, Fehler auf Leiterplatte gesucht...
Danke, für den Tipp![]()
Das mit dem Signal2 ist ein Fehler durchs Kopieren, wurde auch geändert.
Singel wurde auch auf Byte geändert!
Und siehe da es geht schon mehr:
- Alle 4 Signale funktionieren (auch wenn ich nur 3 brauche)
- Jetzt ist es so, dass mit den ersten 3 Bewegungen, jeweils ein weiteres
Signal kommt. Nach der dritten Servobewegung ändert sich an den Signalen
nichts mehr. Alle 3 Signal sind dann da.
- Die Signale kommen egal was für ein Analogwert vorhanden ist.
Bin mir nur nicht sicher wo der Fehler liegt, so wie ich es gerad sehe,
schreibt er immer die 10 in die Arrays, egal was für ein Analogwert
ansteht.
Seh aber auch keinen Fehler im Programm, bei den Vergleichen oder beim Array beschreiben?!?
Irgendwie sollt ich sehen was in die Arrays geschrieben wird, wenn ein bestimmter Analogwert ansteht.
Ich weiß nicht mehr weiter...
Grüße High Light
P.s.: Hier noch das neue Programm:
Code:$regfile = "m48def.dat" $crystal = 16000000 '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 Pind.7 = Output Statusled Alias Pind.7 'Signalausgabe Config Pind.0 = Output Signal1 Alias Pind.0 Config Pind.1 = Output Signal2 Alias Pind.1 Config Pind.2 = Output Signal3 Alias Pind.2 Config Pind.3 = Output Signal4 Alias Pind.3 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 Byte '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 Signal1 = 0 Elseif Volt_list(3) = 100 Then Signal1 = 1 End If 'Servo stellen und Analogwert auslesen und Array schreiben If T = 1 Then Select Case Z 'Servostellung 1 Case 2: Servo(1) = Servostellung1 T = 0 If Volt <= 4.2 Then Volt_list(1) = 100 Elseif Volt > 4.2 Then Volt_list(1) = 10 End If 'Servostellung 2 Case 4: Servo(1) = Servostellung2 T = 0 If Volt <= 4.2 Then Volt_list(2) = 100 Elseif Volt > 4.2 Then Volt_list(2) = 10 End If 'Servostellung 3 Case 6: Servo(1) = Servostellung3 T = 0 If Volt <= 4.2 Then Volt_list(3) = 100 Elseif Volt > 4.2 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







Zitieren

Lesezeichen