-
Thread
Einmalige Auswertung angeschlossener Tasten
bleibt, soll wieder 0 zurückkommen. Kurzum: (bei jedem Aufruf von getkey() ) 0 0 1 // hier eine Taste gedrückt 0 0 0 // hier mal wieder losgelassen 1 // erneut eine Taste gedrückt 0 ... Nun hab ich hier im Forum schon einiges gelesen, z.b. 2pol. Taster, welche einmal den Interrupt auslösen
Eine Entprellung ist eigentlich genau das was ich eben nicht brauch, denn auch dort wird der Status 'Taste gedrückt' geliefert, solange ich den Taster auch gedrückt halte, mal unabhängig davon ob dieser auch wirklich prellt oder nicht. Ich hoff ich bekomm es nochmal etwas durchsichtiger erklärt...
-
Thread
Drehencoder in Bascom
. Ob der dann (in Bascom) so bleibt ist eine andere Frage, weil Peters Code glaube ich auf die Tasten an einem Port beschränkt ist (ich habe ein Projekt mit 4 Tastern an zwei unterschiedlichen Ports). Gruß: - Reinhard -
normale Tasten, aber das solltest Du umstellen können. HTH: - Reinhard -
-
Thread
ATtiny 13 Eingang wird zu langsam erkannt
überspringe naechsten Befehl, wenn Ausgang PB3 gesetzt rjmp Abfrage3 ldi rmp,(1<<ISC01) ; Interrupt INT0 bei fallender Flanke out MCUCR,rmp ldi rmp,(1<<INT0) ; externen INT0 einschalten out GIMSK,rmp Du sperrst den Interrupt solange du den Taster gedrückt hältst, damit der Interrupt erst dann wieder ausgeführt wird, wenn die Taste losgelassen und erneut gedrückt wird. Richtig? Das Problem ist, daß nach dem Loslassen der Taste, diese wie verrückt prellt und erneut einen Interrupt während des Loslassens ausführt. Du musst
-
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
Entprellung
unterschiedlich sind (mit und ohne !). Ich hätte aber noch eine Frage zu Peter Daneggers C-Routine mit Interrupt-Steuerung: Durch welchen Teil des Codes wird gewährleistet, dass mehrere Tasten gleichzeitig gedrückt werden können, wie in der Beschreibung zu lesen ist?
Meiner Meinung nach macht er gar keine echte Entprellung, sondern nur die Flankenerkennung. Falls die Taste genau im Rhythmus der Abarbeitung der if-Anweisungen prellt, werden die Zustände einfach durchlaufen, als ob ein echter Tastendruck vorliegt. Bei einem Zähler z.B. wäre das fatal.
-
Thread
GPIO entstören - Serienwiderstand benötigt?
nicht unterdrückt - zu lang, dann reagiert die Taste nicht mehr auf einen kurzen Tastendruck durch den Menschen, verhindert aber noch besser Störungen. Wenn man keinen Taster hat, sondern nur einen (seltener) bedienten Schalter, dann ist 'zu lang' eher
~300ms, ein Delay von 500ms sorgt daher unweigerlich für Ärger. Ich hab auch schon eingetretene Taster gesehen.
-
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
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
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
Interrupt-Priorität
z.B. bei einem Interrupt an einem Pin andere Interrupts zulassen bei einem Timer Interrupt aber nicht. So dass praktisch das Timer Interrupt eine höhere Priorität hat.
sei() in der ISR allerdings eine riskante Sache. Wenn das Signal an dem Pin nämlich prellt (z.B. Taster), oder einfach nur häufiger kommt als erwartet, hast du ruck-zuck sich selbst unterbrechende Interrupts.
-
Thread
Frage zu PeDa Drehgeber Code
geändert haben bevor ein neues "A" akzeptiert wird und umgekehrt. so ist egal wie viel mal der Kontakt prellt.
Clock ->U/D schaltung ist nicht Praktikabel bei diesen Reglern. Deshalb löse ich dies immer per Interrupt und Flag's das heist beide (A+B) werden mit einem Interrupt abgefragt und (Int A braucht immer ein Vorhergehenden Int B das heißt ist ein Interuppt aufgetreten muss zuerst der andere Int auftreten
-
Thread
ATtiny13a ADC funktioniert nicht
Timer an PB0 eine LED mit PWM zum Blinken gebracht und kann die Blinkgeschwindigkeit über einen Taster IRQ-gesteuert an PB2 ändern. Funktioniert so weit auch wenn der Taster prellt und die Einstellung etwas unkomfortabel ist. Habe mir aber gedacht, den ADC mit einem Poti (50k) an PB4 (ADC2) mit verschiedenen
//ADCSRA = 0b0000.x000; #3 ADC Interrupt Enable Das wird ja nie gesetzt, also auch kein Interrupt ausgelöst. Grüße, Peter
-
Thread
Polling
scheinst du, alles mögliche zu zählen, nur nicht dein Signal. Hast du vielleicht an deinem Port einen Taster der ordentlich prellt? Oder empfängst du andere Störsignale?
brauchst. Du hast dir doch einen Timer aufgesetzt, der in regelmaessigen Zeitabständen einen Interrupt ausloest. Vom Auftreten eines Interrupts bis zum Auftreten des nächsten Interrupts zählst du mit wieviele 0-1 Übergänge an besagtem Eingangspin auftreten.
-
Thread
7-Segment und entprellung gleichzeitig?
Ich klemme die Taster immer über Dioden an die Leitungen, die deine Transistoren ansteuern. Die "andere Seite der Taster" lasse ich immer an einen Port laufen. Nun kannst du sofort in einem Interrupt die Taster auslese
mal ausgelesen wird, definitiv geschlossen oder offen ist. Da ich bisher noch keinen Taster hatte, der langsamer prellt kannst du das Prellen von Tastern im Matrixbetrieb eigentlich ausschließen. Und bedenke : Nicht auf die Timerfrequenz kommt es an, sondern auf die Frequenz mit der du effektiv
-
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
if Bedingung wird nicht wahr, warum?
uint_t; uint_t c_max = 30; volatile uint_t c_std; initialisiert. Die If Abfrage steht in nem Interrupt: ISR(TimerX...) { c_std++; if(...von oben...) { blub } ..... Durch nen Taster wird nun in der main time = 2; gesetzt. Das Programm verhält sich dann so, als ob die If Abfrage
allerdings time gleich am Anfang mit 2 initialisiere >funktionierts. Muss wohl an dem time = 2; vom Taster hängen? Kann es sein, dass der Taster prellt?
-
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
Dynamische "Beschleunigung" bei Encoder-Eingabe
Hi. Ist nicht 100% was du suchst, aber du könntest auch einen Drehencoder mit eingebautem Taster nutzen. Wenn man bei gedrücktem Taster dreht gehts zb in 10er Schritten, sonst in einern... Gruß
default: return -ACC_HUGE; } } [/c] Dazu wird noch ein 10ms Timer-Interrupt benötigt für die 50ms Meßzeit. Da die neueren AVRs alle Pin-Change-Interrupts haben, habe ich den Encoder-Interrupt als Pin-Change-Interrupt (beide Anschlüsse) ausgeführt, anstatt mit 1ms Timerinterrupt
-
Thread
Kann man mit OCR1B rechnen
dringend die Architektur deines Codes > überdenken... Wenigstens solltest du warten, das die Taste wieder losgelassen wird. Das ist immer noch nicht optimal, weil jeder mechanische Taster prellt, aber schon mal ein Schritt nach vorne. Als nächstes könntest du dich mit Tastenabfragen beschäftigen
Matthias S. schrieb im Beitrag #7099670: > Wenigstens solltest du warten, das die Taste wieder losgelassen wird. > Das ist immer noch nicht optimal, weil jeder mechanische Taster prellt, > aber schon mal ein Schritt nach vorne. Als nächstes könntest du dich mit > Tastenabfragen
-
Thread
Atmega8 Taster an Interrupt löst zweimal aus
Code, das Problem ist, dass er nach 2,5 Sekunden wieder ausgelöst wird [C] ISR(INT0_vect) { //Interrupt an Pin INT0 uart_puts("Taste gedrueckt\n"); if(TIMSK & OCIE1A) { TIMSK |= (0<<OCIE1A); } else { TIMSK |= (1<<OCIE1A); } _delay_ms(2500); } [/C]
, dann beginnt das Delay 4. Der Taster prellt, das Flag für den INT0 wird gesetzt, wegen gesperrten Interrupts wird die ISR nicht nochmal aufgerufen. 5. Das Delay ist zuende nach 2,5 sec 6. Die Interrupts werden global wieder aktiviert
-
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
Schaltung falsch oder zu sensibel?
Widerstand nach Masse) eine Schaltung aufgebaut, Eingang ist PB3. uC ist ein Attiny85, der per Interrupt aus dem Schlaf geweckt wird und der Taster ist in meinem Fall ein Öffner. Schaltung funktioniert auch einwandfrei, wenn Öffner betätigt wird. Allerdings wird der Interrupt öfter auch ausgelöst,
Ein kleiner Kondensator (10nF) parallel zum Taster könnte helfen.
-
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
Permanente Port abfrage
www.if-schleife.de/ Schreiberling schrieb im Beitrag #3776825: > das Stichwort heißt : Pinchange Interrupt oder externer Interrupt. Bei einem Schalter würde ich eher über das Timer Interrupt gehen, da ein mech. Schalter prellt, siehe [[Entprellung]].
Danke, ja hatte bei Interrupts im kopf, das sie auch immer nur am durch eine Abfrage gucken, ob ein Taster gedrück wurde oder nicht. Wie eben bei einem Fußgängerübergang ;) werde mir jetzt aber man die ganzen Ideen angucken
-
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
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
Verständnisproblem ISR am Attiny24
, die als Marker dienen soll, ist als volatile gekennzeichnet. Der Interrupt wird auch erreicht, d.h. der INT ist richtig enabled etc., Taste löst ihn auch aus, der ändert in der ISR den TEST_OUT_PIN, kann man sehr gut verfolgen. Die ISR müsste also die Variable auf 1 setzen
Interrupt einschalten: sei(). Was soll das reti() sein? Macht der Compiler selber und richtiger. Aber: Taster als Quelle von Interrupt sorgt für Freude, weil er prellt.
-
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
Taster entprellen. Wichtig brauche dringend Hilfe
Also ich habe einen elektronischen Tacho vor zu bauen. Da habe ich einen Reed Kontakt am Rad der mir einen Impuls gibt bei einer Umdrehung. Nun ist das große Prob das dieser ziemlich stark prellt. Hab das schon mit einen Tiefpass probiert. Funzt auch super . Allerdings lädt sich dieser über den Port des Atmels auf. Dieses wollte ich vermeiden und habe hier schon mal nachgefragt.Habe dann den Ansatz mit einen Compareinterrupt bekommen. Klingt auch sehr gut und so ich habe das so jetzt mal probiert. // Timer 1 input capture interrupt service routine interrupt [TIM1_CAPT] void timer1_capt_isr
-
Thread
PWM 12V Lampendimmer (Tiny26)
DDRA = 0; // PORTA als Eingang PORTA = (1<<0)|(1<<1); // PULLUP für Tasten Bit 0 und 1 timer0_init(); // timer 0 Zyklus zur Tastenabfrage timer1_init(); // timer 1 als PWM einstellen sei(); // Interrupts einschalten
Ich "entprelle" meine Taster genauso: Einfach den Taster alle 10-100ms abfragen. Man erhält nun eine Information ob der Taster gedrückt ist oder nicht. Prellt der Taster noch, kann die Information falsch sein (was aber nicht weiter
-
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
Analog Comparator => Interrupt läst sich nicht einstellen
das der Prozessor im Interrupt die Interrupts deaktiviert. Sie werden auch erst dann wieder aktiviert, wenn die Anzeige wie oft der Interrupt ausgelöst hat fertig ist. Leider löst der Interrupt immer noch viel zu oft aus (1mal
Verwendest du einen Taster? Falls ja, kann es sein, dass er prellt. Entweder - wie schon von anderen erwähnt - eine RC-Kombination mit größerem Tau als die Prellzeit vorschalten oder das Signal sauberer erzeugen. Im einfachsten
-
Thread
Wie Interrupt Entprellen
Hallo, anbei mein Code in dem ich gerne den Taster zu Int1 entprellen würde da er öfters beim Wake UP prellt, es mir aber leider nicht geling hoffe auf Hilfe vielen dank! AtMega16 AvrGCC INTERRUPT(SIG_INTERRUPT1){ } void ende(void) { lcd_gotoxy
-
Thread
6 Tachosignale von PC-Lüftern messen
errechne die Zeit. Dann gehts mit dem zweiten Lüfter weiter: Es wird wieder gemessen, wie oft der Interrupt aufgerufen wird, bis das nächste Signal kommt und die Zeit errechnet.... usw. Ich stelle mir nur grade die Frage, ob der Prozessor dann noch Zeit für so Sachen wie Display, Taster, Pieper oder
aktuellen Wert dieser Zähler in's Speed-Register und lösche sie wieder. Funktioniert recht gut. Interrupts kannst du für sowas übrigens eh vergessen, das Zeug "prellt".
-
Thread
Frage zur Dekodierung von Drehencodern
so stark, das man am besten nur alle 5-10ms nachfragt. Wer das in einem flankengetriggerten Interrupt macht, muss da richtig Zeit für aufwenden. Da die Timer ISR vorhersehbare Verarbeitungszeit besitzt und nebenbei z.B. auch noch Taster abfragen kann, halte ich das für keinen grossen Preis für eine
Wilhelms schrieb im Beitrag #3539855: > Zumindest nicht, wenn man eine vernünftige Schaltung ohne > Interrupt verwendet. :-) Aaargh, nicht schon wieder :-P Lange Leitungen zu Tastern und so sind aber schon empfindlich, wenn man sich nur auf die eingebauten Pullups z.B. der AVR verlässt. Die sind mit
-
Thread
Matrix mit 5x Rotary Encoder für STM32 uC
um die RotaryEncoder etwas zu entprellen? Die Timer zählen korrekt, aber es kommen tonnenweise Interrupts (trotz Filterung per status flag). Und das Up/Down Flag ist falsch, während man im Interrupt ist.
RotaryEncoder etwas > zu entprellen? Die Timer zählen korrekt, aber es kommen tonnenweise > Interrupts (trotz Filterung per status flag). Und das Up/Down Flag ist > falsch, während man im Interrupt ist. Schaue dir mal die Funktion "encode" an. Die ist auch im Interrupt stabil und prellfrei.
-
Thread
MSP430 Schalterentprellung Not vs. Elend
== 3 && (P2IN & BIT1) ) //Taster losgelassen { zustand = 0; } } void htaster(void) { static unsigned char zustand; if(zustand == 0 && !(P2IN & BIT2) ) //Taster wird gedrueckt (steigende Flanke
gewissen Zeitabständen nachzusehen, ob sich der Zustand stabilisiert hat. Mach ich das zu schnell, dann prellt der Taster noch, während ich hinsehe. So gesehen ist deine Zustandsmaschine, wenn man sie zu schnell auswertet, eigentlich gar keine definierte Entprellung, sondern ein Mechanismus, in dem du das Drücken
-
Thread
ESP8266, Micropython, hängt teilweise, ev. IRQ- und/oder GPIO0-Problem?
) ledT3 = Pin(12, Pin.OUT) ledT3.value(False) ledT4 = Pin(16, Pin.OUT) ledT4.value(False) taster1 = Pin(0, Pin.IN, Pin.PULL_UP) taster1.irq(trigger=Pin.IRQ_FALLING, handler=handle_interrupt) taster2 = Pin(5, Pin.IN, Pin.PULL_UP) taster2.irq(trigger=Pin.IRQ_FALLING, handler=handle_interrupt) taster3 = Pin(4, Pin.IN, Pin.PULL_UP) taster3.irq(trigger=Pin.IRQ_FALLING, handler=handle_interrupt) taster4 = Pin(14, Pin.IN, Pin.PULL_UP) taster4.irq(trigger=Pin.IRQ_FALLING, handler=handle_interrupt
-
Thread
Verständnissfrage zu ENTPRELLUNG.
unter 20ms hinzubekommen und zwar OHNE delays. Deswegen dann auch die Interrupts die den µC nicht "anhalten". Das würde dann praktisch bedeuten das wir einen Taster 4 mal innerhalb z.b. 20ms abfragen und bei einer Folge von 1 0 1 0 einen Tastvorgang registrieren. - Sind
Ähmm, ohne die Funktion jetzt angeschaut zu haben: die Entprellung eines > Tasters bzw. mehrerer Taster sind doch wirklich absolute Basics. Was viele aber nicht einsehen wollen. Z.B. bei unserem teuren Kaffeautomat prellt der Drehgeber zur Mengeneinstellung wie Sau. > Ich > brauche halt irgend
-
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
Drehregler an uC - geht das?
Die Pin-Change-Interrupts sind für Drehencoder ungeeignet, am einfachsten geht es mit dem folgenden Code in einem Timer-Interrupt: http://dse-faq.elektronik-kompendium.de/dse-faq.htm#F.29
Fehlzählungen bewirken. Ich hatte auch Stephans Beispiel so verstanden, daß die 3ms Wartezeit im Interrupt zur Entprellung nötig sind. Aber bezüglich Warten im Interrupt hab ich ja schon öfter meine Meinung kund getan. Peter
-
Thread
Problem bei Frequenzmessung über externes Interrupt
Interrupt Routine wird dann nur der Timer0 vorgeladen, dass ab sofort in 1ms überlauft und evtl. anstehende Interrupt Flags des Timers gelöscht, falls dieser zufällig in der Zwischenzeit beim Abarbeiten der externen Interrupt Routine übergelaufen wäre. Nach 1ms wird dann die Timer0 Interrupt Routine aufgerufen und prüft, ob der Reedkontakt noch betätigt ist. Wenn ja, müsste er nicht mehr prellen, da Schaltzeit inkl.
-
Thread
Entprellen von 4 Taster
void) { status = ((status<<1) | (!bit_is_clear(PIND,PIND0)) | 0xe000); if (status==0xf000) Bit.taste0_status=0; else Bit.taste0_status=1; } *************************************************************** Funktion kann im Hauptloop stehen, oder per Interrupt regelmässig aufgerufern werden. Taste gedrückt entspricht Pegel "0". In 'status' wird eine '1' von rechts nach links geschoben, die die letze Flanke '1->0' darstellt. Falls Taste nicht prellt, folgen nur noch'0'. Im gesamten werden
-
Thread
Verständnisfragen zur Tasterentprelllung Version von Peter Danneger
Durchgang mal den key_state zu ändern... Das passt schon so. Bei deinem ersten Durchgang wird die Taste nicht als gedrückt gewertet. Aber: ct0 bzw. ct1 haben sich verändert. Der für Bit 1 zuständige 2-Bit Zähler ist jetzt 2 und nicht mehr 3. Der nächste Timer-Interrupt kommt. Die Taste ist immer
in der der Pin möglicherweise 2 bis 3 mal zwischen gedrückt und nicht gedrückt wechselt, weil die Taste prellt. Und genau dieses gilt es auszufiltern - das ist der Zweck der ganzen Übung. Damit eine Taste tatsächlich als gedrückt gilt, muss sie mindestens 4 mal hintereinander als gedrückt vorgefunden
-
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
uC Programmiertechniken - Gibt es da Bücher?
Drückt man die wird die aktuelle GPS Position samt aller Daten des Strings auf SD Karte gesichert. Prellt natürlich wie Hulle das Teil, beim Drücken und Loslassen. Übergeordnet läuft ein 1s Timer INT, der das Tastenflag entgegen nimmt und die Taste nach 2s wieder freischaltet für neue Drücke (fallende
man die wird die aktuelle GPS Position > samt aller Daten des Strings auf SD Karte gesichert. Prellt natürlich > wie Hulle das Teil, beim Drücken und Loslassen. > > Übergeordnet läuft ein 1s Timer INT, der das Tastenflag entgegen nimmt > und die Taste nach 2s wieder freischaltet für neue Drücke
-
Thread
ATTINY 13 Weihnachtskarte LED - Fehler im Code?
_PIN ); LED_DDR &= ~(1 << BUTTON_INPUT_PIN); } void init_interrupt() { MCUCR &= ~0x3; sei(); } void free_external_interrupt() { //GICR |= (1 << INT0); } void lock_external_interrupt() { //GICR &= ~(1 << INT0); } void power_down()
*kopfkratz* Neben den Widerlingen solltest Du einen Timer statt delay nehmen und wie wird der Taster denn erkannt ? Ein Taster prellt, d.h. wenn Du den nur am externen IRQ ohne Softwareentprellung hast gibt's viele IRQs hintereinander. Und eine sinnvolle ISR sehe ich auch nicht ? Du solltest in
-
Artikel
Entprellung
Funktionsweise: Beim Umschalten wird der Kondensator immer sofort umgeladen. Während der Kontakt prellt, befindet er sich in der Luft und hat keinerlei Verbindung. Während dieser Zeit übernimmt der Kondensator das Halten des Pegels. Dimensionierung: Ist der entprellte Taster an ein IC angeschlossen,
den Widerstand R 2 . Demnach ändert sich der Ausgang des Inverters auf den Pegel 1. Während der Taster prellt, kann sich die Spannung über dem Kondensator nicht sprunghaft ändern, da das Auf- und Entladen eher langsam über die Widerstände erfolgt. Außerdem sind die Schaltschwellen für die Übergänge
-
Thread
ATmega8 ADC-Durchschnittsberechnung
krusti schrieb im Beitrag #4267021: > (wo ich > glaube das dieser entweder prellt oder ich ihn schaltungstechnisch > falsch angeschlossen habe) Wie hast du sie angeschlossen? Laut COde [c] if ((PINB &TASTE_1)) [/c] ist das dann ein Taster, der beim Drücken gegen
halt die ABfrage um. [c] if (!(PINB &TASTE_1)) [/c] Aber wenn du in deiner Verschaltung keinen Pulldown Widerstand hast, dann hängt der Pin bei nicht gedrücktem Taster in der Luft. Ein in der Luft hängender EIngang hat aber mitnichten zuverlässig
-
Thread
Zähler zählt falsch
Tasterentprellung (http://www.mikrocontroller.net/articles/Entprellung). Aber wieso funktioniert der Interrupt bei mir nun nicht sauber? Der µC bekommt eine saubere Flanke und sollte doch nur einmal zählen.
freien Pin und toggle den in der Interruptschleife. dann kannst Du feststellen ob es ein Problem im Interrupt (oder der Initialisierung) ist, oder eher beim Anzeigen der Werte. Pullup am Portpin nicht vergessen.