mikrocontroller.net

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


Autor: Nedec (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

entschuldigt die Frage, aber ich mache gerade die ersten Versuche. Ich 
benutze dieses Board 
(http://shop.myavr.de/Baus%C3%A4tze%20und%20Platine...) 
und habe folgenden Code (aus dem AVR-Tutorial) drauf gebrannt:
.include "m8def.inc"
 
         ldi r16, 0xFF
         out DDRB, r16

         ldi r16, 0x00
         out DDRD, r16

loop:
         in r16, PIND
         out PORTB, r16
         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

Autor: Lukas T. (tapy)
Datum:

Bewertung
0 lesenswert
nicht 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:
.include "m8def.inc"
 
         ldi r16, 0xFF
         out DDRB, r16

         ldi r16, 0x00
         out DDRD, r16
  
         ldi r17, 0xFF

loop:
         in r16, PIND
        
         eor r16, r17

         out PORTB, r16
         rjmp loop

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

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Invertiere einfach dein R16 zwischen den IN- und OUT-Befehlen.

Autor: Rene K. (draconix)
Datum:

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

Autor: Winfried J. (Firma: Nisch-Aufzüge) (winne)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Nedec (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah, alles klar. :)

Danke für die schnelle Hilfe.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.