Forum: Mikrocontroller und Digitale Elektronik LED leuchtet, wenn Taster nicht gedrückt


von Nedec (Gast)


Lesenswert?

Hallo,

entschuldigt die Frage, aber ich mache gerade die ersten Versuche. Ich 
benutze dieses Board 
(http://shop.myavr.de/Baus%C3%A4tze%20und%20Platinen/myAVR%20Board%20MK2%20USB,%20Bausatz.htm?sp=article.sp.php&artID=41) 
und habe folgenden Code (aus dem AVR-Tutorial) drauf gebrannt:
1
.include "m8def.inc"
2
 
3
         ldi r16, 0xFF
4
         out DDRB, r16
5
6
         ldi r16, 0x00
7
         out DDRD, r16
8
9
loop:
10
         in r16, PIND
11
         out PORTB, r16
12
         rjmp loop

An Port D2 steckt der Taster, an Port B2 die LED. Eigentlich habe ich 
erwartet, wenn ich den Taster drücke, leuchtet die LED.
Leider ist es genau anders herum: Die LED leuchtet, sobald das Board mit 
Strom versorgt ist. Wenn ich den Taster drücke, fließt durch die LED 
kein Strom mehr.

So habe ich den Code verstanden: D ist der Eingang und der aktuelle 
Status von D wird (in der Endlosschleife) an den Ausgang B 
weitergegeben. Also Schalter an -> LED an.

Was läuft da schief?

Vielen Dank schoneinmal,
Nedec

von Lukas T. (tapy)


Lesenswert?

Ohne das Board zu kennen würde ich mal sagen, dass die Taster auf GND 
schalten. Du bei gedrücktem taster also eine 0 einliest. Und wenn du das 
nict-invertiert ausgibst, dann gibst du eine null aus. Also ist die LED 
aus, wenn der Eingang "aus", also der Kontakt zu GND geschlossen ist.

Abhilfe:
1
.include "m8def.inc"
2
 
3
         ldi r16, 0xFF
4
         out DDRB, r16
5
6
         ldi r16, 0x00
7
         out DDRD, r16
8
  
9
         ldi r17, 0xFF
10
11
loop:
12
         in r16, PIND
13
        
14
         eor r16, r17
15
16
         out PORTB, r16
17
         rjmp loop

Damit verknüpfst du die Eingabe mit 1 bzw. Invertierst. Dann hast du ein 
LED-Leuchten bei Tastendruck.

von STK500-Besitzer (Gast)


Lesenswert?

Invertiere einfach dein R16 zwischen den IN- und OUT-Befehlen.

von Rene K. (draconix)


Lesenswert?

Kommt drauf an ob der Schalter, Hardwareseitig, bei High oder Low 
schließt.

von Winfried J. (Firma: Nisch-Aufzüge) (winne) Benutzerseite


Lesenswert?

ist alles in Ordnung.


Der Tastereingang sieht H solange der Taster offen(über den 
Pullupwiderstand) ist und L wenn du ihn drückst.

wenn nun dieses signal auf dem anderen Port ausgegebenwird und die LED 
über den Widerstand mit Masse verbunden ist hast du eine negative Logik

von Nedec (Gast)


Lesenswert?

Ah, alles klar. :)

Danke für die schnelle Hilfe.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.