Hallo Michael,
in vielen Fällen mag Deine Methode besser sein, als den Ausgang einfach „blind“ zu toggeln.
Damit wird aber eine trügerische Sicherheit suggeriert. Man kann den Pin-Zustand rücklesen, das ist richtig. Dieser muss aber keineswegs den gewünschten Ausgangszustand repräsentieren.
Nehmen wir an, ein Port befindet sich im HI-Zustand und soll auf LOW geschaltet werden. Jetzt tritt zufälligerweise eine Situation ein, in der die Ausgangsleitung kurzgeschlossen wird. Beim Rücklesen des Pin-Zustands wird also LOW gelesen und der Port wird daher nicht geschaltet, da fälschlicherweise angenommen wird, dass er sich bereits im richtigen Zustand befindet. Nachdem der Kurzschluss aufgehoben wurde, stellt sich wieder der nicht erwartete HI-Zustand ein. Von 100%iger Sicherheit kann dabei überhaupt keine Rede sein.
Das gerade geschilderte Beispiel ist keineswegs aus der Luft gegriffen oder unwahrscheinlich. Open-Collector Schaltungen (wie z.B. DS2405, DS2413, DS2408…) werden häufig an den Ausgängen zu einer WIRED-OR Verknüpfung zusammengeschaltet. Das heißt, dass der Zustand der Verknüpfung LOW ist, solange mindestens einer der beteiligten Ausgänge auf LOW-Pegel liegt. Auf diese Weise werden z.B. sicherheitsrelevante Mechanismen gegeneinander verriegelt.
Wenn in einer solchen Verknüpfung ein Port nach Deiner Methode geschaltet werden soll, dann führt das zum Chaos, denn es ist nicht feststellbar, ob der eigene oder einer der anderen Ports für den gerade anstehenden LOW-Pegel verantwortlich ist. Darüber hinaus ist die Fehlersuche in einem solchen System praktisch unmöglich.
Beim DS2413 und DS2408 lässt sich der Zustand des Ausgangs-Latches unabhängig vom tatsächlich am Pin anstehenden Pegel auslesen. Diese beiden liefern korrekte Informationen.
Gruß
HJH