-
Thread
Tastaureingabe ohne warten zu müssen abfragen
Hallo Martin! Wieso legst du die Taste nicht auf einen interruptfähigen Pin und bastelst dir die entsprechende Interrupt-Routine? Schön Gruß Rahul
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)
-
Thread
80535 Projekt: Gemultiplexte 7-Segmentanzeig
80535 Microcontroller "bearbeiten": -gemultiplexte Anzeige -Umcodierung von BCD in 7Segment -Taster entprellen, genau ein Impuls unabhängig von Dauer des Drückens mit Interrupt und mit "Polling" Die Programierumgebung ist Keil uVision 2.0 in Assambler und C. Suche Tips und möglichkeiten,
: Man kann die Anzeige durch ändern des Tastverhältnisses dimmen. entprellen: Ein mechanischer Taster prellt im allgemeinen, d.h. beim Drücken schließt er nicht einfach nur, sonder schließt und öffnet mehrmals. Das liegt irgendwo im ms-Bereich, fragt man den Taster beispielsweise alle 20ms (50Hz) ab
-
Thread
Drehgeber auslesen
Dreh-Encoder (auch Jog-Rad genannt) einsetze. Damit will ich in einem Menue rumdrehen und mit der Taste am Dreh-Encoder meine Auswahl treffen (Eigentlich wird nur ein Zähler auf- oder abwärts gezählt). Die Spur A ist auf einem Interrupt gelegt, Spur B liegt auf einem Port ohne Interrupt. Erfolgt eine
Interruptroutine. Hoffenlich kann es jemand gebrauchen. #include <avr/io.h> #include <avr/interrupt.h> // #MCU ATmega16 #define Schalter_A PINA1 // Schalter A im Drehgeber #define Schalter_B PINA0 // Schalter B im Drehgeber #define Taster_P PINA2 // Taster im Drehgeber #define Geber
-
Thread
Externer Interrupt entprellen?!
aufgefallen dass der Taster prellt...und daher zählt das Programm manchmal auch die Variable um 2 oder 3 hoch. Aber die Variable soll wirklich nur EINMAL hochzählen, wenn ich den Taster betätige. Allerdings weis ich nicht
Overflow-Zeit braucht (z.B. 1ms) das man die Entprellung da einbaut. Noch was anderes: Ich hab z.B. einen Taster mit Schließer und Öffner, die beide einen Interrupt auslösen. Die Interrupts schalten sich dann selbst aus und den anderen ein. So funktioniert das Sehr gut, wenn man die Interrupts frei hat und die
-
Thread
Tasten entprellen - Bulletproof
und das ganze, wenn ich nur eine taste habe, die einen interrupt auslöst?
durchlaufen wird z.B. ich gehe mal von der situation aus das : KEY_PIN = 1 ist was bedeutet alle taster bis auf pin0 gesetzt. wenn nun KEY_PIN während 3 interrupt overflow auf 3 steht (taster pin0 u. pin1 nicht gesetzt) und beim nächsten overflow auf 2 (taster pin1 nicht gesetzt), wechselt key_state
-
Thread
Tasten entprellen
ist, sich im laufe der Zeit auch ändern kann und Störimpulse ausfiltern... Damit kann man einen Taster, wehrend er noch prellt, recht sicher auswerten.
also mal einer etwas länger prellt und dies von der Routine erkannt wird, erhöht sich die Entprellzeit um weitere 10ms, auf 50ms. Das ein Taster viel länger als 10ms prellt kommt sicherlich auch vor, aber nach 20ms ist da wohl wirklich
-
Thread
ATmega128 und die Interrupts
dazugehörige interrupt ausgelöst wird und ich kann den interrupt immer wieder auslösen. drücke ich jedoch einen andren taster im nachhinein passiert nichts. nur wenn ich den taster gedrückt halte kann ich einen andren
Folgende Punkte solltest du noch beachten: Jeder Taster prellt, daher z.b. mittels Software entprellen. Durch das Prellen wird das entsprechende Flag erneut gesetzt. Daher vor Rückkehr aus der Interrupt-Routine das entsprechende Flag zurücksetzen. Während
-
Thread
Ausgänge getrennt schalten
zwischengespeichert und mit den Eingängen xor-verknüpft. Was man noch beachten müsste: Problem bei mehr als zwei Taster (fast) gleichzeitig gedrückt und Entprellung der Taster. Gruß Thomas
ensprechende Ausgang getoggelt (xor-Verknüpfung). Entprellen ist ganz einfach: Die Eingänge mit 50 Hz im Interrupt abfragen, da braucht man sich um entprellen keine Gedanken mehr machen, kein Kontakt prellt 20ms lang...
-
Thread
AVR: Dreh-Encoder mit Interrupts
PIND.1 ist #define PHASEB (PIND & 1<<PIND2) // PIND.2 ist // phasen-check: bestimmung ob interrupt mit fallender oder steigend. //flanke. Hier verwende ich interrupt1 auch alf fallende Flanke für den //Taster void check_phase(void) { switch (PHASEA+PHASEB) { case 0: EICRA = 0x3E
(10k Pull-Up und 100nF nach Gnd) dann reicht das allemal um mit einem kleinen Drehencoder mit Taster ein Menue zu steuern rauf, runter, weiter..... Es gibt Fälle, da hat man Timer frei, aber keine Interrupts ich hatte aber das Problem, keine Timer sondern die Interrupts frei gehabt zu haben
-
Thread
Externer Interrupts löst manchmal ungewollt Reset aus
Ich vermute mal der Fehler liegt in deiner Entprellroutine und etvl. Nichtberücksichtigung der Interrupt-Flags. Da jeder Taster ja prellt muss dieses natürlich in der Interrupt-Routine nochmal zurückgesetzt werden.
Interrupt ****** Ich verwende den Taster mit Pullup. Ich kann soweit keinen Fehler erkennen. Danke und ade, Thomas H.
-
Thread
Probleme mit Taster
Hi, ich habe an den µC einen Taster mit 10k Pullup angeschlossen. In der main aktiviere ich den Interrupt outp((1<<INT0), GIMSK); //int0 einschalten outp((1<<ISC01), MCUCR); //falling edges sei(); Wenn der Interrupt
Hallo M, der Taster prellt, d.h. er schliesst und öffnet ganz kurz hintereinander ein paar mal. Je nachdem wie schnell Deine Erkennungsroutine ist, bekommst Du 2 oder mehr "Erkennungen". Lösung ist möglich, indem eine
-
Thread
gestörter µC
hife zu finden: Also folgendes Problem krieg ich einfach nicht in den Griff: Lichtsteuerung; Taster an 230V; Eingänge vom µC Optoentkoppelt; µC SX28 mit 4MHZ; Nulldurchgangsdedektor von der Netzspannung liefert Interrupt für µC; interne Clock "zerteilt" Halbwellen in 250µs Abschnitte ( eine Halbwelle
Hm, wie sehen die Fehlfunktionen denn aus? Kann es vielleicht sein das der Taster prellt? Verwendest Du bei den 1.5m auch ein längeres Kabel? Wenn ja kann es durch die größere Kapazität, auch wenn es nicht viel ist, passieren das das Prellen geglättet wird. Probiers mal mit nem