Hallo zusammen,
ich möchte erstmal zum Testen ein Programm schreiben, das mit
eingeschaltetem Pullup ausliest, ob die Verbindung PB0 zu Ground (über
1kO) geschlossen ist, und dann eine LED an PB3 zum Leuchten bringt,
falls ja.
Bei diesem Code:
1
.include "tn13def.inc"
2
rjmp Start
3
Start:
4
sbi ddrb, 3
5
sbi portb, 0
6
sbi portb, 1
7
Anfang:
8
sbic pinb, 0
9
rjmp Anfang
10
sbi portb, 3
11
rjmp Anfang
Kommt immer Dauerleuchten.
Was mache ich falsch?
Vielen Dank für eure Hilfe!
Wie willst du den sbi portb, 3 erreichen?
Den PB0-Pin kannst du direkt auf GND legen. Mit dem 1 K - Widerstand
ergibt sich zusammen mit dem Pullup ein Spannungsteiler, der den Pin
dann irgendwo im Niemandsland hängen läßt. (Das kannst du mit einem
Voltmeter gegen Masse messen.)
Der Widerstand sollte besser mit der LED in Reihe geschaltet sein.
Uhu Uhuhu schrieb:
> Mit dem 1 K - Widerstand> ergibt sich zusammen mit dem Pullup ein Spannungsteiler, der den Pin> dann irgendwo im Niemandsland hängen läßt. (Das kannst du mit einem> Voltmeter gegen Masse messen.)
So niederohmig ist der Pullup nun auch wieder nicht.
Bei diesem Code:
.include "tn13def.inc"
rjmp Start
Start:
sbi ddrb, 3
sbi portb, 0
sbi portb, 1
Anfang:
sbic pinb, 0
rjmp b
sbi portb, 3
rjmp Anfang
b:
cbi portb, 3
rjmp Anfang
immer noch das gleiche.
Alex |_. schrieb:
> Oh gott wie unaufmerksam von mir> So jetzt soll's gehen
Kann nicht sein.
Es MUSS einen sbi und einen cbi geben.
Solange im ganzen Code nur sbi vorkommen kann es nicht sein, dass
die LED einmal ein- und einmal ausgeschaltet wird.
Hallo Alex,
vielen Dank.
Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.
Ist das richtig so, oder eine Fehlfunktion?
Verwechsele ich gerade Pullup und -down?
Rolf schrieb:
> Hallo Alex,> vielen Dank.> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.> Ist das richtig so, oder eine Fehlfunktion?
Das kommt drauf an, wie deine LED verschaltet ist.
Ist deine LED vom Portpin nach GND verschaltet, dann wird sie mit einer
1 am Ausgang eingeschaltet
Ist die LED vom Portpin nach Vcc verschaltet, dann wird sie mit einer 0
am Ausgang eingeschaltet.
Rolf schrieb:
> Sie ist von PB3 nach Ground geschaltet, also doch eine Fehlfunktion?
Mit Sicherheit nicht.
Ungewolltes Verhalten ist zu 99.9999% immer ein Programmierfehler.
Rolf schrieb:
> Wenn VCC gegenüber RES liegt, leider ja!
KLemm mal deinen Draht ab, nimm ein Multimeter und miss mal nach welche
Spannung du am Pin PB0 misst (ohen das sonst irgendetwas dranhängt)
Da du den Pullup eingeschaltet hast, müssen da +5V vorhanden sein.
Rolf schrieb:
> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.> Ist das richtig so, oder eine Fehlfunktion?> Verwechsele ich gerade Pullup und -down?
Das wolltest du doch auch, oder?
Siehe Beitrag 1.
PinB0 = 0V LED soll leuchten?
Alex |_. schrieb:
> Rolf schrieb:>> Wenn ich jetzt PB0 an VCC schließe, geht die LED aus.>> Ist das richtig so, oder eine Fehlfunktion?>> Verwechsele ich gerade Pullup und -down?>> Das wolltest du doch auch, oder?
Schon. Aber die Logik ist falsch.
Eigentlich sollte der Pin per default auf High sein (wegen
eingeschaltetem Pullup) und eine Verbindung mit GND löst den
Schaltvorgang aus.
Ob die LED jetzt bei 1 leuchtet oder nicht, ist erst mal ziemlich
uninteressant. Wichtig ist, warum der Pullup nicht wirkt.
Hmm. Kann es sein dass da ein Misverständnis vorliegt
Vcc .... 5V
GND .... Masse
So sind die Begriffe aufzufassen.
(aber wenn er das verwechselt hätte, dann hätte sein Messgerät negative
Spannungen angezeigt)
Hallo Karl Heinz,
ich habs nun mal so probiert.
Immer wenn ich den Taster drücke leuchtet die LED (von PB1 -GND),
allerdings viel zu dunkel, wieso ist das so?
Vielen Dank!