In meinem Fall müsste ich also da ich Pind.4 bis Pind.7 als Eingang nutze
eine vorherige Initialisierung wie Portd.4 = 1 Portd.5 = 1 Portd.6 = 1 Portd.7 =1 machen um den internen Widerstand zu aktivieren? Das alles natürlich nur wenn ich ein Minus Signal schalte.
...absolut korrekt!
Wenn ich ein Plus Signal schalte dann muss ich mir 4 externe Widerstände nehmen sagen wir mal 1K oder weniger um die Pins Pind.4 ... Pind.7 auf 0 zu ziehen..??
...fast korrekt - 50K reichen auch dicke aus; in dieser Größenordnung liegen auch die internen PullUp-Widerstände des Controllers. 1K würde halt schon 5 mA ziehen - bei vier Eingängen summiert sich das schon ganz schön...
Wenn ich jetzt sagen wir mal nur mit dem "d" Register arbeite muss dann die Initialisierung auch für das "b" und "c" Register erfolgen oder spielt das dann keine Rolle?
Wenn Du ganz sicher gehen willst, dass auch unbenutzte Eingänge nicht in irgendwelche undefinierbaren Zustände gehen, kannst Du auch für die restlichen I/O-Ports den PullUp aktivieren. Ist aber kein "muss".
Eine Frage habe ich noch: In Deinem Code ist ja eine Pause von 5 Sekunden. "Zappelt" das Relais denn im 5-Sekunden-Takt? Wenn´s schneller wäre, kann es eigentlich nicht am Programm liegen, denn das macht ja ohne Wenn und Aber für 5 Sekunden Pause. Das würde dann doch eher für Instabilitäten in der Spannungsversorgung sprechen.
Ob Ausgangsseitig alles okay ist, kannst Du ja mit einem kleinen Test-Code prüfen:
Code:
Config Portb.1 = Output
Do
Toggle Portb.1
wait 1
Loop
Wenn das Relais alle 1 Sekunde hin- und herschaltet, geht dieser Teil der Hardware schon mal.
Lesezeichen