-
Thread
Hardware Entprellung - Welche Werte?
kann in 5 Jahren alles ganz anders aussehen. Nur weil dein Taster HEUTE nicht prellt, bedeutet das nicht, dass er es in 5 Jahren nicht tut. Sie können in 5 Jahren immer noch gut funktionieren, so ist das ja wiederrum nicht. Können - müssen aber nicht. Die PeDa
schrieb im Beitrag #3206631: > Warum? Ganz einfach: Jeder (wirklich absolut jeder) mechanische Taster > aus festem Material prellt. Dafür sorgt die böse Physik. Nanana.. Also wenn man nur einen hinreichend großen Kondensator parallel zum Taster schaltet, kommt es beim Schließen zu ner Mikro-Verschweißung
-
Thread
Anfänger sucht Tipps von Profis :)
Pfeile stecken, bzw. wieviele da eigentlich drinn stecken. Oder geht das nach dem Muster: welcher 'Taster' ist zuletzt gedrückt worden, selbst wenn er jetzt nicht mehr gedrückt ist (1 Feld == 1 Taster)
wird (die sonst durch den pull up am Eingang des uC auf high liegen). Da kann man per pin change Interrupt drauf warten. DANN erst taktet man schnell jede Spalte einzeln durch und guckt jedesmal ob die Zeile noch Kontakt hat. Und weil das ganze eventuell prellt, macht man das einige Zeit lang falls nicht
-
Thread
Probleme beim Entprellen.
Marcel S. schrieb im Beitrag #3176540: > Hat jemand Tipps wie ich SW-Entprellung mit Interrupts kombinieren kann. Gar nicht. Taster pollt man mit einem Timer. mfg.
die Tasten einen Interrupt zu benötigen. Wenn dem so ist, dann sitzt das Problem tiefer, weil der ganze Programmaufbau dann nicht vernünftig ist.
-
Thread
ATmega32 - start/stop button
mal ganz genau zu sagen, wenn dein Programm nicht läuft, kannst du auch nicht feststellen, ob eine Taste gedrückt ist. Das ist ja bereits Teil von deinem Programm. Selbst wenn man das über Pinchange-Interrupt macht, muß zuerstmal das Programm loslaufen und die Interrupts konfigurieren. Erst dann kann ein Interrupt auftreten, wenn sich ein Pin am Port ändert. Du willst aber sicher eine bestimmte Funktion ausführen, wenn eine Taste gedrückt wurde. Dazu gibt es beispielsweise hier einen Artikel: http://www.mikrocontroller.net
-
Thread
AVR Studio - Programmlänge angeblich zu groß
Hi >Und da ist auch nichts zu umgehen? >Hm tja, Interrupts für Taster sind zu 99% nicht die sinnvollste Lösung. Das wurde hier im Forum schon zig mal bis zum Erbrechen diskutiert. Die Forumssuche nach 'Taster+ Interrupt' bringt 1906 Treffer. Eine elegante
das EIFR lade, dann sollte doch alles klappen? Hast du dir durchgelesen was es heißt, dass dein Taster prellt?
-
Thread
ATtiny2313 ext. Interrupt wird doppelt ausgelöst
Hallo, ich möchte per INT0 eine Tasterentprellung machen. Beim Testen (Taster wird ganz schnell mehrfach betätigt) wird meine ISR 2 mal ausgeführt! Warum? Mit cli(); sperre ich doch weitere Interrupts und auch wenn ich das Flag im EIFR lösche passiert das- [c] ISR
gelöscht. Damit bleibt das von deiner ISR übrig: ISR (INT0_vect) // ISR ext. Interrupt Request 0 { asm("NOP"); } Tasten werden mit einem Timer entprellt: http://www.mikrocontroller.net/articles/Entprellung Lies dir das durch. Was du jetzt machst, ist Stochern im Nebel
-
Thread
Tasten entprellen : Syncronisierung Systick und Exti GPIO Interupt
Routine aufruft nicht mehr zu arbeiten. Frage: Wei kann ich eine Zeitverzögerung innerhalb der Tasten Interrupt Routine ausführen um den Taster zu entprellen ?? Danke.
Lösung mehr als 1 Interrupt auf. >>> Frage: >>> Wei kann ich eine Zeitverzögerung innerhalb der Tasten Interrupt >>> Routine ausführen um den Taster zu entprellen ?? Antwort: am einfachsten mit einer Zählschleife. So
-
Thread
Mega8 Assembler RGB Fader
sich das auch wirklich so entwickelt. Denn dein µC macht das ja auch: In der Zeit, in der du den Taster niederdrückst, arbeitet er die Hauptschleife ein paar Hunderttausendmal ab. > irre ich? Eventuell liegt das am Prellen des Tasters? So ein Taster prellt ein paar mal. Bei halbwegs unverbrauchten
der Main müssten dann die Tastendrücke so ausgewertet werden, dass je nach Druck auf die entspr. Taste für R/G/B jeweils der OCR Wert für R/G/B geändert wird. Die Interrupt-Routinen für die Tastenauswertung und die PWM würden dann "nebeneinanderher" laufen. Stimmt das soweit, kann das klappen? Über
-
Thread
Debounce und Filter per PChg-Isr
Taster per Interrupt"
nicht alle 100Hz einen Taster drücken... Und zu deinem letzten Post: Da wird garnix blockiert an Resourcen. Die schon vorhandene Auswertung, welche Taste den Interrupt generiert hat, ist sogar nützlich für andere Rotinen, die
-
Thread
Tastenentprellung
: In die Tonne. Jepp, Und zum Pin change Interrupt. Wie oft denkt ihr denn prellt so eine taste? So eine richtig schlechte! Einmal, zweimal? Dann seid ihr Optimisten. 1. braucht man den Pin change evt. für was anderes 2. Wird das entprellen über
jedoch nicht verändert, dann kann davon ausgegangen werden dass der neue Status stabil ist und der Taster nicht mehr prellt. Hat sich der Status in den letzten 20ms jedoch noch geändert, dann schwingt da noch etwas. Die Idee mit dem Zähler, um zu sehen wie oft die Interrupt-Routine aufgerufen wird
-
Thread
ASM Inkrement Fehler
nullen ldi pstate, 0 ;ADC init ldi temp, (1<<ADEN) out ADCSRA, temp ;Interrupts an sei mainloop: rjmp mainloop timer0_overflow: reti ;Interrupt durch Taster ;in pstate int0_handler: ;Interrupts aus cli inc pstate start_vergleich: cpi pstate
Matthias schrieb im Beitrag #3068088: > Der Taster ist soweit schon hardwareseitig entprellt. Wie? > Aber das ist > schließlich nicht mein Problem. dass kann man so nicht sagen, prellt der Taster, so wird pstate in kurzer Zeit mehrmals erhöht.
-
Thread
FlipFlop Ein- Ausschalter funktioniert nicht
AtXmega64. Dann brauchst Du nur einen einzigen, interruptfähigen Eingang, an den Du den EIN-AUS-Taster anschließt. Im ausgeschalteten Zustand schläft der µC und wird per Interrupt aufgeweckt. Falls Du nach andere Bauteile einschalten mußt, kann das der µC erledigen. Der Vorteil: er kann sie auch wieder
www.mikrocontroller.net/topic/290561#new Hmm. Wozu das ganze Foo mit 2 Widerständen und 100nF rund um den Taster? Wenn da ein µC sitzt, kann der das doch ganz trivial in Software entprellen? Natürlich schickt man den µC in den deep sleep und weckt ihn per pin change interrupt auf. Und ebenso natürlich ist das
-
Thread
Drehzahlmessung durch Auswerten der Inrerrupteingänge
natürlich einen Sonderfall, indem du den Taster als Simulation deines richtigen Eingangs benutzt. Gut, bei denen Zahlen hätte es Pollen genauso zuverlässig getan - dafür müsste man keinen Interrupt benutzen, aber seis drum. Da der Taster nur zum
Karl Heinz Buchegger schrieb im Beitrag #3035552: > Daraus folgt: Taster einzulesen, indem man sie an einen Interrupt > klemmt, ist Nonsense. Regelmässiges Pollen durch zb einen Timer tut es > auch und erledigt das Entprellen im selben Aufwasch gleich mit. Da widerspreche
-
Thread
Wenn ich 3mal auf den Schalter gedrückt habe.
Adrian Figueroa schrieb im Beitrag #3026040: > ich kann doch nicht die ganze zeit meine taster abfragen, während etwas > anderes gemacht wird, der taster aber trotzdem eine funktion haben > soll... Deswegen macht man das nebenbei in einem Timer Interrupt. Interrupts und Taster sind idr
keine Menge zusammen. Man nimmt z.b. einen Timer interrupt alle 50 ms, wenn der Taster in diesem Interrupt 3 mal hintereinander gedrückt ist kann man davon ausgehen, dass er auch wirklich gedrückt ist und nicht prellt. Dann setzt du ein Flag das du dann
-
Thread
Menü Programmierung ATMega32
Vermutlich prellt dein Taster. Wie man Tastereingaben entprellt findest Du schnell über die Suchfunktion. Viel Spaß! Prello
Taste 2-mal hintereinander zu drücken, deinem µC entlockt das nur ein müdes Gähnen. Da legt er sich zwischendurch noch mal schlafen und macht aus seiner Sicht ein ausgiebiges Nickerchen. Interrupts an
-
Thread
Snake Projekt: Steuerung
Geschichte läuft bei 5V, um entprellen oder so was braucht man sich keine Sorgen machen und das Tasten auslesen läuft Parallel, also keine Serielle Datenverarbeitung mit Protokoll ausdenken oder so. Ich hab zum detektieren der Tasten einen Timer interrupt vorgesehen, bei dem in bestimmten Zeitabständen abgefragt wird ob irgend ne Taste gedrückt wurde. Um das Spiel zu starten habe ich mir so etwas wie eine Menüstruktur überlegt und dank einiger kompetenter Menschen hier konnte ich teile von vorgestelltem Code einfach für mich umbauen
-
Thread
Entprellen an unterschiedlichen Ports
Fall aus: Da ich für alle Taster einen Interrupt auslösen möchte, habe ich diese auf die 3 external Interrupt Eingänge gelegt und zusätzlich noch (über eine Schaltung entkoppelt) jeweils auf einen weiteren Port-Pin meines ATmega32
Daniel D. schrieb im Beitrag #3004085: > Da ich für alle Taster einen Interrupt auslösen möchte, Warum? Wie schnell sind die Signale? Alles, was langsamer als 1kHz ist, braucht keinen Interrupt. Du bekommst die Neben- und Seitenwirkungen bei Verwendung vieler
-
Thread
Problem Zufallsgenerator
Ein Schalter prellt auch noch.
schnell genug. Ein Würfel ist doch perfekt um sich mal mit Timer und Interrupt zu beschäftigen: - Ein 8bit Timer der immer durchläuft - Ein Taster am Interrupt Pin - Im (Tasten)Interrupt den Zählerstand auf einen Port mit LEDs ausgeben Das der Taster prellt ist hier
-
Artikel
Ideenpool
Projekt um Winamp zu steuern. Die Vorteile im Überblick: 1 Kontakt geschlossen während Wählvorgang -> Interrupt oder unbenutzt 1 Kontakt der getoggelt wird während dem Wählen -> Interrupt zur Auswertung Benötigt nur einen AVR Pin(mit Interrupt). Billig bei Pollin beziehbar. Retro Terminal, mit Execute-Taster
kann das mal bitte wer überprüfen? Edit: Also nach Gehör(Lautsprecher) und meinem analogen Oszi prellt der Schalter nicht, aber 100% sicher kann man sich nur mit einem digitalen Speicheroszillioskop sein. Allgemein sind Wählscheiben relativ gut geeignet zur Eingabe als PC-Numpadersatz am AVR, auch das
-
Thread
Entprellen von Schalter mit Interrupt und PinChange
Tasten an nen Interrupt zu hängen sollt man grundsätzlich lassen. Beim prellen im kHz Bereich kanns vorkommen, dass der AVR dann nurnoch ISRs abhandelt. Wenn die Taste unbedingt am Interrupt hängen muss
nurnoch ISRs ab und nicht das eigentliche Programm! Dafür das Abstellen der ISR in der ISR! [c] ISR(TASTE_INTERRUPT_VEKTOR) { // Würde gerne Interrupts einschalten, ohne ständig aufgerufen zu werden: DeaktiviereTasteInterrupt(); PrellenAbwartenTimerStarten(); ... [/c] STK500-Besitzer schrieb
-
Thread
Müssen Tasten am PCF8574 entprellt werden?
zum Beginn einer Abfrageprozedur sowieso so viel Zeit vergeht, dass der Schalter dann nicht mehr prellt. Vielleicht mache ich aber hier sowieso einen Gedankenfehler. Die PCF8574 wollte ich sowieso nur abfragen, wenn das Interrupt-Signal des PCF8574 einen Wechsel anzeigt. Vergessen hatte ich zu erwähnen
>sowieso so viel Zeit vergeht, dass der Schalter dann nicht mehr prellt. Wie lange ist das? 1ms? 10ms? Soooo langsam ist I2C auch nicht bei 400kbit/s. Klar kann man mit gemächlichen 10ms oder gar 100ms die Tasten auslesen, dann muss man wohl nicht mehr entprellen
-
Thread
Entprellen nach Dannegger: Debounce Time
Nachdem eine Taste gedrückt wurde darfst Du halt eine gewisse Zeit lang alle weiteren Pin-Wackler nicht berücksichtigen. Sagen wir mal, Du hast einen Timer-Interrupt, der jede Millisekunde kommt. Dann könnte es in
>wenn ich die Zeit allerdings zu kruz wähle z.B. 5ms, dann könnte >es passieren, dass der Taster noch prellt und das wieder Probleme macht. Hatte noch nie einen Taster, der länger als 8 msec prellt. Wenn Du welche hast, dann schmeiß sie weg. Mit übernommenen Entprellroutinen wirst Du immer
-
Thread
Zähler (Up/Down) für industriellen Einsatz
ich das bei meinen einfachen tastenbetätigten Blinkschaltungen auch immer: Anzahl der gedrückten Tasten merken, und wenn im nachfolgenden Schleifendurchlauf die Anzahl der gedrückten Tasten größer ist als vorher, dann die entsprechende Aktion ausführen. > while (i >= 100) // vergleiche
Entprellkonfiguration sollte er eigentlich das Auslangen finden. Selbst wenn der Sensor, der da drann hängt nicht prellt, schadet es auch nicht, da eine Entprellung drann zu hängen. Wie Peter schon sagte: letztendlich kommt das der Störsicherheit zu gute. Und das soll ja noch nie geschadet haben. Externer Interrupt
-
Thread
Softwareentprellung funktioniert nicht
auch ein wenig > komisch finde ich. Nicht wirklich 'komisch'. Nur weil in du in der ISR bist, prellt ja der Taster deswegen nicht weniger. Und wenn er prellt, wird der nächste Interrupt registriert, der dann ausgeführt wird, wenn diese ISR abgelaufen ist. -> es ist ein Irrtum zu glauben, Taster
> Nicht wirklich 'komisch'. Nur weil in du in der ISR bist, prellt ja der > Taster deswegen nicht weniger. Und wenn er prellt, wird der nächste > Interrupt registriert, der dann ausgeführt wird, wenn diese ISR > abgelaufen ist. Dafür war der delay() gedacht
-
Thread
Interrupts bei Mikrocontrollern
mit Interrupts und einem Taster beschäftigt. Hier teilte man mir freundlicherweise mit, dass man Taster und Interrupts eine ungeeignete Kombination seien. Hier würde ich gerne noch ein "wieso" hören, das vergaß
Alex A. schrieb im Beitrag #2876893: > Hier teilte man mir freundlicherweise mit, > dass man Taster und Interrupts eine ungeeignete Kombination seien. Hier > würde ich gerne noch ein "wieso" hören, das vergaß ich nämlich in meinem > Thread zu fragen. Taster prellen --> mehrere Interrupts hintereinander
-
Thread
Atmega8 und C - Eine Frage zur Programmgestaltung
Oliver J. schrieb im Beitrag #2863405: > Wozu das denn? Das macht man am einfachsten so: > if (Taste_gedueckt()) { > mach_was(); > } Das gehoppel in mach_was() möchte ich nicht sehen, wenn die Taste ein bisschen prellt.
10ms einen Interrupt bringt. Es ist doch kein Problem, in diesem Interrupt auch mit zu schauen, ob eine Taste gedrückt wurde. Wie das effizient aussehen kann gibts hier genügend Codebeispiele, einfach mal nach Entprellung
-
Thread
AVR Assembler Hardwareinterrupt entprellen Gesperrt
nur ausprobieren ob es so funktionieren würde. (Ich habe ungefähr 10mal so lange gewartet, wie der Taster Prellt.) Zur Idee mit einer Hardwareentprellung und Zähler... <- Es geht ja um Interrupts und das Entprellen! Ich muss programmieren lernen, Hardware war leztes Jahr dran. Die Idee mit dem Timerinterrupt
ausprobieren ob es so funktionieren würde. (Ich habe ungefähr > 10mal so lange gewartet, wie der Taster Prellt.) In einem Interrupt warten macht man nicht. Du könntest in der ISR checken, wie lange der letzte Interrupt vergangen ist und dann den aktuellen Interrupt einfach ignorieren, wenn er innerhalb
-
Thread
External Interrupt INT0 Problem
Hallo Leute, habe mal eine Frage bezüglich dem externen Interrupt INT0. Ich habe den Interrupt so eingestellt, dass er bei einem Falling-Edge ausgelöst wird. Hierzu habe ich einen Taster an den PIND2 meines ATmega328P angeschlossen, der wiederrum mit GND
ist aber anders, und ein Taster gehört eben deshalb nicht an einen Interrupt. Weil er prellt. Es kann sein dass bei Aktivierung von sei, bereits ein Interrupt Flag gesetzt war, und somit die ISR sofort angesprungen wird. Daher
-
Thread
Interrupt durch Elektrogerät ausgelöst
Hi >Was kann das sein? Üblicher Fehler: Taster mit Interrupt. Und wahrscheinlich auch noch mit internem Pull-Up-Widerstand. MfG Spess
doch auch? Warum zusätzliche(!) Hardware wenn es auch in Software geht? Ohne zusätzliche Hardware prellt der Taster am Interrupteingang und löst so gleich mehrere Interrupts aus. > wie löst man denn sowas normalerweise? Taster an normalen Pin, interner Pullup, Abfrage und Entprellung im Timer-Interrupt
-
Thread
Meine Variante zur Tasterentprellung
Entprellung funktioniert und das ich kein delay benutze. Außerdem sollte es egal sein wie lange ich den Taster drücke, ohne das er mehrfach die gleichen Daten über die UART sendet. Was haltet ihr davon? Ach ja: MC ist ein ATMEGA8 mit 8MHz #include <avr/io.h> #include <avr/interrupt.h> #include "
das mehrfach das gleiche gesendet wird. Wenn der Taster nicht gedrückt ist oder prellt, zählt er solange die Variable runter bis der negative Trigger-Wert erreicht ist und Setzt 'Taster_ist_gedrückt' wieder auf 0. Über den Triggerwert kann man je nach
-
Thread
Taster,Atmega 8
Hallo Vielleicht geht die LED ganz schnell an/aus/an/aus, weil dein Taster prellt?? Gruß Joachim
nicht ganz so schlimm wie beim ersten Programm, aber immer noch nicht perfekt:(. Kann man einen Taster überhaupt mit der Polling-Methode gescheit toogeln oder ist dies nur mit Interrupts perfekt möglich? .nolist .include "m8def.inc" .list ldi r16,0x01 out DDRD, r16 ldi r16
-
Thread
PCINT triggert nicht immer
"Taster ein" und "Taster aus". > Oder liegt hier der Hund begraben? Sollte ich lieber Richtung Masse > schalten? Ja. Wenn der Taster jedoch offen ist, dann sollte ein Pullup den Pin hochziehen. Das
fröhlich vor sich hin, heisst, der ISR tut. Also: Hardwareproblem. Wie dämlich kann man sich mit Tasten anstellen? Selbst wenn sie prellen, müsste PB1 doch toggeln. Kein Taster prellt 2 sec lang. Sooo billig waren die auch nicht.
-
Thread
Taster Entprellen von Peter Dannegger
Jetzt nur mal damit ich das verstehe. Bei mir ist das so , dass der Taster einen Interrupt auslöst der eine LED anmacht wenn aber schon ein , dann eben aus. Wenn also Taster betätigt wird und der prellt und den Interrupt auslöst,(mehrere male anstatt einmal) nutzt es doch
mit extra Zähler sind immer aufwändiger. Direkten Tasten-Interrupt macht man nicht, weil: - nicht so viele ExtInts vorhanden, bei PinChange Interrupt der µC auf jeden Mist regiert - Tasten zu langsam sind, um einen Interrupt zu rechtfertigen - Störungen
-
Thread
Interrupt in Assembler
Hi >Die Taster Abfrage soll aber unbedingt über eine Interrupt-Routine >gehen. Du weisst aber, das ein Taster prellt und mehrere Interrupts auslöst. MfG Spess
ich den Taster betätige geht die andere LED an aber die erste blinkt nicht mehr. :-) Es sieht so aus als hängt der controller im Interrupt fest. Wie geht das dass der wieder aus dem Interrupt rauskommt ? Gruss
-
Thread
Zeit eines tastendrucks messen
Hallo, hast du auch beachtet da ein Taster prellt, d.h. das nicht sofort tatsächlich eine 1 (high) anligt sondern für einen kurzen Zeitraum (einige ms) immer zwischen 1 und 0 hin und her geschaltet wird ? Dein Stichwort ist Tasterentprellung
Ja der Taster ist enprellt.
-
Thread
EEPROM treibt mich in den Wahnsinn
Eine Taste macht man NIE mit einem Interrupt. Denn die Taste kann und wird prellen. Das sind noch ein paar kontakte in ms-Bereich.
Zwei von Drei schrieb im Beitrag #2710276: > Eine Taste macht man NIE mit einem Interrupt. Denn die Taste kann und > wird prellen. Das sind noch ein paar kontakte in ms-Bereich. Geil. So einen Muell habe ich schon lange nicht mehr gelesen.
-
Thread
Bascom Menüsteuerung mit Drehimpulsgeber
Zeile 42 ist im Programm "Enable Interrupts" was soll daran falsch sein?
Kondensatoren sehe ich da nichts aber es werden erfreulicherweise verschiedene Methoden (Encoder-Befehl, 1 Interrupt, 2 Interrupts, Timer') vorgestellt. Kurz und knackig - so wie man es braucht. Super-Anregungen.
-
Thread
Menüsteuerung mit zwei Tasten (Up/Down) in Assembler
> wie man ein kleines up/down Menü mittels Interuptsteuerung in Assembler > hin bekommt ? Interrupt für Tasten ist die schlechteste Lösung... Bei dem Betreff > _Menüsteuerung mit zwei Tasten (Up/Down) in Assembler_ habe ich ein Verständnisproblem. Denn mit nur 2 Tasten stelle ich mir die Bedienung
sofort als 'Taster geschlossen' werten, sondern einfach mal eine gewisse Zeit abwarten und nachsehen, was da so am Eingang passiert. Ändert sich der Pegel in diesem Zeitraum wieder, dann prellt die Taste immer noch.
-
Thread
Taster abfragen - Interrupt vs. Polling - Stromverbrauch
vs. Power Down + WD 5µA) und ist unnötig. Habs bei nem Küchentimer Projekt über die Pin-Change-Interrupt Variante gemacht. Ob der Taster prellt kann dir im Interrupt eigentlich egal sein ob der da ein oder fünfmal rein rennt ist egal der Interrupt ist nur da um den Controller zu wecken, das Debouncen
Ich würd den µC so tief wie möglich schlafen legen, den Taster auf einen Interrupt. Innerhalb der Interrupt Routine wird der Interrupt deaktiviert, und falls danach noch Tasten abgefragt werden sollen, wird das über den debounce gemacht. kurz vor dem Schlafengehen
-
Thread
-
Thread
Problem mit ext. Interrupt
Hallo, ich bin blutiger Anfänger und möchte mittels eines Taster (Schließer) einen Ext. Interrupt auslösen. Folgender COde dazu [c] void main() { //PB2 Putput + Pullup DDRB &= ~(_BV(PB2)); PORTB |= _BV(PB2); //PortA output + LEDs off DDRA
Interner Pullup reicht. Dein Taster prellt, das weißt du hoffentlich. Taster an Interrupt ist deshalb immer schlecht. Aber irgendwas müsste sich trotzdem am Port tun, nur vielleicht siehst du es nicht. Ansonsten schreibst du nichtmal
-
Thread
ISR wird nach einem Pinchange Interrupt 2x ausgeführt?
. G. schrieb im Beitrag #2581281: > Hat jemand einen Tip was da sein könnte? Ja, Deine (jede) Taste prellt. Deshalb Tasten nie mit einem externen Interrupt abfragen! Sondern mit einem Timerinterrupt entprellen. Peter
habe mir deine Komfortroutine etwas angesehen, aber das ist natürlich ein overkill für eine einzige Taste welche am PCINT0 hängt. Hast du ein Beispiel mit einem Timer Interrupt in C für eine Taste?
-
Thread
Externer Interrupt INT0 und INT1 mit internen PullUps
Hallo aspire, das ist doch kein Problem, sondern dein Unwissen, wie man Taster - die immer PRELLEN - abfragt. Taster direkt über Interrupts gehören nicht zusammen ! .
) { ... // config LED LED0_DDR = 1; LED1_DDR = 1; LED0 = 0; LED1 = 0; //INTERRUPT (MCUCR S.33, GICR S.49) TASTER0 = 1; // Interne PullUps setzen TASTER1 = 1; // Interne PullUps setzen TASTER0_DDR = 0; // Pin auf Eingang TASTER1_DDR = 0; // Pin auf Eingang
-
Thread
Probleme bei VUSB- Bachelorarbeit
Hi, und da die LED nicht blinkt, prellt die Taste nicht? Oh mann... Gruß, Norbert
ganz schöner Sauladen sein! Tobi.l schrieb im Beitrag #2581912: > ausserdem kann ich noch Interrupts auslösen (per taster) Um zu überprüfen ob er wirklich noch läuft, würde ich lieber z.B. in der Main auf den Taster pollen. Ansonsten weißt Du nur dass er von der Stelle wo er hängt in den Interrupt
-
Thread
Wie viele Quadratur Encoder hat ein Mikrocontroller ?
>Kein Problem, hänge die 4 Encoder an einen Port mit >Pin-Change-Interrupt. Stellt mich an den Pranger, aber Pin-Change-Interrupt halt ich für dieses Problemchen den ganz falschen Ansatz. Die Encoder sind nix anderes als Taster, die in Abhängigkeit voneinander schalten
) >geschickterweise die Erfassung erledigt. Daraufhin kam die Warnung, dies >bloß nicht per Interrupt zu machen, dem ich widersprochen habe. Interrupt ist schon richtig, aber bitteschön TIMER-Interrupt. >Grundschwingungen ist. Optische Geber prellen nicht, können aber sehr >hohe Frequenzen
-
Thread
Interrupts mit Taster auslösen
Ja. Keinen externen Interrupt benutzen. Tasterauswertung mittels Interrupt ist ganz einfach der falsche Weg. [[Entprellung]]
Wenns unbedingt mit Interrupts sein soll, dann den Taster in Hardware entprellen (RC-Glied am Pin des µC, kann ggf. den internen Pullup nutzen).
-
Thread
Vorschlag: C-Funktion für Taster-Entprellung
nicht nötig ist. Wenn deine Hauptschleife while(1) nur lang genug braucht, länger als eine Taste prellt (also so 5 ms), dann holen Abfragen der Art uPressedUp=(!(*Port & (1<<Pin))) immer einen entprellten Zustand. Es kann kein Prellen geben, Daher ist deine Funktion (die zudem üble
auf die Ausführungszeit unpraktisch ist, ist natürlich korrekt. MaWin schrieb: >Nimm an, der Taster wechselt bei jeder Abfrage den Zustand >[...] >nur lang genug braucht, länger als eine Taste prellt[...] >üble Parameterliste Ersterer Einwand ist aber sehr akademisch. Wieso sollte ein Taster
-
Thread
Vor/Nachteile SchmittTrigger vs. Softwareentprellung
den meisten Fällen auch unnötig, da bei Meßprozessen oft schon ein Timer alle 10...50msec einen Interrupt erzeugt um einen neuen Sample zu ziehen. Nichtsdestotrotz sollte eine µC-Schaltung aber Filter an den Ports für die Taster haben, um ESD und andere Störungen abzufangen.
direkt oder > indirekt. Ich meine das im Vergleich zu der "klassischen" falschen Abfrage per Interrupt, die fängt gerne mal EMI ein. Und dann wundert sich der Anfänger, wenn was passiert, obwohl er die Taste nichtmal berührt hat. Peter
-
Thread
Transistortester AVR
ich nicht sagen. T1 ist der Transistor mit der LED am Kollektor. Bitte überprüfen! Wenn der Taster noch nicht gedrückt wurde, ist VCC 0V. Wenn einmal eingeschaltet wurde (Taster), bleibt die VCC für immer eingeschaltet wenn die T1 Basis von VCC Strom bekommt. Grüße Karl-Heinz
Basisstrom von etwa 1mA auskommen. Bei voller Batterie sollte mit dem R7 von 3.3k und gedrücktem Taster ein Basisstrom von etwa ((9V - 2.1V)/3.3k = 2.09mA) erreicht werden, bei losgelassenem Taster wird es durch die LED weniger. Grüße, Karl-Heinz