www.mikrocontroller.net

Forum: Compiler & IDEs Tastaureingabe ohne warten zu müssen abfragen


Autor: Martin spors (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo erstmal.
In dem Tutoria2l "I/O Grundlagen" stand am ende folgender Satz:

>>>Dieses Programm wartet so lange in eine Schleife ("loop:"..."rjmp
loop"), bis Bit 0 im Register PIND 0 wird, also die erste Taste
gedrückt ist.<<<

Ich habe auch ein Programm, das innerhalb einer schleife eine
tastaturabgabe macht. (Programm ist in C, nicht ASM) Jetzt stellt sich
dort das Problem, das die Schleife immer auf eine Tastatureinage
wartet, also nur durchläuft wenn ich eine Taste drücke.

Ich würd es aber gerne so habe, dass die schleife immer läuft und ich
die Taste dennoch abfragen kann. Die Tastenabfrage soll nämlich ein
frühzeitiges abbrechen der Schleife ermöglichen, wenn es eine andere
möglichkeit gibt, die Schleife auf Tastendruck zu beenden, als eine
simple Tastanabfrage wär mir das auch recht, solange ich nicht immer
was drücken muss, damit das Programm ausgeführt wird :-)

Danke für die Hilfe. cya

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Martin!
Wieso legst du die Taste nicht auf einen interruptfähigen Pin und
bastelst dir die entsprechende Interrupt-Routine?
Schön Gruß
Rahul

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Rahul

"Wieso legst du die Taste nicht auf einen interruptfähigen Pin"

Weil sie dann prellt wie Sau, aber das hat man ja schon zur Genüge
durchgekaut. Es gibt doch viel einfachere Lösungen, z.B.:

http://www.mikrocontroller.net/forum/read-4-20549.html


Peter

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Peter:

So wie ich Martin verstanden habe, möchte er sein Programm nicht mit
unnötigem Warten auf eine Taste anhalten. Wenn er den Flankenwechsle
der Taste mit einem Interrupt erkennt, kann er sie nachträglich immer
noch entprellen, sofern der Interrupt gesperrt ist (so kenn ich das
noch auch 8051-Zeiten).
Gruß Rahul

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

ich schreibe solche schleifen in C so:

for(;;)
{
  if (PINB&0x01)
  {
    break;
  }

  //Tue irgendwas während der Schleife
  //z.b.:
  temp=temp+10;
  temp=temp-10;
}

Solange der PINB.0 LOW-Potential hat, wird die Schleife immer
wiederholt. In der Schleife kann z.B. eine Messwertabfrage o.ä.
stehen.
Wenn nun der PINB.0 High-Potential führt, wird meine for-Schleife
abgebrochen.

Gruß, Florian

Autor: Martin spors (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die vielen Tipps. das mit dem Pin ist klar, das Problem ist
aber, dass es sich nicht um einen Schalter, sondern um eine Tastatur
handelt, die abgefragt werden soll, deswegen geht das ganze so leider
nicht :-(

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
doch, das geht genauso. Du mußt nur so schnell abfragen, daß du keinen
Tastendruck versäumst. Für einen µC kein Problem.

---- (QuadDash).

Autor: Florian Pfanner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für eine Tastatur??? - wenn es eine PC-Tastatur ist, so kannst du
die in einer Application note beschriebene schaltung verwenden. Da ist
alles Interruptgesteuert (Abfrage bzw. Empfangen der Tastatursignale).
Wenn du ein Zeichen empfangen hast, kannst du eine Variable setzen. In
der Schleife frägst du dann die Variable ab, ob eine Taste empfangen
wurde oder nicht und danach den weitern verlauf der schleife
bestimmen.

Gruß, Florian

Autor: Rahul Ghose (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Sollte es sich um eine 4x4-Tastatur handeln, gibt es direkt bei Atmel
eine Application Note (AN240 etwa). Dabei handelt es sich um eine
hexadezimale Tastatur. Die Funktionsweise ist recht einfach und braucht
nur einen Port.
Eine PC-Tastatur abzufragen ist etwas unständlicher, aber lösbar.
Notfalls gibt es auch fertige Code-Schloss-IC.
Gruß Rahul

Autor: Sam (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was für möglichkeiten gibt es, eine Pc-Tastatur über die Ports
abzufragen, oder gibt es fertige Schaltungen oder Ics, wenn ja welche?

Gruß Sam

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es gibt bei Atmel eine Appnote.

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.