mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Eine Taste in mehreren Menüebenen benutzen Geht das


Autor: Thomas Suschinski (suschi)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
Hallo alle zusammen...

...seit etwa zwei Wochen beschäftige ich mich nun mit der AVR 
Programmierung mit dem AVR Studio Assembler. Zum testen und probieren 
habe ich mir das Pollin Board 2.0 und einige Attiny 2313 gekauft und das 
Forum in die Lesezeichen gezogen. Als LCD muß ein 4x27 herhalten. 
Hintergrund ist, eine Relaisplatine eines Röhrenverstärkers 
(Eingangskanäle) abzufragen und den jeweiligen Schaltzustand (Kanal) 
anzuzeigen. Alles in allem funktioniert das soweit auch ganz gut. Nun 
wollte ich noch mit einem Taster ein Menü aufrufen. Der Taster sitzt 
rechts neben der letzten LCD Zeile. Mit druck auf den Taster (PB7) wird 
das Menü auch angezeigt. Jetzt das Problem.: Der Taster soll nun in 
diesem zweiten Menü als Exit Taste dienen. Also frage ich in wieder mit 
sbis ab und verweise bei gedrückten Taster in die loop1, also mein 
Hauptprogramm. Leider funktioniert das nicht. Nehme ich den freien PB6 
läuft es. Grundlegen könnte man sagen ich möchte mit demselben Taster im 
Hauptprogramm das Menü aufrufen, und im Menu Exit zum Hauptprogramm 
zurück. Kann mir da jemand weiterhelfen? Bin wie gesagt Anfänger und für 
Verbesserungen/Optimierungen immer zu haben. Sieht vielleicht alles 
komisch aus, aber zumindest zeigt es mir auf dem LCD schonmal an was ich 
möchte. Danke an alle..

Gruß Suschi

Autor: Stefan Wimmer (wswbln)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
...Du solltest zwischen der "sbis PINB,7" Abfrage in Loop1 und der im 
Menue mal darauf warten, dass die Taste mindestens auch mal wieder 
losgelassen wird. Ausserdem könnte eine Entprellung nichts schaden 
(siehe Tutorial und viele viele bunte Threads hier)...

Autor: M. V. (-_-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Dein Problem ist offensichtlich, dass du nur den Tastenzustand, nicht 
aber die Zustandsänderung abfragst.
Was passiert ist klar: In der Mainloop wird der Taster erkannt, das Menu 
aufgerufen. Da der Taster aber noch nicht wieder losgelassen wurde(man 
beachte die Geschwindigkeit, mit der so ein uC arbeitet), wird nun 
wieder in die Mainloop zurückgekehrt. Das passiert dann mehrmals, ob man 
letztendlich in der Mainloop oder im Menu landet, ist somit mehr oder 
weniger zufällig.
Um die Änderung des Tastenzustands zu erkennen, muss man eine 
Flankenerkennung realisieren. Konkret heisst das: Tastenzustand abfragen 
und speichern, wenn gespeicherter Wert 1 war, und dann 0 ist, wurde die 
Taste gedrückt, wenn 0 war und 1 ist, losgelassen.
Nun prellt der Taster auch noch, dh. mehrere Tastendrücke werden 
erkannt, obwohl lediglich einmal gedrückt wurde. Auch dieses Problem 
gilt es noch zu beachten, ist aber alles in den entsprechenden 
Wikiartikeln hier nachzulesen.
Wobei es auch ansonsten mal zu empfehlen ist, sich das Wiki hier 
anzusehen, da finden sich allerlei nützliche Informationen.

AVR-Tutorial: Tasten
Entprellung

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
die ineinander geschachtelten rcalls könnten auch noch nette effekte 
geben, oder ?
an einigen stellen währen rjmps angebracht ;)

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.