Okay, ich dachte die Sache wäre leichter und es würde sich nur um einen Denkfehler handeln.
Um das im vollen Ausmaß zu erklären muss ich den Quellcode minimal ändern.
Code:
$regfile = "m8def.dat" 'ATmega8
$crystal = 3686411 'Quarz: 3686411 Hz
Ddrc = &B00000000
Ddrd = &B11110000 'Pin PD4 bis PD7 als Ausgänge
Do
Portd.4 = 1
Portd.5 = 0
Portd.6 = 1
Portd.7 = 0
If Pinc.0 = 1 Then 'Sensorik
Portd.4 = 0
Portd.5 = 0
Portd.6 = 0
Portd.7 = 0
Waitms 2000
End If
Loop
End
Dürfte nichts an der nun bewiesenen Korrektheit des Programms ändern.
Nun mein Problem.
An PORTD.4 bis 7 liegen 2 Getriebemotoren.
Wie man sieht sind die Motoren zunächst in Bewegung und sollen dann bei einem High-Signal auf PIN C0 stoppen.
In der Praxis zeigt sich aber folgendes: Die Motoren laufen am Anfang beide korrekt. Kommt nun das High-Signal stoppt aber nur einer der beiden Motoren. Den anderen lässt das komplett kalt.
Aber an was kann das liegen wenn der Motor der nicht mitzieht am anfang mitanläuft. Wenn ich den Motor im Quellcode deaktiviere dann läuft er auch am Anfang nicht an. Er reagiert nur auf die If-Bedingung nicht. Die lässt ihn kalt. Der andere Motor hingegen macht alles was man ihm sagt.
Lesezeichen