www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR per Interrupt (Tasterdruck) ins Unterprogramm


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
Autor: Stefan Friedse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo :)

Bin ganz neu beim Thema AVR und habe eine Frage zu Interrupts. Ich hoffe 
ihr könnt mir helfen.

Ich habe einen ATMega32 und möchte per Taster an PD2 von einem 
Unterprogramm ins Andere und beim nächsten Taster-Druck wieder 
zurückwechseln. Ist das möglich? Könnt ihr mir einen Codeschnipsel 
hinwerfen? Werde aus dem AVR-GCC-Tutorial (Ich nutze gcc/studio) an der 
Stelle leider nicht schlau. Reicht als Entprellung nach dem 
Programmwechsel ein kurzer Delay?

Viele Grüße und Danke im Voraus!!

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Friedse schrieb:
> Hallo :)
>
> Bin ganz neu beim Thema AVR und habe eine Frage zu Interrupts. Ich hoffe
> ihr könnt mir helfen.
>
> Ich habe einen ATMega32 und möchte per Taster

Taster und Interrupts sind eine schlechte Idee.

> zurückwechseln. Ist das möglich? Könnt ihr mir einen Codeschnipsel
> hinwerfen?

Klar.
Die beste Methode sieht so aus
http://www.mikrocontroller.net/articles/Entprellun...

Autor: Stefan Friedse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich kenne mich ja nicht aus. Wie löst man es sonst?
Ich möchte per Taster in ein Unterprogramm und beim nächsten Tasterdruck 
wieder herauswechseln.

Autor: möööp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
mach es mit einem zustand
und frage den taster zyklisch ab

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Friedse schrieb:
> Ich kenne mich ja nicht aus. Wie löst man es sonst?

Im Link ist alles was du brauchst

> Ich möchte per Taster in ein Unterprogramm und beim nächsten Tasterdruck
> wieder herauswechseln.

Bau die Funktionalität aus dem Link ein.
Ein Aufruf von get_key_press sagt dir ann alles weitere

Autor: Stefan Friedse (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das verstehe ich leider nichtmal ansatzweise :(

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Stefan Friedse schrieb:
> Das verstehe ich leider nichtmal ansatzweise :(

Musst du auch nicht.
Das ist eine der wenigen Funktionalitäten, bei denen es ok ist, sie 
nicht zu verstehen.

Wie ein Timer funktioniert, weißt du (hoffentlich).
Das man mit einem Timer einen Overflow-Interrupt auslösen kann, weißt du 
hoffentlich auch.

Den Teil in der ISR übernimmst du einfach. Das ist ok, wenn dir das 
spanisch vorkommt.

Dann brauchst du noch die einzelnen get Funktionen und fertig.

Beim Beispiel im Link ist ganz unten die main-Funktion, die dir zeigt 
wie das alles zusammenspielt.

-> die defines noch anpassen auf den Port und die Pins an denen deine
   Tasten hängen
-> Taktfrequenz eintragen (ist nicht so kritisch)
-> ISR Code bei dir einbauen
-> Die Get Funktionen bei dir einbauen
   (du wirst fürs erste nur die get_key_press brauchen. Alle anderen
   kannst du fürs erste ignorieren)

-> Von überall her get_key_press mit der Tastenbezeichnung aufrufen,
   wo du eine Tastendruck-Abfrage brauchst

-> Sich am perfekten funktionieren der Tasten erfreuen

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




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.