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
...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)...
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
die ineinander geschachtelten rcalls könnten auch noch nette effekte geben, oder ? an einigen stellen währen rjmps angebracht ;)
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.