-
-
Erfahrener Benutzer
Roboter Experte
Mögliches Problem:
Du hast eine Race-Condition geschaffen, nämlich wenn ein Wechsel erfolgt.
Bsp: Programm arbeitet grade die while-Schleife ab. Dann kommt die erste if-Abfrage->PortA.0 ist false, daher wird PortB.0 nicht gesetzt.
Jetzt kommt asynchron dein PC und setzt PortA.0 auf High (->true).
Dein Programm arbeitet weiter und kommt an die if-Schleife "schleife". Dort bleibt es drinnen hängen, weil ja nun PortA.0 true ist. -> Dein Programm tut nicht, was es soll...
Das bringt mich aber auf das eigentliche Problem: was soll bei dir der untere Programmteil?
Dein Programm setzt im oberen Teil immer PortB.0 entsprechend PortA.0, soweit ok. Dann aber kommt deine "schleife". Nur was bringt die dir?
Hättest du die Schleife nicht, würde das Programm wieder mit der ersten If-Abfrage weitermachen und würde zum gleichen Ergebnis führen, allerdings ohne das Problem...
MfG
Stefan
PS: kleiner Tipp am Rande - es gibt einen Simulator in MPLAB drinnen. Der ist richtig gut und damit kannst du dein Programm sehr genau unter die Lupe nehmen und mit Testdaten füttern... Schau dir den mal an...
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen