mikrocontroller.net

Forum: Compiler & IDEs Taster-Beispiel funktioniert nicht?


Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hardware: atmega8, 16x2 lcd-display

Ich habe versucht ein einfaches Taster-Beispiel ans Laufen zu bekommen, 
wie im GCC-Tutorial beschrieben.

Schaltungsaufbau hab ich nicht betrieben. Ich simuliere den Tastendruck 
via Kabel, also: Kabel von PD7 auf GND während des Betriebs.
DDRD &= ~(1 << PD7); // Port 7 auf eingang
PORTD |= (1 << PD7); // pullup
int i = 0;
if(!(PORTD & (1 << PD7)))
  i = 1;
//lcd-ausgabe von i hier

Nun bleibt i aber immer 0, egal ob ich den Tastendruck simuliere oder 
nicht. Ich steh grad echt aufm Schlauch. Egal ob ich die Bedingung in 
der If-Abfrage negiere oder nicht, es kommt immer ein konstantes 
Ergebnis heraus und nicht - wie erhofft - ein Wechsel.
Durchgemessen habe ich. am Pin liegen 5V (Also Pullup aktiv?)

Hat jemand eine Idee? Oder muss ich doch extern einen Pullup zuschalten?

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Matthias wrote:
> if(!(PORTD & (1 << PD7)))
       ^^^^^

Autor: Thomas W. (thomasw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine if-Anweisung ist immer false, da du überprüfst, ob der Pullup 
aktiviert ist und das Ergebnis dann negierst. Und den Pullup hast du ja 
gerade erst dazugeschaltet.

Du musst das Pin-Register auslesen um den Zustand des "Tasters" 
abzufragen.

MfG

Autor: Matthias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
jaaaaaaaaaa das war es. Habe tatsächlich den PIN vor lauter PORTs nicht 
gesehen... oder so!

Hatte das Problem beim Ansteuern einer Matrixtastur und dort auf genau 
die obige Bedingung reduziert. Jetzt klappt das Auslesen mit der 
Tastatur auch schon.

Dankesehr!

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.