-
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
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
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
Problem mit externem Inerrupt
wt schrieb: > wie lange prellt denn der Schalter? gar nicht, da ja der Taster im moment des drückens den Kondensator schlagartig gegen Masse entlädt und somit auch dieses Potential an dem Interrupt eingang anliegt. Diese Schaltung
LcdUpdate(); } while (!(PIND& (1<<PD3))&&(weiter<0x01)); //Abwarten bis Taster gedrückt while ( PIND & (1 << PD3)&&(weiter<0x01)); //Abwarten bis Taster wieder gelöst oder Interrupt (OK Taste betätigt) wahl++; if (wahl==3) { wahl=0; }
-
Thread
Tasterentprellung nach AVR-Tutorial
> Und diese beiden Taster hängen dann natürlich an den > Interrupt-Eingängen. Das ist grober Schwachsinn, denn die Pellimpulse von den Tasten können so schnell kommen, schneller als dein uC den Interrupts folgen kann.
MaWin schrieb: >> Und diese beiden Taster hängen dann natürlich an den >> Interrupt-Eingängen. > > Das ist grober Schwachsinn, denn die Pellimpulse von den Tasten können > so schnell kommen, schneller als dein uC den Interrupts folgen
-
Thread
Int 0 und timer bitte um Hilfe
ich drück auf den Taster der an INT0 hängt und nix passiert setz ich B von anfang an auf 1 geht alles andere
Liegt u.a. möglicherweise daran, dass in der ISR von INT0 B gewaltig schnell hochgezählt wird (Taster prellt). D.h. es kann durchaus bzw. ziemlich sicher passieren, dass B in der Do-Loop-Schleife grösser als 2 ist.
-
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
Externer interrupt INT1 -> ständiger interrupt?
Interrupt ohne Handler - jedenfalls sehe ich im Code keinen.
LCD Ausgaben im ganzen Programm? Lies: Was passiert wohl, wenn mitten in einer LCD-Ausgabe der Interrupt kommt? Ausserdem ist diese Ausgabe recht langsam, folglich der Interrupt recht lang beschäftigt. Womit auf GND gehängt? Taster oder freifliegendes Kabel wäre keine gute Idee, weil prellt und folglich
-
Thread
PIC Interrupt auslösen
Taster direkt als Interruptquelle zu nutzen ist nicht sinnvoll, da man sie vorher per Hardware entprellen müsste. Frage die Taster in einem Timerinterrupt oder einem schon vorhandenen, regelmäßigen Interrupt
ok, ich richte also einen Timer gesteuerten Interrupt ein, der z.B. alle 10tel Sekunde die Taster abfragt. Wenn der Taster aber gerade während der Abfrage "prellt" sodass er am Port als nicht gedrückt aufscheint, regiert die Abfrage nicht oder?
-
Thread
Netzfrequenz
Schaltung so ist Mist. Gerade rund um den Nulldurchgang sind Rundsteuersignale und Co aktiv. Der Interrupt Pin fängt sich daher jeden möglichen Mist ein. Von daher gilt hier das gleiche wie bei Tastern: Entweder du "entprellst" hardwaremäßig (über einen Tiefpass/Bandpass) und lieferst dem µC ein sauberes
Ich vermute mal wie oben schon gesagt, dass an der entsprechenden Schwelle der Interrupt "prellt" also zu oft ausgelöst wird, wegen dem Dreck auf der Leitung. Der Schmitt Trigger Bereich des AVR Eingangs könnte zu klein sein. Alternativ könnte es ja auch sein, dass die hohe Spannung
-
Thread
LCD an Atmega32--> zu langsam für Rotary
ich habe an einem Atmega32 ein LCD-Display. 16 x 2! Über einen Rotary-Encoder (der auf einem Interrupt liegt) will ich am Display durch ein Menü scrollen. Da ich die "LCD"-Funktion in der Interrupt-Routine drinnen hab und die bekanntlich sehr langsam ist, verliere ich Zählschritte beim Rotary und
-> ISR ist kritisch - insbesondere wenn der Geber prellt oder schlimmer noch mechanisch knapp zwischen Kontakt und kein Kontakt steht. Das führt dann zu heftigen ISR-Stürmen mit entsprechend negativen Auswirkungen auf das Restprogramm. Gruß, Bernd
-
Thread
Wer hat Erfahrung mit HAP?
Ich möchte erstmal eine Lampe mit einem Taster schalten. Also taste gedrückt Lampe an. Nochmal gedrückt Lampe aus.
läuft.(switche und taster) Ich hoffe du verstehst jetzt was ich meine :-)
-
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
Wieder mal Tastenabfrage geht das auch so?
daran jetzt einfacher? Überleg dir einfach mal, was da alles zu tun ist, wenn du 5 Tasten angeschlossen hast. Das wir massig Code, schon alleine deswegen weil du für 5 Tasten dann Buch führen musst, wie lange es her ist, dass der entpsrechende Interrupt gesperrt wurde. Die PeDa Tastenabfrage
Irgendwie geht die Entprellproblematik immer noch an mir vorbei. Ich frage einfach die Tasten im 1ms-Interrupt ab und was 2 mal gleich ist, gilt - habe ich da jetzt irgendwas verpasst?
-
Thread
Frage zu einer Ampelschaltung mit Interrupt
der Taster und löst einen zweiten Interrupt aus. So ein Schaltung mit Interrupt zu machen ist schlicht Unsinn. Das macht man dreimal besser mit einer Abfrage in einer laaaaaaangsamen Hauptschleife. Da kann
fertig werden ist. :-) > lässt sich der interupttaster genauso entprellen wie ein normaler > taster? Der ganze Ansatz mit Auslösung durch Taster am Interrupt und Abarbeitung der Ampelphasen in einer ISR ist kompletter Schwachsinn. > oder muss ich in cli befehl nach dem ersten interrupt anwenden
-
Thread
Problem beim Einlesen eines Drehgebers
ändert sich wegen prellen der Kontakte das Signal mehrmals. Dann dekrementierst du mehrmals. Ein Taster prellt aber nicht 10sec lang :-) Warum ich nicht Inkrementiere? Weil ich wie gesagt das Programm wegen diesem Problem verkürzt hab und einfach nur sehen wollte wo er nicht das tut was ich will
also theoretisch funktioniert es. Mess doch mal die Spannungen an den beiden Eingängen. wenn kein Taster gedrückt, sollte sich die Spannung bei ca. 4,9V befinden. Bei gedrücktem Taster sollten 0V anliegen. Wenn irgendwas dazwischen gemessen wird, stimmt entweder die Schaltung nicht (Taster muss gegen
-
Thread
attiny13 aufwecken aus power down modus
und die LEDs verstellt. deaktiviere ich die Interrupts, dann sehe ich das Blinken aber er läuft direkt weiter aus dem PowerDwon raus, obwohl der Taster schon seit ner sekunde nicht mehr gedrückt wird. folgendes kommt dem orignal näher: [c] int
dieses Beispiel hier ausgegraben weil es ganu das machen soll was ich benötigen würde. Mit einer Taste den Sleep-Modus EIN/AUS zu schalten. Was mir jedoch hier fehlt ist, wo wird denn der Interrupt-PIN zum aufwecken definiert? Also der PCMSK0?
-
Thread
geistertasten
aufgefallen ? Zweitens sagst du, dass du nur alle 10ms die Tastatur abfragen willst. Damit ist eine Taste endweder gedrückt, oder nicht gedrückt. Wenn sie (weniger als 10ms) prellt, mekrt das die Tastaturabfrageroutine nicht, sie sieht die Taste bereits ohne Prellen. Daher ist es überflüssig und eher
> wenn die Sache wirklich so einfach wäre Sie ist es. Wenn Tasten weniger als 50ms prellen, sieht man in Abfragen die 50ms auseinanderliegen keine prellenden Tasten. Es geht auch mit 10ms, denn kaum eine Taste prellt 10ms. Wenn du nun noch die richtigen Ports
-
Thread
Prellen am Notaus, Realisieren einen Notaus
gekappt wird und die Motoren stehenbleiben. Aber kann es sein, dass der Schalter 130ms lange prellt? Ich habe auch noch folgendes versucht: Den Taster nicht als externen Interrupt anzuschließen sondern als normalen Taster, den kann ich dann auch softwaremäßig entprellen. Da ist dann solange Notaus-Situation, solange der Taster gedrückt ist und die Situation wird gelöst, sobald man den Taster zieht (über Schleifen realisiert). Für den Pin habe ich den internen Pullup aktiviert und über den Taster mit GND verbunden. Hier
-
Thread
Multisim - PIC Schaltung arbeitet nicht! Gesperrt
>Interrupts benutze ich doch überhauptnicht!? Genau das ist ja auch das Problem. Egal ob Interrupts benutzt werden oder nicht - es gibt auch hier eine Einsprungadresse - und da sollte immer ein RETFIE stehen
Dann nochmal was Grundlegendes: An Adr 0x04 im Programmspeicher liegt die Einsprungadr für die Interrupts. Jetzt stell Dir mal vor, du bekommst einen unsauberen Spannungspegel auf der Versorgungsleitung - vielleicht wegen HF, EMV oder einfach nur, weil die Versorgungsspannung beim Einschalten prellt
-
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
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
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
Simulation - Prellen/Entpellen von Tastern
Digitasten die als besonders prellarm gelten!!! Die Bilder sahen natürlich bei jedem Druck auf die Taste anders aus. Ein Schließer- kontakt prellt aber deutlich stärker als ein Öffner.
dass der verschluckte Schaltvorgang der letzte beim Einschalten war, und so der Zeitraum, den die Taste gedrückt war, als ausgeschaltet protokolliert wurde. 2.: Taster an INT0 (PD2) anschließen Hier wird durch jeden Ein- und Auschaltvorgang ein Interrupt ausgelöst, ohne dass die Flankenrichtung gewechselt
-
Thread
keine konstante Frequenz am ATMega8 Ausgang
Der Fehler ist sichtbar: Der Taster prellt, EXT_INT0 und damit das Timer setzen/starten wiederholt sich. gruß hans
prellt der Taster und erzeugt einen weiteren Impuls, der PB 0 auf L setzt. Wenn schon auf diese Art, dann den Ext INT in seiner IRQ sofort ausschalten, am Ende der Impulsfolge evtl. dort noch anstehende
-
Thread
Debouncing 8 Keys und rotary encoder von P. Dannegger.
encode_read4( void )[/c] versucht. Die Anzeige an PORTB hat Aussetzer. Sieht aus, als ob der Eingang prellt. Ich habe es mit 1ms und momentan mit ca. 350us TIMER_COMPARE probiert. Mit dem ALPS Drehgeber funktioniert der ENCODER einwandfrei. An der ENCODER-Scheibe mit 120 Strichen kann ich keine ausgefranzten
volatile uint8_t up1=2, countTimer1 =240; // ISR TIMER1 volatile uint8_t c; // INTERRUPT 0 und INTERRUPT 1 volatile char countbrems0, tmp=0, brems0, a=0; // für Warteschleifen der Motoren und switch pwm in ISR TIMER0-COMP int32_t val = 0; // Encoder volatile int8
-
Thread
PIC16F886 Interupt on Change RB7 läuft nicht
OPTION_REG,7 bsf OPTION_REG,INTEDG BANKSEL 0 CLRF PORTB CLRF PORTC ;Interrupt-on-Change Port - RB7 MOVLW B'10000000' MOVWF IOCB ;Interrupt-on-Change Port Eingeschaltet bsf INTCON,RBIE ;Externe Interrupt eingeschaltet bsf INTCON,INTE ;Interruptflagge ausgeschaltet, wird beim Interrupt ;gesetzt und muss in der ISR zurück gesetzt werden bcf INTCON,INTF ;WEAK Pull-Up deaktiviert CLRF WPUB ;Globaler Interrupt aktiviert bsf INTCON,GIE Start_ GOTO
-
Thread
[AVR]Fragen zur C Programmierung (Timer / multiplexing)
Also das hier: [c] taster_neu = PINB; taster_flags = taster_alt & ~taster_neu; taster_alt = taster_neu; [/c] In einen Timer-Interrupt?
Daniel Herrmann wrote: > Also das hier: > > [c] > taster_neu = PINB; > taster_flags = taster_alt & ~taster_neu; > taster_alt = taster_neu; > [/c] > > In einen Timer-Interrupt? Schon besser!
-
Thread
Interrupt Bit Löschen
Taster verwende (Disable Interrupt bzw. Enable Interrupt Befehle sind am Anfang und am Ende der Interruptrutine), dann setzt er dieses Interrupt Bit. Sobald ich dann die Interruptrutine verlasse, also
betreffende Flag wird übrigens durch den > Interrupt selbst gelöscht, ...aber auch sofort wieder gesetzt, wenn der Taster prellt, was dann eben dazu führt, dass der Interrupt Handler nach Verlassen direkt nochmal ausgeführt wird. > da muß man
-
Thread
mega32 interrupt zählt doppelt
Hast du den Taster entprellt?
... So in etwa: Druck der Taste --> ISR wird aufgerufen --> Flag gelöscht Taste Prellt (mehrmals) --> Flag wird wieder gesezt warten warten warten ISR verlassen Da Flag gesezt wird die ISR ein weiteres mal aufgerufen (jezt
-
Thread
MSP430F1232 + Interrupt Port 1
Hi Leute! Ich möchte am Port 1 auf dem auch das JTAG interface verbaut ist eine Interrupt-abfrage machen. Hab dafür auch den Code geschrieben und der funktioniert. Jedoch funktioniert er immer nur für einen Taster. Wenn ich jetzt im Interrupt 2 Taster abfragen will dann spielt das
es lösen beide taster einen interrupt aus. Sie sind auf falling edge geschalten, was mit den tastern übereinstimmt. Komischerweiße kommt der interrupt an bit7 nur dann wenn ich drücke und löst die richtige aktion aus
-
Thread
Programm hängt sich auf (Entprellen?)
sonst nichts Anderes im Programm passiert. Ich benutze einen PIC 16F876 mit nem 4MHz Quarz. Da Interrupts und Timer besetzt sind, polle ich die Tastenabfrage, was ich folgendermaßen realisiert habe: In einer kleinen Schleife wird nachgeschaut, ob eine Taste gedrückt wurde. Die Schleife zählt rückwärts. Gegenläufig läuft ein weiterer Zähler. Ist während der ganzen Schleifenabfrage eine Taste dauerhaft gedrückt worden, so erreicht der zweite Zähler den Anfangswert des Schleifenzählers. (Prellt die Taste, wird der zweite Zähler wieder auf Null gesetzt.) Somit gilt die Taste als gedrückt,
-
Thread
Drehimpulsgeber spinnt
Ich taste im Takt des Mikrocontrollers ab. (ohne interrupt, ohne timer, kann das zu schnell sein?) wenn einer der beiden Spuren seinen Zusand (im gegensatz zum vorher gespeicherten Wert) ändert wird vor,bzw
>Ich taste im Takt des Mikrocontrollers ab. (ohne interrupt, ohne timer, >kann das zu schnell sein?) Nicht zu schnell, aber zu ungenau... Hast du mal ein Oszi dran gehängt und geschaut wie lang die Pulse
-
Thread
Tastendruck mit ext. Interrupt erfassen
und in der Interrupt-Routine abfrage, welcher Taster gedrückt ist. Wenn aber alle Taster an den selben Pin angeschlossen werden (ext. Interrupt-Pin), würde das bei einer gedrückten Taste dazu führen, dass alle Taster
externen Interrupts hast Du das Problem des Prellens. Es soll ja Schildbürger geben, die Tasten über externe Interrupts betreiben, um dann einen Timer zum Zweck der Entprellung zu bemühen. Das kann man sonderbar finden
-
Thread
power down ATMEGA664
was ich gerade nicht verstehe ist: wenn ich den taster drücke, dann prellt er - soweit klar. aber da ich den interrupt deaktiviere, sollte das doch egal sein. Oder sehe ich gerade den Wald vor Bäumen nicht Gruß, Alex
Alex wrote: > was ich gerade nicht verstehe ist: wenn ich den taster drücke, dann > prellt er - soweit klar. aber da ich den interrupt deaktiviere, sollte > das doch egal sein. Oder sehe ich gerade den Wald vor Bäumen nicht Interrupt Flags werden *immer* gesetzt,
-
Thread
Low-Level Interrupt (nicht Flanke) INT1: Entprellmethode?
. Wenn man schlafen geht und ein Taster prellt, wird man u.U. direkt wieder wach. Jedenfalls hab ich es dann über ein delay gelöst, obwohl die Taster über die 10ms-Methode abgefragt werden. Konkret geht es dabei um die main.c von und
Menüpunkt) in den Tiefschlaf, so stellt man den Sleep-Mode auf Power-Down um und aktiviert den Weck-Interrupt (Low-Level-Ext-Int oder PCI). Der AVR fällt daraufhin am Ende der Mainloop in den Tiefschlaf und schaltet damit auch den Takt seiner Timer aus. Er kann nur noch vom Weck-Interrupt (kann neben Taste
-
Thread
viele Tasten an MC? Frage zu Schaltungsmöglichkeiten
>würde ich gerne per Interrupt erfahren.. Ist nicht unbedingt zu raten, da Tasten prellen. Nimm nen Timerinterrupt und Taste zB alle 10ms ab.
Zum Aufwachen sollte es gehen... Genau so dachte ich es. Zum Aufwachen reicht ein Ping (ob der prellt oder nicht ist unerheblich). Bis ich dann die Register durchgeschoben habe, um alle Tasten zu prüfen, ist das Prellen der Taster schon lange vorbei (falls nicht, könnte ich die Tasten auch eine Zeitscheibe
-
Thread
erstes C-Programm läuft nicht am AVR
Array counter[] notwendig ist. Das Programm wird zyklisch über die ISR ausgeführt und scannt alle Tasten (in meinem Falle gerade nur 2) Prellt die Taste nicht wird der Zähler bis auf 5 erhöht, und schaltet in diesem falle eine stelle des Arrays outputs[] auf eins was signalisiert das die Taste ohne Prellen gedrückt wurde. Prellt die Taste wird das der counter zurückgesetzt. Die Funktion blinken ist wie der name schon sagt für das Blinken der LED´s verantwortlich. Falls es noch fragen geben sollte kann ich das gerne noch
-
Thread
Rennbahn Project mit Zeitmessung
anschließe. > Wäre daher über einen Tip dankbar. Ein Reed Kontakt ist ein ganz normaler Schalter/Taster und wird genauso wie so einer behandelt und eingebaut. Der einzige Unterschied: Ein normaler Schalter/Taster hat einen Knopf auf den man drauf drücken kann, der Reed Kontakt wird mit einem Magneten
fährt, der Controller mehrere Zahlen überspringt -aufgrund von mehreren impulsen- beim druck auf den Taster zählt er allerdings brav hoch (0-f) Das Programm zählt momentan bis 9/f-Runden. Ich poste euch mal den Code hier rein [avrasm] code at 0 include reg_51.pdf taster1 bit P3.2 taster2
-
Thread
DCF77-Modul von Pollin
glatte 5µA) ohnehin ein Schuss ins Knie. Rechne damit, dass die ansteigende Flanke möglicherweise prellt. Also Entprellung wie bei Taster.
> Besser: Timer auf beispielsweise 10ms Raster programmieren und in dessen > Interrupt den Eingang pollen. Dann kann man ihn ja gleich mit den Tastern zusammen per PeDa-Entprellung behandeln... ;-) ...
-
Thread
Externer Interrupt löst Reset aus
Code: [c] #include <avr/io.h> //Einbinden der Standart I/O Library #include <avr/interrupt.h> //Einbinden der Library für Interruptfunktionen //PORTD: PD2 Taster für Interrupt // PD4 Taster für Testprogramm int Int=0; //Init der Interruptvariablen
PD2 als Eingang (Funktionstasten) PORTD= 0xFC; //Pull Up´s an PD7 - PD2 aktivieren (Tasten) //Initialisierung Interrupt MCUCR= (1<<ISC00) | (1<<ISC01); //Interrupt Int0 bei steigender //Flanke auslösen GICR = (1<<INT0); //Interrupt
-
Thread
Tiny45 stürzt ab trotz Minimalprogramm
Interrupts ausschalten ist Gefummel? Der Taster prellt, deswegen würde der Interrupt sofort wieder ausgelöst. So wird er erst beim nächsten Timerinterrupt wieder aktiviert. Kann das Pin-Change-Interrupt-Timing
Danke für Deine Hilfsbereitschaft! Eigentlich ist das schon richtig so: An PB2 ist der Taster. An diesem Pin wird der interne Pull-up eingeschaltet. Drücke ich den Taster, wird der Port an Masse gelegt. Der Pin hat 2 Interrupt-Funktionen INT0 und PCINT2. Ich habe mich für den Pin-change interrupt
-
Thread
Messn wieoft ein Schalter prellt
Hallo! Ich habe hier folgendes Problem, ich hab hier ein µC Board und wenn ein Taster gedrückt wird, soll die Anzahl der Prellungen gemessen werden und am LCD ausgegeben werden. Leider warf uns der Lehrer ins kalte Wasser und ich hab keine Ahnung wie ich da vorgehen muss, hab gerade mal geschafft das Board zu installiern. Nun, wie schaut der Code dazu aus, kann mir jemand helfen? Danke vielmals MFG Elias
-
Thread
Drehzahlmessung
Basic dann eine Funktion wie ASCIItoHex hat. Ich habe noch das Problem, dass er solange ich diese Taste drücke, das Zeichen raussendet. Er soll aber egal wie lange ich auf der Taste bleibe (sprich auch wenn der Reed-Kontakt mal prellt) nur einmal das Zeichen rausschicken. Habe schon mit Schleifen, If-Anweisungen
können irgendwo mitten aus einem Satz sein. > Ich habe noch das Problem, dass er solange ich diese Taste drücke, das > Zeichen raussendet. Er soll aber egal wie lange ich auf der Taste bleibe > (sprich auch wenn der Reed-Kontakt mal prellt) nur einmal das Zeichen > rausschicken. Habe schon mit Schleifen
-
Thread
Entprellen und trotzdem schnell reagieren
momentane Tastenzustand übernommen und wenn Sie gedrückt ist, wird der Interrupt auf positive Flanke wieder eingeschaltet. Sollte nun der Interrupt erneut generiert werden, kann man davon ausgehen, das die Taste released wurde. Funktioniert auch mit älteren Tastern und bisher
aufwändiger. Nochmal zum Tastenentprellen: Man muß berücksichtigen, daß eine menschlich bediente Taste 2 mal prellt: 1. Beim Drücken und 2. beim Wieder-Loslassen. Meine o.g. Idee hatte ich mal verwirklicht; aber beim Wieder-Loslassen (=fallende Flanke, wenn Taste im high-active-style verdrahtet), hat
-
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?