-
Thread
Erster Versuch in VHDL (Taster entprellen)- so in Ordnung?
das mal ein paar erfahrene VHDLer kritisieren könnten. Kurz gesagt tastet der "Entpreller" die Taste ab. War der vorherige Zustand "Taste nicht gedrückt", dann wartet er auf ein high- Signal auf der Leitung und inkrementiert einen Zähler bei jedem abgetasteten high- Signal. Prellt die Taste, dann
Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 Genauso kannst du es in VHDL umsetzen. Dem Timer-Interrupt entspricht ein Zähler der ein Clock-Enable-Signal erzeugt. Vorteil: du kannst mehrere Tasten gleichzeitig auswerten ohne dass du dazu mehrere Zähler brauchst.
-
Thread
Spannung entprellen
Ich möchte mit meinem atmega8 Spannungsimpulse zählen. Leider prellt das Eingangssignal vom Wechsel von High nach Low. Wie kann ich das Signal mit externer Hardware entrpellen?
ja über die Flanken. (mittels Komperator der bei steigender Flanke einen Interrupt auslöst) Tiefpass: C: 100nF, R: ca. 16k
-
Thread
Nach einer Interrupt Routine wird der PORT zurückgesetzt
Ja der Interrupt wird durch einen Taster ausgelöst. Laut Datenblatt werden die beiden Interrupts mit Steigender Flanke getriggert.
Daniel V. wrote: > Ja der Interrupt wird durch einen Taster ausgelöst. Laut Datenblatt > werden die beiden Interrupts mit Steigender Flanke getriggert. Taster an Interrupts zu hängen ist generell eine schlechte Idee, da Taster
-
Thread
Atmega8 - UART sendet doppelt
Verbesserungsvorschläge zu meinem Code dankbar: Viele Grüße Max #include <avr/io.h> #include <avr/interrupt.h> static volatile unsigned char text[] = "Dies ist ein Versuchstext! "; static volatile unsigned char *ptext = text; //************Unterprogramme************** void uart_on(void){ UBRRL
INT0 ist ein Taster? Der prellt.
-
Thread
UART Bootloader ATtiny13 - ATmega644
Hier ein Bild der Fuses die gesetzt sind. Den Reset löse ich über einen Taster aus.
habe nun einen Kumpel gefragt, der mir die Routine entsprechend angepasst hat um bei gedrücktem Taster den Bootloader nicht zu verlassen. Der Taster hat einen externen Pullup Widerstand. Patch im Anhang, vielleicht kann sowas ja noch mal jemand gebrauchen. Gruß Malte
-
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
Taster abfragen? STK500
DataDirRegister auf Eingang von PORTB for(;;) { if (PORTB==0x7F) //wenn der "linke"Taster gedrückt wird, dann.. { PORTA=0xA5; } } } __________ es leuchet aber leider nüx. Ich habe mir schon überlegt, ob es denn daran liegt, dass die Taste möglicherweise prellt (mech. Schalter
Durchlauf // fertig ist TIMSK |= (1<<TOIE0); // Für den Timer 0 den Interrupt bei Overflow erlauben sei(); // Interrupts global freigeben for(;;) { if (PINB == 0x01) // wenn Taster1 gedrückt wird, dann.... { TCCR0 = 0x00;
-
Thread
Entprelllung
widersinnig. Du musst erst mal die Warteschleifen loswerden, z.B. >indem du stattdessen einen Timer-Interrupt verwendet. Siehe Artikel >Entprellung. Ersten das, und zweitens solltest du in er Routine Debounce ALLE Tasten gleichzeitig lesen und verarbeiten. Dann musst du nur einmal warten, wobei 100ms arg konservativ sind. So lange prellt keine Taste (Es sei denn sie ist kaputt) 10ms sollte reichen. MfG Falk
-
Thread
Interrupts vor Aktivierung verwerfen
keine Taster o.ä. an den Interrupt-Pins hängen?
Mit "GIFR = 255" löschst Du alle Flags in GIFR. Tasten an Interrupts gehört sich nicht. Und Funktionen, die 2 Sekunden dauern, in einer ISR aufzurufen gehört sich noch viel weniger...
-
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
Interrupt Atmega168
> ich möchte am Atmega168 einen ext. Interrupt am PCint18 (PD2) auslösen, > fallende Flanke. > Er löst aber bei beiden Flanken aus. > Wo liegt mein Fehler? Wenn die Konfiguration wirklich stimmt dann prellt wahrscheinlich dein Signal. Woher
pos., neg. Flanke oder Low-Pegel reagieren sollen. Generell aber wieder mal anzumerken: Externe Interrupts sind zur Abfrage von mechanischen Kontakten eigentlich eher ungeeignet. Besser mit nem Timer ne Zeitbasis erzeugen und alle paar zig Millisekunden die Taster einlesen. Dann kann man sich den ganzen
-
Thread
Software-Entprellung via Timer
dabei und stehe momentan vor einem kleinen Problem. Ich habe einen Mega32 und hab an den externen Interrupt1 einen Taster angeschlossen. Dieser prellt nun doch sehr heftig und nun versuche ich mich gerade an einer Software-Entprellung. Eine einfache Warteschleife wollte ich nicht nehmen da ja sonst alles
eventuell ist es nicht rübergekommen - ich betreibe die Taster nicht direkt am Interrupt, sondern der Interrupt sagt mir das eine Taste gedrückt wurde und dann wird der entsprechende Port wo die Tastatur hängt herkömmlich abgefragt. Wieso sollte ich ständig
-
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
MSP430 Anfänger: Probleme beim Lösen einer Aufgabe
ich benutze das Olimex Board mit dem MSP430 F149, Quarz 32kHz und habe folgende Beschaltung: Taster 1 an P1.0 Taster 2 an P1.1 Taster 3 an P1.2 LED an P2.0 (werden die Tater betätigt, liegt GND an die Pins, ansonsten Vcc) Die Funktion soll nun so sein: wird Taster1 (P1.0) betätigt, so
Hast du die Taster per Software entprellt ??? Du must wenn das Programm erkannt hat das du den taster betätigt hast das signal ca 10ms später noch einmal abfragen um sicherzustellen das der taster gerade nicht prellt
-
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
MSP430 Frage zu Interrupts/Taster
Hallo, ich habe 5 Taster an meinem f149 angeschlossen, über Interrupt. Die Tasterabfrage per Interrupt funktioniert prima. Nun wollte ich folgenedes realisieren, bleibe da aber irgendwie stecken. Die Eingänge liegen auf
dann lösch doch einfach in der ISR für Taster1 das IFG und ändere die Richtung der Flankenerkennung und verlasse die ISR. Beim loslassen erzeugt das dann halt wieder ein Interrupt. Je nachdem wie dein Taster prellt kann es sein dass du dich dann
-
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
externer Interrupt
Und wenn, wie es bei Tastern nun mal passiert, das Signal am Eingang prellt, springt der Controller diverse Male aus der Main heraus. Tasten wertet man aus, indem man sie per Timer in regelmässigen Abständen (zig Millisekunden
externen Interrupt in Zusammenhang mit einem Taster gibt, und das ist eben der, wenn man den µC per Tastendruck aus dem Schlaf holen will!
-
Thread
eigenes mega16/32 board
gepolte und ungepolte c richtig zeichen entstör c fehlen c am quarz is auch nen ungepolter taster haben nix am iterrupt zu suchen es sei denn du willst wissen wie stark der prellt D1 welcehn zweck hat die keinen oder ? schau du dir mal lieber die sahen von anderen an und lerne
@... einen Taster kann man auch im Polling abfragen. Niemand zwingt einen den Pin/Port als Interrupt Eingang zu nutzen.
-
Thread
RX-TX verwendet: dadurch gesamter Port blockiert?
von RX-TX meine Tasten anschliessen kann? Das gleiche passiert übrigens auch auf PortA: Dort verwende ich ADC0 - und muss dort sogar auf 7 Pins verzichten. (auch hier Interrupt gestützt, d.h. nach Auswertung wird Interrupt
UART wieder frei ist. Weiterhin ist das mit der Schleife unsauber, wer garantiert dir, dass der Taster nicht während des Schleifendurchlaufs prellt? Schau dir mal ein paar Routinen zur Tastenentprellung an (Codesammling) Gruß Roland
-
Thread
Hiiiiiilfe - versuche mit Taste einen RS232-Befehl zu senden
wenn mir jemand nen Tip geben könnte, woran mein Programm scheitert. Liegt es an irgendwelchen Interrupts? Oder ist einfach mein Programm fehlerhaft? Danke für jede weitere Hilfe.
Versuch doch mal die Taste zu entprellen. Du wartest auch nicht ob die Übertragung fertig ist. ( Da gibts ein Flag das du abfragen kannst. ) Wenn jetzt die Taste prellt sendest du zu schnell hintereinander.
-
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
langsamster Takt
Wenn der Taster prellt muss man das reverse-Bit setzen und damit den Controller in den Rückwärtsgang zwingen. MW
hat, gibt es einen Software-Trick zum Single-Step-Betrieb: Man initialisiere einen externen Interrupt, und schließe dort einen Taster an: Drückt man den Taster, landet man im Interrupt. Dort wird der Taster software-entprellt, und beim loslassen des Tasters wieder entprellt. Beim wiederholten
-
Thread
Universelle Tastenabfrage
nicht mehr und die rpt wird heruntergezählt. Jedoch unterscheidet deine Routine dann nicht welche Taste gedrückt ist und wie lange bereits. Kann nicht im Moment der Fall eintretten, dass (Annahme REPEAT_START = 50) Taste 1 die ersten 40 Interrupts gedrückt ist und nach Interrupt 30 auch noch Taste 2 hinzukommt. Nun wird im Code nach 50 Interrupts bei Taste 2 ein langes drücken festgestellt, obwohl sie nur 20 Interrupts gedrückt war. Ich hoffe das ist so weit verständlich. Und sollte auch nur als Anregung dienen. Gruß Thomas
-
Thread
Externer Interrupt
Interruptroutine eine Warteschleife hat, aber du wirst schon wissen was du machst. Ich würde statt Interrupt vergewaltigen und unterdrücken lieber den Taster entprellen.
@Cerberus: Solange der Controller sowieso läuft, kann man den Taster meistens auch im Rahmen eines Timer-Interrupt pollen (ms-Bereich). Soviel Zeit hat man immer. Wie Hannes schon schrieb, kann man einen Controller per Interrupt aufwecken. Dafür muß man den Taster
-
Thread
"zwei Stufen LEDs"
weil dein Taster prellt!
Ich frag die Taste nicht ab... sie ist am INT0 Pin angeschlossen. Wenn man sie drueckt erzeugt sie einen Interrupt. Ist das nicht Standard so? kann man das eleganter machen? mg, Johannes
-
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
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
Taster entprellen
"Kann man die Entprellung auch ohne Interrupt bewältigen?" Im Prinzip ja, ist aber lange nicht so eine schön kleine, schnelle, zuverlässige und universelle Lösung. In der Regel machen diese auch nur eine Taste, d.h. für 8 Tasten braucht
, dass die Taste nicht mehr prellt. Unter C würde ich das Timing mit Interrupt lösen (bleibt Zeit um noch etwas Sinnvolles zu tun). Ansonsten einfach verschachtelte Zählschleifen, bis die Zeit abgelaufen ist. Taste
-
Thread
Programmablauf, Interrupts, Timer, Schrittmotor, PWM
Tasten werden normal immer gepollt und nicht per Interrupt bedient. Einfach typisch alle 2-10ms mal nachschauen. Entprellung z.B. so, dass eine Taste erst als losgelassen gilt, wenn sie über 2-4 Poll-Zyklen
B. eine Schaltung wie bei den Handys mit einem Taster statt eines Schiebeschalters ein- und ausschalten können, dann könnte man dies mit dem Power-Down-Modus realisieren, und in diesem Fall *müßte* man tatsächlich den Taster auf den externen Interrupt
-
Thread
Entprellen
der "Schalter" entprellt werden. Die Lösungen, die ich im Forum gefunden habe, sind vor allem für Taster geeignet und das schöne an meiner Lösung (falls sie je zum Laufen kommt...) wäre, dass ich den Ereigniszähler im Programm zu beliebigem Zeitpunkt abfragen kann, ob es einen Kontakt gegeben hat. Ich
Ja, dann müsste ich mit Interrupts arbeiten und das geht über meine bescheidenen Möglichkeiten (sprich Kenntnisse) hinaus. Ich programmiere in mBasic... Danke trotzdem Christian
-
Thread
Ablauf Taster-Abfrage
bedient oder was auch immer. Wenn der Controller jetzt die ganze Zeit darauf warten würde, was welche Taste macht, wäre das ziemlich uneffektiv. Bei grösseren Projekten macht man es dann sowieso so, dass die Tasten im Rahmen eines Timer-Interrupts abgefragt werden.
@Rahul: Mit welcher Timer-Interrupt Zeit fragt man die Tasten während dem Hauptprogramm ab, sodass man nichts verpasst? (@HanneS: ich meine nicht die Entprellzeit)
-
Thread
Entprellen in C, schlanke Routine
************ 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
Entprellung vorschlagen: 1) Die erste Flanke triggert einen Speicher (z.B. flankengetriggerter Interrupt) 2) Danach interessiert mich die Taste erstmal nicht, d.h. ich ignoriere sie für mindestens die Prell-Zeit. 3) Dann werte ich die Taste wieder aus (Interrupt scharf schalten) Mit dieser Entprellung
-
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
Entprellen gleich aller Tasten mit nur 7 Zeilen
Werte bekommen etc., und nun kommst du daher und meinst: "Hey, Timer0! Sag mir mal Bescheid, wenn die Taste nicht mehr prellt!" Natürlich ist auch diese Nuß zu knacken (bei jeder TCNT-Zuweisung erst nachschauen, ob da irgendwo noch eine Taste am Drücken ist, falls ja - alten Zählerstand speichern, neuen
1ms pro Periode und maximal 10 mal nacheinander. Nun vergleiche dies mit einem Extremfall wo der taster mit 1 MHz prellt und das 1000'ende male hintereinaner. Oder bei einem Fall wo der Taster nicht mehr genügend mechanischer Gegenspannung besitzt und die Kontakte lose aufeinander liegen, sprich ein
-
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
» Geht das und wie??? Takterzeugung, 2Taster einlesen usw..
NICHT *rofl* In der ISR habe ich: 1. die globale Interrupt freigabe gelöscht 2. die Tasten mit 10ms entprellt 3. ext. Takt einlesen und an OC1 ausgeben 4. überprüfen ob Taster noch betätigt, wenn ja zurück nach 3. 5. die globale Interrupt freigabe gesetzt
NICHT *rofl* In der ISR habe ich: 1. die globale Interrupt freigabe gelöscht 2. die Tasten mit 10ms entprellt 3. ext. Takt einlesen und an OC1 ausgeben 4. überprüfen ob Taster noch betätigt, wenn ja zurück nach 3. 5. die globale Interrupt freigabe gesetzt
-
Thread
Taster an Int0
dann den Taster noch entprellen? Meiner (noch formbaren) Meinung nach müsste doch der Interrupt bei der ersten steigenden Flanke ausgelöst werden, egal ob danach der Taster noch prellt, oder? Ich lasse mich
ich nehme für Tasten überhaupt keinen Interrupt. Alle 10ms mal vorbeischaun, ein Timer läuft doch sowieso in fast Programm.
-
Thread
Frage zu Lauflicht
Hi... Warum nutzt du Verzögerungsschleifen? Häng doch alles in einen Timer-Interrupt, dann kannst du später noch eine Entprellroutine für (Up-Down-) Tasten einbauen, mit denen du Tabellenauswahl und Tempo ändern kannst. Zur Tabellenauswahl: Wenn alle Tabellen gleich groß sind
Hi... Missverständnis: Timer lösen auch Interrupts aus. Ich nenne nunmal alles, was Interrupts auslöst (was über die Int-Vektoren geht), Interrupt, nicht nur die externen Pin-Int's. Wenn Peter meint, mit (ext.) Int geht das schlecht, dann mag
-
Thread
Taster entprellen
gerade an meinem Wecker-Projekt, die Uhrzeit funktioniert schon, jetzt möchte ich mit Hilfe von Tastern eine Weckzeit einstellen. Aber ich habe gelesen, dass ein Taster prellt und ich würde gerne das Signal ohne prellen auswerten. Ich habe mir überlegt, dass ich 40 mal hintereinander den Taster auslese
C++ oder Assemblembler ? Hängt dein taster an einem interrupt ? So wie du das schilderst nehme ich fast an, dass du asm verwendest. In Prinzip ist das so wie du es machen willst schon richtig. MfG Axos
-
Thread
einfacher Code für einen Zähler
Hi... Dein Taster prellt... ...nicht die Zeche, sondern ehe er sich entscheidet, ob er an oder aus sein soll, hat er schon etliche male hin-und hergeschaltet... Du wirst also um eine Entprellen der Tasten nicht herum
Codebeispiele findest du sicherlich im Tutorial oder in der Codesammlung. Später dann mal werden Timer und Interrupt deine Freunde sein... ...HanneS...
-
Thread
Was läuft denn hier eigentlich mit meinen Interrupts!?
bin der Verzweiflung nahe: Ich habe eine Schaltung mit 90s8515, die einen Geber (Reed, momentan Taster) am INT Eingang hat. Wenn jetzt der Interrupt ausgelöst wird, wird ein Zähler erhöht (immer um eins). Zum Problem: Manchmal zählt er aber gleich zwei Schritte hoch, woran kann das liegen? Prellen
jeder taster prellt, der eine mehr, der andere weniger.
-
Thread
ATTiny10/11/12
ich versuch schonmal ein paar sachen zu erklären: entprellen: geht auch mit dem timer interrupt, indem man z.b eine taste erst als gedrückt anerkennt, nachdem sie mehrere male den gleichen zustand hat. beispiel: wenn die taste bisher immer low war und dann wild zwischen low und high wechselt
noch etwas erweitert. Mit *NEU* gekennzeichnet. Statt den Reset Pin zu nehmen kommen noch zwei Taster an die beiden Eingänge! Eigentlich würde auch ein Taster, der mit beiden Eingängen verbunden ist reichen.... Wenn diese beiden Taster länger als 5s also 125 Interrupts gedrückt wurden springt das
-
Thread
AVR ASM Interrupt Priorität
Wie sieht es denn bei folgenden Beispiel aus! Ich habe zum Beispiel einen Overflow Timer Interrupt und ein INT0 Interrupt, wo ein Taster dran ist. Beim Timer Interrupt wird eine Variable hochgezählt. Btw. muss die volatile sein? So jetzt halte ich den Taster gedrückt. Kommt der Timerinterrupt
Anwendungen nicht die optimale Lösung sein. Nein, umgekehrt: Über Interrupt ist nicht die optimale Lösung. Jeder Taster prellt. Wenn er beim Niederdrücken z. B. fünf mal prellt, dann gibts zwei Möglichkeiten: 1. Der INT0-Handler wird auch fünfmal aufgerufen, weil er
-
Thread
Warum zählt mein Counter nicht?
Prozessortakt (also Vorteiler 1:1), nicht etwa "ohne" (also abgeschaltet) Übrigens ist ein Taster als Impulsquelle an T0 äußerst ungeeignet, da der Kontakt eines Tasters prellt. Das sollte schon ein prellfreier elektronisch erzeugter Impuls sein. Hast du das mal mit dem AVR-Studio simuliert?
Register (z.B. r15) hochzählen und an PortB ausgeben. Ganz ohne Timer/Counter, dafür mit einem Interrupt... ...HanneS...
-
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
Delay in Interrupt - routine
HI Mein Interrupt 0 ist durch ein Taster gesteuert. Ich möchte die variable "press" inkrementieren, wenn der Taster nur kurz gedrückt ist. Wenn der Taster jedoch 2sec lang gedrückt wurde, soll auf dem Port
> also das mit dem negierten Interrupt pack ich nicht ganz? Wie ich oben schon mal schrob: Du registrierst den Interrupt auf der jeweils entgegengesetzten Flanke. Wenn also anfangs die H->L Flanke den Interrupt ausgelöst hat (Taster
-
Thread
inputs am avr funktionieren nicht richtig!
jep. Der Vollständigkeit halber könntest Du den Taster noch entprellen, indem Du einen 100nF Kondensator zwischen avr-pin und masse anschließt. Oder das entprellen in der Software erledigen.
ich den internen pullup nicht aktiviert habe? gibts bestimmt situationen wo das nicht geht, oder (interrupt, uart...)? wie muss ich den input dann beschalten? meine zeichnung ist da sicherlich nicht ganz richtig, oder?
-
Thread
INT0 Endlosschleife
der Interrupt sauber abgearbeitet wird. Wenn ich den Taster jedoch länger (1-2 Sekunden) gedrückt halte, kehrt er nicht mehr aus der Routine zurück. Ich programmiere in C. Was kann ich dagegen machen?
Habe mir jetzt mal ein paar werte über die uart ausgelesen. Wie es aussieht, arbeitet er den Interrupt ordentlich ab. Kehrt aber nicht wieder ins Hauptprogramm zurück. Anmerkung: der Interrupt wird bei mir, solange ich den taster gedrückt halte, ständig abgearbeitet (wiederholung)