mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Taster abfragen Anfängerfrage


Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi!
Ich programmiere jetzt schon einige Zeit den Atmega8 mit avr-gcc, habe 
aber bisher nur mit handy-displays und leds rumgespielt, und würde jetzt 
gern den Status von Tastern abfragen..
Die Taster schliessen geöffnet den Stromkreis, bei Tastendruck wird 
selbiger unterbrochen, mir ist die genaue Bezeichnung dieser 
Schalter-Art entfallen..

Da ich auf der Platine aus Platzgründen eher schlecht mit Vcc oder Gnd 
auf den Schalter kann, hab ich die zwei Leitungen des Schalters auf PD0 
und PD1 gelegt. Dann im Programm:

----------------------------------
DDRD = 0x02  // binär: 00000010, also PD1 als Ausgang, Rest Eingänge?!
PORTD = 0xff // Pull-Up Widerstände einschalten und PD1 auf high setzen

if(!(PIND & (1 << PIND1))){
    stop_that();
}
----------------------------------

Ich habe an PORTD leds angeschlossen, die ich in stop_that() ausschalte.
Sobald das Programm des Atmegas startet, wird umgehend stop_that() 
aufgerufen, obwohl an PD1 die Ausgangsspannung von PD0 anliegt..

Was hab ich falsch gemacht?

Autor: Slowflyer (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
PIND1 ist als Ausgang High geschaltet, somit wird PIND1 immer High 
anzeigen.

Autor: Gregor B. (gregor54321)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
DDRD  |=  (1<<PD1)  // PD1 als Ausgang
DDRD  &= ~(1<<PD0)  // PD0 Als Eingang

PORTD |=  (1<<PD1)  // PD1 auf High


if(!(PIND & (1 << PIND0))) {
    stop_that();
}

PS: Und immer an das Prellen der Tasten denken...

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich glaube du meinst:


if(!(PIND & 0x01 )) //Pin D1 überprüfen
    stop_that();

Autor: Tobi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Gregor war schneller :-) Und ich meinte ja D0

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.