www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Button geht nur manchmal (selten!)


Autor: Erdnuckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe das AVR-Starterboard aus dem Shop. (LED an C5, Button an D2).
Bei Versuch das Avr-Tutorial auf dieser Seite nachzuvollziehen habe ich 
ein Problem:

Die vorgestellten Codes zum Thema Button gehen bei mir gar nicht (keine 
Veränderung).

Hier mein Versuch:



.include "m8def.inc"

  ldi r16, 0xFF  ; C wird Ausgang
  out DDRC, r16

  ldi r16, 0x00  ; D wird Eingang
  out DDRD, r16

  ldi r16, 0xFF  ;Pullup-Widerstand für D
  out PORTD, r16

ende:
  NOP
  NOP
   in r16, PIND  ; D lesen
  ldi r17, 0x00
  cp r16,r17  ;D==0?
  brne notpressed
  ldi r16,0xFF  ;Nein: LED aus
  rjmp schalten

notpressed:
  ldi r16,0x00  ;Ja: Lampe an
  rjmp schalten
schalten:
  out PORTC, r16  ;Wert setzen
  rjmp ende




Die LED leuchtet immer, soll ausgehen wenn Knopf gedrückt wird. Das 
klappt gaaaanz selten mal. Entprellen sollte hier ja keine Rolle spielen 
da es um Knopf gedrückt halten geht?! Hat jemand ne Idee was ich falsch 
machen? Danke im Voraus!

Autor: Stefan B. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn du an PortD alle Pins auf Eingang hast und alle internen Pullups 
an: Welches ist dein Ruhezustand, also der Wert beim Einlesen von PIND? 
0xFF

Und wenn du einen Pin per Taster auf 0 ziehst z.B. PD0? Wie sieht dann 
PIND aus? 0xFE.

Und wpmit vergleichst du den eingelesenen Wert?

> ldi r17, 0x00
> cp r16,r17  ;D==0?
> brne notpressed

Mit 0x00, d.h. dem Fall wenn alle Pins an PortD gegen 0 getastet sind.
Du musst dich auf den einen Pin konzentrieren an dem dein Taster hängt!

Wie das geht steht im Artikel 
http://www.mikrocontroller.net/articles/AVR-Tutori...

Autor: Erdnuckel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Woohooo!

Danke schön!!!

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.