Danke für die Erklärung!
So, hier nun die neusten Ergebnisse meiner Tests der Ein- bzw. Ausgänge:
Ich habe mal eine kleine Testschaltung gebaut, bei der ich jeweils eine LED mit Vorwiderstand vom jeweiligen Pin (Pinb.3 und Pinb.4) des AT's an Masse gelegt habe. Eine LED zeigt mir den Programmschritt an, die andere den Zustand des Ein- bzw. Ausganges. Das Programm dazu befindet sich im Anhang.
Ergebnis: Eine an einen Ausgang gesendete '1' wird im Register gespeichert (logo!), beeinflußt aber auch das Ergebnis beim Einlesen, wenn dieser Pin nun als Eingang geschaltet wird. Es scheint, als wenn beim Umschalten auf Eingang das Register nicht vollständig 'abgekoppelt' wird.
Die entsprechende LED am auf Eingang geschalteten Pin glimmt munter so vor sich hin (Spannung mit LED Ausgang - Masse: 1,7 Volt); wenn ich sie rausnehme, habe ich volle 5 Volt.
Setze ich den Pin als Ausgang vorher auf '0', dann bleibt diese ebenfalls erhalten, wenn ich den Pin auf Eingang schalte; die LED bleibt dunkel und das Voltmeter zeigt nahezu null Volt.
Eine testweise gegen +Ub geschaltete LED verrät mir noch etwas anderes: Bei einem als Eingang geschalteten Pin gibt es, egal ob vorher eine '1' oder '0' auf den Ausgang gegeben wurde, keine (niederohmige) Verbindung zu Masse wie die zu +Ub.
Damit und somit kann ich 'meine' Idee wohl vergessen! Die LED bzw. ihre Kapazität kann so nicht entladen werden...
Viele Grüße,
Radio Eriwan
Code:
' '
$regfile = "2343DEF.dat"
$crystal = 1000000
'
Config Portb = &B00011000
Portb = &B11100111
'
Dim A As Bit
'
Do
'
Gosub Led_1
Portb.4 = 0
Wait 5
Gosub Led_2
Portb.4 = 1
Wait 5
Gosub Led_3
Config Portb.4 = Input
A = Pinb.4
Wait 5
Gosub Led_4
Config Portb.4 = Output
Wait 5
'
Loop
'
Led_1:
Portb.3 = 1
Waitms 50
Portb.3 = 0
Return
'
Led_2:
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Return
'
Led_3:
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Return
'
Led_4:
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Waitms 50
Portb.3 = 1
Waitms 50
Portb.3 = 0
Return
'
End
Lesezeichen