-
Thread
5 Tasten am ADC
******************************************************************************* * Interrupt Service Routine: TIMER1_COMPA * * * * *Aufgabe: Der Vergleichswert von Timer1 (OCR1A) ist so gewählt, daß er alle 4msec * ereicht wird und auch zum Entprellen von Tasten genutzt werden
. Das funktioniert bei mir in verschiedenen Varianten (Timer-Interrupt, ADC-Interrupt) mit bis zu 16 Tasten (mehr müsste auch gehen, habe ich aber noch nicht probiert) ohne Probleme. Allerdings in ASM. ...
-
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
IR Fernbedienung mit IRSND
immer so machen. Vielen vielen Dank Frank. Jetzt muss ich nur noch schauen wie man es macht, eine Taste mit zwei Signalen zu belegen. Taste kurz drücken ist "Wert1" Taste länger drücken ist "Wert2" Gruß Andreas
PCINT-Gruppe sperren }; ... for (;;) { GIMSK = (1<<PCIE0); GIFR = (1<<PCIF0); // prellte da etwas? PCMSK0 = (1<<PCINT3); // Taster auf PB3 MCUCR = (1<<SE)|(1<<SM0); // power-down-mode sleep_mode(); ... if (!(PINB & (1<<PINB3))) // Wenn Taster PB3 low gedrückt
-
Thread
Drehgeber an Arduino, external interrupt ISR wird doppelt ausgeführt
bestimmt und es wird vorerst 2 sekunden gewartet damit das clk Signal auf jeden Fall nicht mehr prellt. Wegen dem Prellen setze ich am Ende noch das Interrupt Flag register zurück um den besagten merfachaufruf zu verhindern und aktiviere den externen Interrupt wieder. [c] void loop() { if(int0
geht es, alle 1ms den Drehgeber bzw. die Tasten abfragen, aber niemals die Flanke am Pin direkt einen Interrupt auslösen lassen.
-
Thread
IRMP - Infrared Multi Protocol Decoder
Abend, hab hier mal den Log aller Tasten der Fernbedienung. In der IRMP verwende ich 10000 Interrupts, genauso wie in der IRSND. habe irgendwie das Gefühl, das beim senden durch die recht großen Commandos irgendwas schief geht, denn
Hallo, anbei der log für die JVC für alle 5 Tasten des Steuerkreuzes. Wie gesagt, nur die Taste right liefert bei irmp_get_data() null zurück. IRMP timer irq ist 14400 Hz. Das Enablen des IRMP Interrupts nur bei Infrarot-Aktivität werde ich dann
-
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
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
LPC1769 Kompass Sensor auslesen mit timer0 interrupt
ausgegeben werden, was auch einwandfrei funktioniert. Der Knopfdruck wird bisher über einen GPIO-Interrupt registriert. Da der Taster aber mordsmäßig prellt, möchte ich sowohl Taster mit Timer0 periodisch abfragen (und somit entprellen), sowie auch das Timing der Kompassdatenabfrage regeln. Mit Timer1
soll ja niemals anhalten sondern Interrupts auslösen.
-
Thread
AVR GCC Poti wait
möchtest. Du musst dir zuerst überlegen, wie du vorgehst und welche Funktionen du brauchst : 1.) Taster drücken soll erkannt werden => Funktion : Taster erfassen 2.) Taster prellt => Funktion : Taster entprellen 3.) AD-Wert des Poti´s einlesen => Funktion : AD-Wert lesen 4.) AD-Wert in einen Zeitwert
dazu kommen noch 2 Taster zum manuellen umschalten die die wait funktion "Breaken" soll Also per Interrupt
-
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
AVR: Dreh-Encoder mit Interrupts
PIND.1 ist #define PHASEB (PIND & 1<<PIND2) // PIND.2 ist // phasen-check: bestimmung ob interrupt mit fallender oder steigend. //flanke. Hier verwende ich interrupt1 auch alf fallende Flanke für den //Taster void check_phase(void) { switch (PHASEA+PHASEB) { case 0: EICRA = 0x3E
(10k Pull-Up und 100nF nach Gnd) dann reicht das allemal um mit einem kleinen Drehencoder mit Taster ein Menue zu steuern rauf, runter, weiter..... Es gibt Fälle, da hat man Timer frei, aber keine Interrupts ich hatte aber das Problem, keine Timer sondern die Interrupts frei gehabt zu haben
-
Thread
Attiny 13 möglichst Stromsparend
@ Cal (Gast) >- Spannungsversorgung 3V >- Interrupt über externen Button sollte möglich sein >- Mit irgend einem Timer sollte ich 1h timen können >- Jede Stunde (oder eben durch den Button) wird dann ein Pin kurz auf >High gesetzt >Viel mehr
so. Lass > ihn alle 8sec aufwecken, check, sleep. Kommt auf die Implementation an. Dient die Taste nur zum Aufwecken ist es doch egal, ob die prellt. Als Bedienelement sollte/muß sie entprellt sein. Auch hier kommt es auf die Funktion der Taste an. Bei dem kleinen Tiny kann auch HW Entprllung statt
-
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
wie erzeuge ich von einem windows laptop aus einen 1 mikrosekunden puls mit 3.3 Volt
Hi was muss ich tun: ich habe eine STM32 PCB und habe einen PIN auf external interrupt geschlatet. Für testzwecke will ich auf diesem Pin PC gesteuert Pulse geben und einen Interrupt auslösen. Aktuell generiere ich diesen Signal über einen USB Relay. https://www.amazon.de/HALJIA-Module-Control-Switch-Intelligent
Beitrag #7204346: > was muss ich tun: ich habe eine STM32 PCB und habe einen PIN auf > external interrupt geschlatet. Für testzwecke will ich auf diesem Pin PC > gesteuert Pulse geben und einen Interrupt auslösen. > Aktuell generiere ich diesen Signal über einen USB Relay. > https://www.amazon.de/
-
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
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
Ausgänge getrennt schalten
zwischengespeichert und mit den Eingängen xor-verknüpft. Was man noch beachten müsste: Problem bei mehr als zwei Taster (fast) gleichzeitig gedrückt und Entprellung der Taster. Gruß Thomas
ensprechende Ausgang getoggelt (xor-Verknüpfung). Entprellen ist ganz einfach: Die Eingänge mit 50 Hz im Interrupt abfragen, da braucht man sich um entprellen keine Gedanken mehr machen, kein Kontakt prellt 20ms lang...
-
Thread
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
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
Tasterabfrage
0 { GIMSK &= ~(1 << INT0); // externer Interrupt deaktiviert } unsigned char taster_abfrage(void) { if(!(PINB & (1 << PINB2))) // wenn Taster gedrückt { _delay_ms(80); // Wartezeit 80ms if(!(PINB & (1 <<
ISR(INT0_vect) // externer Interrupt 0 { GIMSK &= ~(1<<INT0); // externer Interrupt deaktiviert } unsigned char taster_abfrage(unsigned char neuer_zustand) { static unsigned char zustand = EIN; if(neuer_zustand =
-
Thread
Lebensdauer Drehdencoder oder Poti
eines billigen potis ist der eines solchen inkrementalgebers überlegen. Gibt es analoge potis mit Taster?
>> ein µC zur Dekodierung in Frage. Und dem ist es egal, ob man >> die schlechte Lösung per Interrupt oder die richtige Lösung >> per Zustandsauswertung verwendet. > Interrupt und Zustandsauswertung ist kein antagonistischer Widerspruch. > Man kann Interrupts so auswählen und programmieren,
-
Thread
Eingabetaster mit zwei unterschiedlichen Funktionen (PIC)
sich der Taster geänder hat und setzt fallweise das passende Bit. Entprellt ist das dann auch gleich, wenn der Taster nicht länger als 10ms prellt. Funktionen, die Benutzereingaben verarbeiten, bekommen einen Pointer
~~~|+++++|###########| Dann habe ich eine Funktion, die zählt einen Zähler hoch, so lange der Taster gedrückt ist. Wird der Taster los gelassen, wird geschaut, wie lang der Taster gedrückt war: - Zähler < TKURZ ist, dann wird die Funktion kurzer_druck() aufgerufen - Zähler > TKURZ ist, dann wird
-
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
Magnetic Loop Steuerung (Arduino)
StepperPos = -s; //change the 1 to steps to take when encoder turned } last_interrupt_time = interrupt_time; } } void doEncoderB() { static unsigned long last_interrupt_time = 0; unsigned long interrupt_time = millis(); // If interrupts come faster than 200ms, assume
} void loop() { long Counter; static long lastCtr; noInterrupts (); Counter = count; interrupts (); static unsigned long last_interrupt_time = 0; unsigned long interrupt_time = millis(); // If interrupts come faster than 200ms, assume it's a bounce
-
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
welchen Reset IC verwenden
mit den üblichen Maxim-Beschaffungsproblemen. Vielleicht kann man aus dem DS1834 was bauen (RC-taster am 3.3V Eingang).
Hi Wozu soll das eigentlich gut sein? Den Reset interessiert es nicht, ob der Taster prellt. Und mit 2 Dioden + Pull-Ups kann ein TL7705 auch 2 Eingänge bedienen. MfG Spess
-
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
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
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
Eingangssignal zählen
etwas findet, wenn man Prellen von vorneherein ausschließt. Aber lass Dir gesagt sein, dass _alle_ Taster prellen, es sei denn Du hast extra für prellfreie Taster bezahlt - und das merkst Du dann schon im Portemonais. Da entprellen schon ein Thema für sich ist - Peters berühmte Entprellroutine erfordert
San lue hab ich genau das selbe Problem wie mit meinem! Die Led Flackert kurz beim ersten mal Tasten sonnst tut sich nix!
-
Thread
Problem mit DS7102
Hallo, leider habe ich ein Problem mit mein DS7102. Wärend der Messung gaben plötzlich alle Taster und Bedienelemente den geist auf. Das Oszi misst und zeigt Werte an allerdings kann ich keine Einstellungen mehr vornehmen. So als wenn die Tasten nicht mehr angeschlossen wären. Den strom habe
Vielleicht klemmt lediglich ein Taster.
-
Thread
Problem mit Schieberegister und steigende Flanke
Das der Taster prellt ist ausgeschlossen?
kümmern, wenn sich die Mainloop-Durchlaufzeit ändert. Besser, man nimmt einen Timerinterrupt zum Tasten einlesen und muß sich nie wieder damit abquälen. Das Main kriegt die entprellte Taste auf dem Silbertablett geliefert. Weiterer Vorteil, es können bis zu 8 Tasten entprellt werden, ohne das der Aufwand
-
Thread
-
Thread
Tasterentprellung
Die Ursache, der prellende Kontakt, der läßt sich nicht beseitigen! Ein Taster prellt immer beim Schließen. Ist ein mechanisches Problem. Der einer Kontakt wird mit Kraft gegen den anderen bewegt, schlägt auf und federt zurück. Alternativ müsstest Du einen Taster bauen, dessen
Drüberstreuen noch einige Vorteile: Das Ding übersieht garantiert keinen Tastendruck (solange Interrupts aktiviert sind), kann zwischen langen und kurzen Tastendrücken unterscheiden und auf Wunsch krieg ich auch noch einen Autorepeat auf der Taste (eine von mir besonders bei Inkrement/Dekrement Funktionen
-
Thread
Warum Gray Code für Drehencoder?
Aufwand mit dem für Graycode. 2) Mechanische Kontakte prellen. Bei Graycode egal, bei Deinen Tastern fatal.
Zähler würde munter vorwärts zählen. So wie in Zähler, dessen UP-Eingang man mit einem einfachen Taster zum druafdrücken versieht. Der zählt bei jedem Tastendruck auch nicht +1, sondern um einige Impulse weiter, eben so viel wie der Taster prellt. Man müsste die Tasterkontakte entprellen. Das geht
-
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
Interrupt Routine
Controller es sich handelt? Wer oder was löst wie, wann und warum INT1 aus? Was ist auf PB4-PB7? Taster? mfg.
halbe Sekunde? Wenn ja, dann hast du ein Problem mit deinen Lichtschranken. Du kriegst mehrere Interrupts pro 'Betätigung'. Wie werden die eigentlich betätigt? Denn eine Lichtschranke prellt zwar selber nicht, wenn aber der Lichtstrahl mehrmals hintereinander entsprechend unterbrochen wird, dann kommt
-
Thread
Welcher Drehgeber ist am besten geeignet?
Sven schrieb im Beitrag #4303412: > Endlosschleife oder per Interrupt? Und los gehts...
Max M. schrieb im Beitrag #4303439: > Meine Meinung: Interrupt! > ... > 2. Der MC hat normalerweise was besseres zu tun als sinlos Eingänge zu > pollen. z.B. darauf zu warten, dass ein Interrupt kommt.
-
Thread
Drehencoder für Anfänger
Eingänge sind dann zwar active low, das macht aber nichts, die Peter'schen Funktionen für Drehgeber und Taster berücksichtigen das. Oliver
stdbool.h> #include <stdint.h> #define F_CPU 16000000ul #include <avr/io.h> #include <avr/interrupt.h> static void ioinit(void) { TCCR0 = (1<<CS01) | (1<<CS00); //divide by 64 * 256 => ~ 1 ms clock ticks TIMSK = 1<<TOIE0; //enable timer overflow interrupt #define BAUD 9600
-
Thread
LED - Blitz : µC gesteuert
nicht untergekommen) - der (möglichst geringen) Auslöseverzögerung zuliebe also auf den ersten Interrupt reagieren und anschließend adäquat blockieren, alles andere ist potenziell zu langsam. HTH und HF
. Und dabei prellt. Man lernt nie aus :-) HTH und HF
-
Thread
INT0 Entprellen ohne Timer & Delay
Irgend wie musst Du die Zeit /verstreichen/ lassen, bis der Taster nicht mehr prellt. Was der µC in der zeit macht ist eigentlich egal und bei nem manuell bedientem Taster, ist es auch nicht so wichtig, das dabei immer exakt die selbe Zeit verstreicht. Such Dir also
in der Zeit machen kann. Bau also in Deinem Programmablauf an geeigneten Stellen einen Aufruf der Taster-Routine ein.
-
Thread
Bitte um Erklärung bei kleinen C-Code um Schalter abzufragen
< DetectsInARow ); [/C] Den einzigen Unterschied, den die Anweisung machen wird, ist wenn die Taste beim Loslassen prellt. D.h. Die Warteschleife for der Entprellschleife wartet auf die 1, aber der prellende Taster liefert bei der unmittelbar darauffolgenden Abfrage bereits wieder eine 0. In diesem
Entprellung#Komfortroutine_.28C_f.C3.BCr_AVR.29 ist besser: Sie braucht keine delay, kommt mit allen Tasten klar (selbst wenn sie noch so prellen), registriert Tastendrücke auch dann wenn das Programm anderweitig beschäftigt ist (solange Interrupts freigegeben sind) und behandelt maximal 8 Tasten in einem
-
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
Drehgeber auslesen
Dreh-Encoder (auch Jog-Rad genannt) einsetze. Damit will ich in einem Menue rumdrehen und mit der Taste am Dreh-Encoder meine Auswahl treffen (Eigentlich wird nur ein Zähler auf- oder abwärts gezählt). Die Spur A ist auf einem Interrupt gelegt, Spur B liegt auf einem Port ohne Interrupt. Erfolgt eine
Interruptroutine. Hoffenlich kann es jemand gebrauchen. #include <avr/io.h> #include <avr/interrupt.h> // #MCU ATmega16 #define Schalter_A PINA1 // Schalter A im Drehgeber #define Schalter_B PINA0 // Schalter B im Drehgeber #define Taster_P PINA2 // Taster im Drehgeber #define Geber
-
Thread
Drehencoder und Pwm funktionieren nicht zusammen (Bascom)
generated. Take care that the chip supports all fuse bytes. Led1 Alias Portd.0 Led2 Alias Portd.4 Tast1 Alias Pinb.0 Tast2 Alias Pinb.1 Led1 = 0 Led2 = 0 Config Led1 = Output Config Led2 = Output Config Pinb.0 = Input Config Pinb.1 = Input Config Pinb.2 = Input Config Pinb.3 = Input Config
Pwm As Byte Config Timer0 = Timer , Prescale = 1 On Timer0 On_timer0 Enable Timer0 Enable Interrupts Do If Tast1 = 1 Then Waitms 100 <-zum entprellen, da der Befehl debounce ebenfalls nur kurz die led aufleuchten lässt Gosub Taster End If If Tast2 = 1 Then Waitms 100 Gosub
-
Thread
Problem mit Interrup1
habe ein Problem mit meinem ATmega16. Ich möchte einen LED-Cube programmieren und mit Hilfe des Interrupt 1 eine globale Variable hochzählen um zwischen verschiedenen Modies zu schalten. Mein Problem: Der Interrupt funktioniert, aber die globale Variable wird nicht hochgezählt... egal was ich
Hab wieder was verändert. Nach Wünschen von Arno. ps.: der Taster prellt nicht. es war nur zur Sicherheit.
-
Thread
RC5: Taste nur einmal drücken
(jeweils Code 1) Leider bleibt es aber nicht bei einer Ziffer wenn ich die Taste einen Moment zu lange gedrückt halte. Es ist vielleicht vergleichbar als wenn eine Taste prellt. Wie kann ich das hinbekommen, hat vielleicht jemand eine Idee? Hier ein Teil des Codes wie ich
gedrückt uint8_t code = rc5.code; uint8_t addr = rc5.addr; //PROGR Taste gedrückt if (code == 41){ taste_nr = 0; wert = 0; taste = 41; //merken das PROGR gedrückt war } // taste "1" if ((code == 1) && (taste =
-
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
AVR Uhr wird von INT0 interrupt gestoppt
können. Das funktioniert auch alles, nur leider wird der Interrupt immer wieder auf gerufen, solange der Taster gedrückt bleibt. Dadurch läuft dann die Uhr nicht mehr weiter. Eigentlich sollte der Interrupt ja nur auslösen, wenn der Pegel am Pin sich verändert. Daher gehe ich davon aus, dass der Taster prellt? Ich habe deshalb versucht, den das ganze durch ein _delay_ms(20) direkt nach dem aufwachen zu verhindern. Das behebt das Problem aber nicht, wenn der Taster trotzdem länger gedrückt wird
-
Thread
ATtiny2313: PowerDown/Taster_prellt/Programm_verhällt_sich_seltsam Problem
Hallo, ich habe ein Problem mit meiner Schaltung/Programm und finde einfach den Fehler nicht ;-( Eine kleine mit 4,5V batteriebetriebene Schaltung soll bei Tastendruck LED hochdimmem, bei erneutem Tastendruck runterdimmen oder nach ca. maximal 60s von allein wieder runterdimmen falls keine Taste gedrückt wurde. Stromsparend solls auch sein. Anwendung ist eine Beleuchtung für ein Plastikmodell. Jetzt zum Problem: Die Schaltung funktioniert einwandfrei wenn ich den Dragon Programmierer dranhängen habe aber spielt verrückt wenn ich sie vom Dragon trenne. Und das verstehe ich nicht so ganz.