-
Thread
Interrupt/taster
Marcel R. schrieb im Beitrag #6074287: > Die Frage wäre jetzt, wo genau ich den Taster mit einfüge? Dein Plan ist doch, dass der Tastendruck einen Interrupt auslöst. Die entsprechende ISR hast du bereits geschrieben. Das wird aber nicht wie gewollt funktionieren, weil jeder Taster
Marcel R. schrieb im Beitrag #6074408: > hab nur gedacht, man müsste den Taster nochmal extra einfügen irgendwo. Warum denn? Der Taster löst den Interrupt aus, der Interrupt sorgt dafür, dass die ISR angesprungen wird. Da fehlt nichts.
-
Thread
AVR XPlained 328PB Freigabe/Nutzung von PCINT 21
Hallo, du hast noch 2 Probleme. Der Taster prellt, musste entprellen. In der ISR tust du ver-odern nicht toggeln. Wenn es keine reine Übung ist, dann würde ich Taster nicht mittels ISR abfragen.
ein Missverständnis bezüglich der Funktion: nach Programmstart liegt C3 auf low, nach Drücken von Taster an D5 geht C3 *dauerhaft* auf high. [c] #define F_CPU 16000000 #include <avr/interrupt.h> #include <avr/io.h> ISR(PCINT2_vect){ PORTC|=1<<PORTC3; } int main (void) { PORTD|=PORTD5
-
Thread
Arduino pulseIn / pulseInlong - Taste entprellen
Tom schrieb im Beitrag #6021125: > ab einem genügend großen Rückgabewert wurde die Taste gedrückt. Und wenn der Taster mal weniger prellt?
Zeno schrieb im Beitrag #6022533: > Und wenn der Taster mal weniger prellt? Dann ist er es nicht wert ausgewertet zu werden ;) Ich persönlich bin ja immernoch ein Freund von entprellen in Hardware. RC und Schmitt Trigger Eingang mit Interrupt.
-
Thread
12 VAC Relais flattert?
es nicht flattern. Woran machst du das überhaupt fest? Kann es sein, daß dein Relais einfach nur *prellt*?
#5989860: > Was willst du denn mit dem Relais schalten? Ich ziehe nur einen Pin auf GND (wie ein Taster) um dann eine Benachrichtigung, dass jmd. geklingelt hat, zu verschicken.
-
Thread
AVR8ASM-Projekte
word(300/ KEYMGR_CYCLE_TIME +.5) KeyMgr.LongPressTime = word(800/ KEYMGR_CYCLE_TIME +.5) KeyMgr.InterruptMode = 1 KeyMgr.Init(KEY_PORT, KEYMGR_MASK, KEYMGR_REPEAT_MASK, 0) ' run on timer interrupt WDT_Init() endpart avr.Interrupts.Enable() do // Taster gedrückt if KeyMgr.KeyPress(SW1_MASK
Bernd S. schrieb im Beitrag #7489594: > Demnächst will ich einen Motor-Encoder testen, da ist per Interrupt > Pflicht. Was genau hast du nicht verstanden. Alles ? Ja, man kann Drehgeber auch mit Interrupts auswerten wenn man ein paar Millisekunden (Prellzeit) nach dem Interrupt sampelt. Aber man
-
Thread
Effezenter Drehgeber decoder in c
Pull-Up an der richtigen Stelle. https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster Aber auch damit ist die Flankenauswertung per Interrupt NICHT solide! Aber das haben wir schon mehrfach bis zum Erbrechen diskutiert. Klar, einige WOLLEN es nicht verstehen, das Dogma läßt grüßen
. schrieb im Beitrag #5918506: > https://www.mikrocontroller.net/articles/Entprellung#Einfacher_Taster > > Aber auch damit ist die Flankenauswertung per Interrupt NICHT solide! Man kann das schon solide hinbekommen, wenn man einen Schmitt-Trigger mit ausreichend großer Hysterese¹ verwendet und
-
Thread
Mehrere Tastenzustände abfragen
die Drückdauer eines Tastendrucks abzufragen. > Dabei wären 3 Zustände für mich wichtig: > > 1. Taste 0-1 Sekunde gedrückt Das kannst du erst erkennen, wenn die Taste losgelassen wurde. > 2. Taste 1-3 Sekunden gedrückt Das kannst du erst erkennen, wenn die Taste losgelassen wurde. > 3. Taste
die ersten beiden Fälle brauchst du offensichtlich eine Art Zeitmessung, die mit dem Drücken der Taste losläuft und wo du die Zeitdauer beim Loslassen der Taste abliest. Für den dritten Fall brauchst du eine Möglichkeit, die Zeitdauer periodisch abzufragen. Der Entprell-Interrupt drängt sich doch für
-
Thread
Rohde Schwarz RTM3004 - merken, wollen oder können die das nicht?
ich mich bewege. Nix für ungut. Für Verkaufsvorführungen (und Studenten im Praktikum) ist die Taste natürlich äußerst wichtig...
> Wisst ihr was ich bei Oszis am meisten vermisse? Drei bis fuenf extra > Tasten. Wenn man die laenger drueckt dann sollte so eine Taste die > komplette Einstellung abspeichern, so wie der Senderspeicher im > Autoradio und drueckt man sie kuerzer dann wird der jeweilige Zustand
-
Thread
PIC16F1933: Interrupt triggert mehrfach; Flanke zu flach?
: INTCON.GIE = 1 'Interrupt generell erlauben loop: debug_ausgang = encoder0 'WaitMs 100 Goto loop End On Interrupt If IOCBF.IOCBF0 = 1 Then 'ist eine fallende
> ich habe hier eine Schaltung mit einem PIC16F1933, wo zum Auswerten > eines Drehencoders der Interrupt-on-Change auf die fallende Flanke > verwendet wird. Dumme Frage: Warum ist es ein Problem, wenn der Interrupt-Pin prellt? Dank Gray-Code ist es doch wurscht, ob es an der Flanke ein, zwei, viele
-
Thread
Abtastung SPI-Signal
mit Priorisierung, dann kann man dem Flankeninterrupt die höchste Priorität geben, d.h. andere Interrupts zerstören nicht das Timing.
oder) fallende Flanke des RxD und mutmasst, dass da jetzt der > Beginn des Startbits ist. Also tastest du eine halbe Bitbreite spaeter > nochmal ab und guckst, ob das immer noch Startbit ist. Danach tastest du > jeweils nach einer Bitlaenge ab, bis das Byte und das/die Stoppbits > durch sind. >
-
Thread
STM32 EXTI-Entprellung mit HAL
bei 2 Interrupts für 8 Tasten (AVR) bzw. 32 Tasten (ARM).
Ereignis asynchron zum Timer läuft und das Ereignis immer kurz vor dem Timer-Interrupt passieren kann, so daß die Taste dann immer noch prellt.
-
Thread
Schwierigkeiten mit den externen Interrupts vom Atmega328p
und mir sind mittlerweile die Möglichkeiten ausgegangen. Ich möchte lediglich eine Led mit einem Taster ansteuern und dass über einen Interrupt (Ich weiß dass es eigentlich Sinnlos ist mit dem Interrupt). Ich habe bereits viele Seiten abgeklettert, aber keins der Beiträge konnte mein Problem lösen
. > Flag Register erfüllen > ;store EIFR, temp1 nur wegen der Frage: damit wird das Interrupt-Flag zurückgesetzt. Das wird gesetzt, wenn der Interruot ausgelöst wird und vom Aufruf der Interruptroutine autimatisch wieder gelöscht. Es gibt auch Interrupts, wo das nicht automatisch passiert
-
Thread
Zeit für die Programmbearbeitung berechnen.
Schleife laufen lassen, welche so lange läuft bis 250 Zyklen der gleiche Wert stehen bleibt. Wenn ein Taster nun also lange prellt läuft die Schleife etwas länger, wenn ein Taster gar nicht prellt läuft die Schleife 250 durchläufe, was bei 11,059200 MHz ungefähr 23ms sind. Hier ist meine "Not-Lösung",
überhaupt funktioniert. ...egal es funktioniert und das sogar "Sau schnell" ;-) Wenn ich mal einen Taster habe der vielleicht länger prellt, dann müsste ich auf einen 16 Bit Integer ausweichen und ein paar µs dazu geben.
-
Thread
Schalter entprellen
= 0;} // nur Taster-Gedrückt-Bits löschen, fertig [/c] Die Routine entprellt sogar eine rostige Büroklammer. Einen ISR-Rumpf (Timer-Interrupt) habe ich hier gerade gepostet: https://www.mikrocontroller.net/topic
Signal (>100ms gleicher Pegel) den ersten Peak in die anderen Richtung (im 1ms-Raster oder als Interrupt) als Tasten-Event verarbeiten und dann, ganz wichtig, das nächste 20ms-Signal ignorieren.
-
Thread
AVR Impulszähler
Gregor R. schrieb im Beitrag #5616495: > die Anzahl der Impulse, welche vorerst von einem Taster, Einen /mechanischen/ Taster fragt man einfach per Software gepollt ab. Da braucht man ausser einem z.B. 1ms-Interrupt nichts weiter. > später von einem Sensor kommen, Welche maximale Pulsfrequenz
War von mir wahscheinlich zu unklar formuliert. Ja, der Taster sollte nur zum Testen der Funktion dienen. Daher auch die HW Variante. Der Sensor prellt nicht. lg
-
Thread
Zu großer Kondensator - PortPin defekt
langsam sind, sind 20-50ms völlig ausreichend für eine flüssige Bedienung der Software, und kein Taster prellt 50ms lang. Man generiert damit keine nennenswerte CPU-Last, falls dir das Sorgen bereiten sollte. Polling hat außerdem unter allen Umständen ein genau definiertes Zeitverhalten, im Gegensatz zur Auswertung von Tastern mit Interrupts. Wie gesagt - für Taster gilt das im Allgemeinen. Nicht immer und überall und Allgemein.
-
Thread
Bewegungs-Sensor gesucht
Hallo allerseits, Bei einer art Fernbedienung soll die Hintergrundbeleuchtung der Tasten aktiviert werden, sobald das Gerät in die Hand genommen wird. Also, wenn es beispielsweise 20° in irgend eine Richtung gekippt wird. Ein Prozessor zur Auswertung eines Sensors mit z.B. I2C Bus steht
noch immer und sie haben den Vorteil keinen Strom zu verbrauchen. Der uC bekommt einen PinChange Interrupt und bleibt bis dahin in sleep. Alle Analog/MEMS Sensoren nuckeln die Batterie leer. Aber icb weiss schon : Hauptsache modern aber blöd konstruieren.
-
Thread
Schaltung spinnt nach Einbau in Gehäuse (PP-Rohr)
wurde kommt der Interrupt für steigende Flanke - key release Anschließend wieder auf fallende Flanke programmieren. Anmerkung: 20ms reichen normalerweise zur Entprellung Die Taste prellt nur beim Drücken, nicht beim
Andreas B. schrieb im Beitrag #5589201: > Die Taste prellt nur beim Drücken, nicht beim Loslassen. Das würde ich nicht unterstreichen! Außer du hast eine Taste mit Hg-benetzten Kontakten, die prellt dann aber auch beim Drücken nicht.
-
Thread
Drehregler Peter D Code
htim1.Init.AutoReloadPreload = TIM_AUTORELOAD_PRELOAD_ENABLE; }[/c] Jetzt habe ich in der Interrupt Service Routines folgendes einen Interrupt und ein Timer. Ich müsste dann jetzt seine "void t0_interrupt" Funktion in EXTI1 und "gray_width get_gray_delta" Funktion in TIM1 schreiben richtig?
Nun kannst du dir überlegen, ob du den ganzen Mist pollen willst, oder ob du das durch einen Interrupt auf beide Flanken von k2 erfassen willst. Der Interrupt ist die weitaus elegantere Variante, setzt aber voraus, daß du das Signal zuvor analog entprellst. Dafür braucht's nen 22nF Kondensator
-
Thread
Attiny85 Servo
255 TCCR1 |= ((1<<CS13)|(1<<CS10)); TCCR1 &= ~((1<<CS11)|(1<<CS12)); //Enable Timer Interrupt TIMSK |= (1<<TOIE1); //Enable External Interrupt GIMSK |=(1<<INT0); sei(); //Interrupt bei rising and falling MCUCR |=(1<<ISC00); MCUCR &= ~(1<<ISC01); TCNT1 = 0;
255 TCCR1 |= ((1<<CS13)|(1<<CS10)); TCCR1 &= ~((1<<CS11)|(1<<CS12)); //Enable Timer Interrupt TIMSK |= (1<<TOIE1); //Enable External Interrupt GIMSK |=(1<<INT0); sei(); //Interrupt bei rising and falling MCUCR |=(1<<ISC00); MCUCR &= ~(1<<ISC01); TCNT1 = 0;
-
Thread
Flankenauswertung bei vielen Tasten
Repetierzeit kommt eher 0.2 Sekunden (20 Pollings) in Frage. Wenn deine Tastatur nicht elendig lange prellt, dann sind 40 ms Entprellzeit (4 Pollings) ausreichend. Für deine 12 Tasten brauchst du also 24 Byte RAM zum individuellen Entprellen. W.S.
Ich mach das gerne so, dass ich für jede Taste eine uint8_t nehme und dann die Abfrage per Interrupt alle x ms aufrufe. Bei jedem Aufruf werden die Bits um 1 nach links geschoben und dann das letzte Bit entsprechend dem Zustand der Taste gedrückt
-
Thread
Taster mit zu wenig Wetting Current
Zerlegen will ich dieses /3D Puzzle/ auf keinen Fall! Also einen kleinen Kondensator an den Taster. Nur hab ich so gar keine Erfahrung/Einschätzung wie dimensionieren, 10nF...100nF oder sogar noch mehr? Hier der 0815 Taster von /Pollin/. https://www.pollin.de/p/miniatur-drucktaster-420009
, spart CPU Ressourcen und hält den Code schlank. Ein Taster kann dann direkt einen Interrupt auslösen und bei längeren Zuleitungen zum Taster ist der Eingang der Schaltung gegen Störspannungen besser geschützt. Es kostet natürlich etwas mehr, doch das spielt
-
Thread
Mit Hardware entprellen
18b-tastend-1-st-701865.html ist kein prellfreier Taster. Der heißt nur so, prellt aber trotzdem.
schrieb im Beitrag #5322133: > Pi mal Daumen ist die Zeit Pull-Up * C. Ich würde meinen, ein Taster prellt (hautpsächlich?/nur?/auch? egal....) beim Einschalten. Das heißt, die Zeitkonstante aus Rbegrenz und C wäre die relevante, nicht die mit dem Pullup.
-
Thread
Taster entprellen
30); } taster_value = c; digitalWrite(DP_BUTTON, HIGH); interrupts(); } void workOnKeyPress() { if ( taster_value != 0 ) { if ( taster_value < 15 ) { // short press ...
> Wieso, wenns prellt dann wirds trotzdem auf high gezogen ? Genau ein mal. Prellt dein Taster immer nur einmal? Oder prellt er eine gewisse Zeit?
-
Thread
AVR Externer Interrupt + induktiver Näherungssensor
externen Interrupt INT0 und bekomme leider schwankende Werte und mitunter sogar doppelt so hohe Werte. Gleichzeitig nutze ich noch den externen Interrupt INT1. Diese Zählwerte sind o.k. Das Interrupt auslösende Signal
Frank schrieb im Beitrag #5275580: > Jetzt nutze ich den externen Interrupt INT0 und bekomme leider > schwankende Werte und mitunter sogar doppelt so hohe Werte. Wenn das eine Art physischer Taster oder Relaikontakt ist: Der prellt. Damit wird der externe Interrupt
-
Thread
Projekt fertiggestellt: MP3 Player für Kinder auf ATTiny-Basis
Da fehlt noch der Schaltplan für den Anschluß der Tasten.
/kappe-fuer-taster-3f-rund-trans-kappe-1d11-p82189.html?
-
Thread
LED-Cube Effekte weiter per Knopfdruck
ist sinnvoll: Wir nehmen an, A0 (14) ist der PIN Deiner Wahl und wir verwenden einen idealen Taster der nicht prellt. Im ersten Schritt (Setup) schaltest Du den PIN auf Input und aktivierst PULLUP damit der Eingang aktiv High ist. Du kannst diesen Eingang dann durch den Taster auf LOW ziehen.
Hallo Tobias, jetzt zu Deinen anderen Fragen: 1. Den Taster kannst Du nehmen. 2. Der Programmablauf Stell Dir den Code innerhalb eines case bis zum nächsten break als zusammen hängender Block vor. Dieser Block läuft ab egal was passiert. Dein Taster-Interrupt
-
Thread
Kettenrad abtasten
Beitrag #5165784: > Wenn ich den Steg, so wie er ist abtasten kann, reicht nämlich eine > Abtast-Interrupt Routine von 1ms aus, bei 240 km/h. für so etwas kann man durchaus einfach einen Interrupt nutzen, man muss nur kurz danach eine Totzeit einplanen falls der Kontakt prellt.
umgekehrt wechselt dann wird der Timerwert in ein Register geschrieben > und wahlweise auch ein Interrupt ausgelöst. Im Interrupt kannst du jetzt > die Zeit zum vorherigen Wert ausrechnen und hast damit die genaue Zeit > zwischen beiden Impulsen. Den vorherigen Wert musst du halt immer > abspeichern
-
Thread
Frage zu Interrupt - Arduino
attachInterrupt(digitalPinToInterrupt(TasterPin), LCD_Seite_1, CHANGE); } loop() { if(LCD_Menu == 0) { // zeige am Display Seite_0 an } } //----------------------------- Interrupt
mal gesetzt. vielleicht noch mit Pullup wenn es keinen Pullwiderstand extern gibt pinMode(TasterPin, INPUT_PULLUP); attachInterrupt(digitalPinToInterrupt(TasterPin), LCD_Seite_1, FALLING);
-
Thread
Genau messen wie lange Relaiskontakt geschlossen war.
auf den Arduino zu legen und dann mit dem µC zu messen. Dein delay(1500) ist aber wenn noch Interrupts vorhanden sind eh nicht genau.
vorschreibt, dass "ein Kontakt" für 1-2 Sekunden zu schließen ist, dann ist damit oft ein billiger Taster gemeint, der je nach Qualität sicher noch mehr prellt als ein Relais.
-
Thread
ATMega328-basierter Sprach-Synthesizer für den CPC 464 - Schnelles Byte-weises Lesen mit dem 328?
Statusregisters usw.). Voraussetzung wäre, daß R15 (oder irgendein anderes Register) exklusiv für den Interrupt reserviert wird und nirgendwo anders im Programmcode verwendet wird. Günstig wäre auch, wenn der Controller im Moment des Interrupts im Idle-Modus wäre, damit ist die Interrupt-Latency konstant.
die meisten obigen Einschränkungen hinfällig. Bleiben beim Mega328 "nur" noch: konkurrierende Interrupts...
-
Thread
Arduino Genuino 101 - Erfahrungen?
Kette vorbeiläuft. Vielleicht kannst du das Signal mal auf dem Scope anschauen, ich befürchte es prellt, dann würden die Interrupts mehrfach aufgerufen. NB: Wenn Du den Zeitpunkt eines Durchlaufs speichern willst, merke dir oben die micros();, z.B. Wenn linker Sensor LOW: ...
> vorbeiläuft. Vielleicht kannst du das Signal mal auf dem Scope > anschauen, ich befürchte es prellt, dann würden die Interrupts mehrfach > aufgerufen. Das Prellen würde erklären, warum da kein Zugewinn in der Performance stattfindet. Da werde ich mal nachschauen. Andererseits sind die
-
Thread
Taste in ISR entprellen
Hallo, in diesem Forum gibt es ja etliche Varianten zur Entprellung von Tasten. Dabei wird (fast) immer auch erwähnt, eine Tasten Entprellung NICHT in einer ISR durchzuführen. Meine Frage ist warum eigentlich nicht? Ich möchte z.B. eine Taste per INT0 entprellen und damit
Entprellung muß man für das /Loslassen/ der Taste machen. Denn erst wenn die Taste das Prellen nach dem Loslassen beendet hat, darf man den Interrupt zum Aufwachen aus dem Schlaf wieder scharf machen.
-
Thread
Attiny45 Interrupt in c
Wo fragst Du den Taster ab?
Dein Taster prellt vermutlich so stark, daß Dein Programm sofort wieder in den Interrupt spring.
-
Thread
Mein Tastaturmatrix Einlese- und Entprell-PAP
und lesen auch seriell ein. Edit: Es gibt wohl das Problem dass eine Taste prellt und offen ist während die Spalten abgefragt werden im "UP ErmittleTastencode". Doch das wird wohl bei der Abfrage "2x gleiche Taste gedrückt" aufgefangen, das eben nur wahr ist wenn die Taste eine Weile ruhig anliegt. Das "UP Pieps" hat seinen eigenen Pieps-Zähler den es jeden Interrupt runterzählt und den Piezo-Piepser piepsen lässt solange der Zähler größer Null ist. Edit 2: Es scheint es gibt auch ein Problem mit der Benennung des Zählers "Gleiche-Taste-gedrückt". Es geht
-
Thread
Interrupt nachbasteln
Danke. Leider keine Antwort auf meine Frage :) Atmega 8, ein Interrupt für 4 Taster, keine Parallelbetatigung.
knilch schrieb im Beitrag #4857380: > ein Interrupt für 4 Taster Willst Du etwa mit den Tastern Interrupts auslösen? Das wäre in den meisten Fällen eine ganz, ganz schlechte Lösung... Richtig ist es jedoch, die Taster in einem Timer-Interrupt
-
Thread
Programmablaufplan mit Interrupt
Tja, da so ein Interrupt "immer" stattfinden kann, kann man den Code in der Interrupt-Service-Routine und als eigenständigen/ nebenläufigen Ablauf darstellen. Nur Taster lösen keinen Interrupt aus, denn sie Prellen und
Tja, da so ein Interrupt "immer" stattfinden kann, kann man den Code in der Interrupt-Service-Routine und als eigenständigen/ nebenläufigen Ablauf darstellen. Nur Taster lösen keinen Interrupt aus, denn sie Prellen und
-
Thread
Physikprojekte
Danke, euch beiden. Falls der Reedkontakt prellt, löse ich das einfach in der Software, indem ich zu kurz hintereinander erfolgte interrupts ignoriere... Mit meinem Propellermotor möchte ich noch den Auftrieb eines Tragflügels in Abhängigkeit
Am Ende einer Runde sollte es den eingeschlossenen Strom I anzeigen. Danach drücke ich den reset-Taster und die Messung kann von Neuem beginnen. Bei der Umsetzung hatte ich mich mit einigen Problemen auseinanderzusetzen. Erstens einmal prellte der Encoder stark. Dies umgehe ich nun mit einer Zeitabfrage
-
Thread
ATTiny45: Aufwachen mit PCINT klappt nicht
Hallo, Ich schicke den µC in den PowerDownModus und will ihn danach durch einen PinChangeInterrupt von 2 Tastern(also entweder der eine oder der andere) wieder aufwecken. In der while-Schleife werden die Taster über Peter Daneggers Entprellroutine abgefragt, deswegen deaktiviere ich den PCINT
dann tun, um das Problem zu beheben? Im Kommentar zu get_key_busy steht doch "until key released". Prellt der Taster eigentlich auch, wenn man ihn loslässt?
-
Thread
_delay_ms() innerhalb einer ISR
Der Interrupt wird durch einen Taster generiert. Es stimmt schon dass solche Taster öfter zweimal schalten wenn sie nur einmal sollten. Das müsste aber hier egal sein oder? Wenn ich den Taster bewusst 3 mal drücke
Leo schrieb im Beitrag #4622312: > Der Interrupt wird durch einen Taster generiert. Seufz. War ja klar. Man kann hier im Forum millionenmal erklären, dass man Taster nicht mit Interrupts auswertet. Das hat nur zur Folge, das der Eine-Million-und-Einte
-
Thread
Pin Change Interrupt PCINT0
)); sei(); // Globale Interrupts aktivieren while(1) { PORTC = 0x03; //Kein Interrupt? Dann LED 1&2 anschalten. } return 0; } ISR (PCINT0_vect) { cli(); //Interrupt erkannt? Interrupts deaktivieren
hast du ein Event. Lässt du ihn wieder los hast du das zweite Event. Da sich nach dem Drücken der Taste das PCIF0 löscht wird es durch das Loslassen der Taste erneut gesetzt. Ist der Interrupt dann zu Ende sieht der MCU das gesetzte Flag und führt die Routine erneut aus. Löscht die nun das Flag am
-
Thread
STM32: Wie funktioniert diese Entprellung?
. Ein externer Interrupt ist nur dann notwendig, falls man den MC per Taste aus dem Power-Down aufwecken will. Diese Routine liefert schon exzellente Ergebnisse bezüglich Entprellung und Störunterdrückung bei sehr geringer
im Web rumgeistern. Man kann sie bestenfalls noch etwas optimieren, insbesondere, wenn mehrere Taste zu entprellen sind. Z.B. reicht ein 2Bit-Zähler bei ~10ms Timerintervall aus. Dann kann man mit nur 2 Variablen bis zu 32 Tasten parallel entprellen. Und man kann im Interrupt gleich das Gedrückt-Ereignis
-
Thread
mit einem Taster ein- und ausschalten eines uC
Hallo Zusammen, ich habe eine Microcontrollerschaltung (ATMEGA328p) die durch eine Taste ein- und ausgeschaltet werden soll. Der Taster und Selbsthaltung wurde wie abgebildet realisiert. Ein bekanntes Thema und ich hätte auch schon eine alternative Schaltung hier gefunden, nur habe ich
erst recht, wenn die höher ist. Ich würde den AVR einfach immer an die 3..4,2V hängen und mit der Taste nur zwischen aktiv und Power-Down in SW umschalten. Aufwachen geht ja prima mit dem Pin-Change-Interrupt.
-
Thread
Was spricht für eine Entprellung mit Hardware?
abc schrieb im Beitrag #4511777: > Nicht entprellt per Interrupt ist aufwändiger.. In 99,99% der Fälle ist ein Interrupt für Taster in einem normalen Programmablauf nicht nötig. So einen Interrupteingang für einen Taster braucht man eigentlich nur, um einen uC
300ms entprellt. > > Das sind genau diese Geräte, die ich am liebsten anzünden würde. Wenn der Taster nunmal diese Zeit prellt lässt sich daran nichts ändern. Wenn der Taster aber nur 20ms prellt und ich ganz hastig drücken will ändere ich in meinem #define für die Entprellzeit einfach eine Zahl und
-
Thread
AVR Assembler Interrupts zählen
Hallo, ich habe nun den im Anhang befindenden Code zusammengestellt um meine Interrupts zu zählen. Interrupt 0 (über mechanischen Druckschalter aktiviert) soll dafür sorgen das BIT 0 von PORTB angeht (bzw. die Diode die am Port hängt) sobald die Taste zum erstenmal gedrückt wurde
schrieb im Beitrag #4616378: > Ich habe mittlerweile eine Warteschleife für das Entprellen der Taster > eingefügt. Trotzdem funktioniert das Programm nicht. Hat mir jemand den > Hinweis warum das so ist? Weil es verkehrt ist. Bei INT1 ist es absolut egal, ob der Taster prellt oder nicht, deswegen
-
Thread
taster über analogeingang abfragen
zum Interrupteingang. Offene Taster - kein Interrupt, irgendeiner gedrückt - Interrupt (muss der high oder low sein?).
mode laufen lassen, den Interrupt nutzen An jede Taste noch eine Diode, darüber digitalen Eingang zum Interrupt nutzen Gruß Jens
-
Thread
Tasterabfragen Problem
Peter, Du meinst bestimmt der Taster ist zwischen AVR µC Eingang und Masse angeschlossen ? So ein Taster prellt leider und hat nicht gleich zu Anfang und Ende eine definierten Zustand. Dann fehlt Dir noch eine Flankenerkennung-
#include <avr/io.h> #include <avr/interrupt.h> #include "Zeit.h" #include "myLcd.h" //Taster Definitonen #define Menu_Taster PC0 #define LED PC1 int main(void) { DDRC |= (1<<LED); DDRC &= ~(1<<Menu_Taster); PORTC
-
Thread
LEDs toggeln nicht richtig
Die Taste prellt. Gegenmaßnahme: softwareseitig entprellen.
Es reicht, die Tasten in einem Timer-Interrupt nur alle 10-30ms abzufragen. Damit sind sie ohne Kopfstand entprellt. Die Erkennung des Zustandwechsels (Flankenerkennung) macht man üblicherweise mit einem Hilfsflag. Dabei