@ Searcher: Die Eingänge A.7 bis A.5 scheinen korrekt "versorgt" zu sein: Die PullUps sind aktiviert, und in der Case-select-Abfrage beginnt jeder Case mit &b111... . Da sehe ich im Moment jedenfalls keinen Fehler.
@ Maik:
In solchen Fällen finde ich es immer hilfreich, das Programm in kleine Abschnitte zu "zerlegen" und diese einzeln zu überprüfen.
Du könntest z.B. "simulieren", dass die Daten korrekt aus dem PINA-Register übernommen werden, indem Du eine neue Byte-Variable einrichtest, diese alle 3 Sekunden von &b11111111 (=255) auf &b11110101 (=245) runterzählen lässt, und mit dieser Variable die Case-Select Überprüfung durchführst. Wenn sich dann alle 3 Sekunden das Lichtprogramm ändert, müssen wir tatsächlich nochmal irgendwo beim PINA-Register suchen. Praktisch würde ich das so machen:
Code:
Dim Zähler as Byte
Zähler = 255
...
do
Select Case Zähler
Case &b11111111: Call All_off
Case &b11111110: Call All_on
.....
.....
Case &b11110101: Cal Moving_net
End select
Wait 3 'das aktuelle Unterprogramm wird 3 Sek. ausgeführt
If Zähler = 245 then Zähler = 255 else Zähler = Zähler - 1 'Sorgt dafür, dass Zähler immer zwischen 255 und 245 durchläuft
Loop
(Subroutinen)
..
..
Dass man den Inhalt des PINA-Registers definitiv in eine Variable übernehmen kann (wie Searcher ja auch schon sagte!), steht außer Frage. Allerdings könnte ich mir vorstellen, dass so ein "komplexer" Befehl wie Case Select mit einem Register nicht funktioniert. Von daher wäre dann mein nächster Vorschlag, tatsächlich mit einer Variablen zu arbeiten:
Code:
Dim Zähler as Byte
..
Do
Zähler = PINA
Select Case Zähler
Case &b11111111: Call All_off
Case &b11111110: Call All_on
.....
.....
Case &b11110101: Cal Moving_net
End select
..
..
Wenn´s dann immer noch nicht geht, müsste man das Register PINA mal genauer unter die Lupe nehmen. Aber probier´ die beiden Sachen doch mal aus!
Lesezeichen