-
Thread
Tasten entprellen
Tag zusammen, ich setze die Routinen von Peter Danneger (C_tast.c) ein, laufen einwandfrei auch mit miesen Tasten. Danke an Peter! Weil Proficode, für einen Anfänger in C wie mich nicht in allen Punkten nachvollziehbar, daher meine Bitte um Unterstützung. Die Aufgabe: Statt bei kurzer Betätigung ein Variable zu setzen/löschen (Funktion eines Schalters) benötige ich eine Tasterfunktion (bei mir: Motor eines motorgetriebenen Potis läuft links bzw. rechts herum, solange Taste1 bzw. Taste2 gedrückt ist). Wiederholfunktion (key_rpt) und längeres Drücken einer Taste (key_long) sollen weiterhin
-
Thread
Absturz beim Verwenden von volatile
Resets. Richtig wäre: - Taste gegen GND, - interner Pullup ein, - kein Kondensator!!! Peter
hängt. Die Flanken sind nicht so sauber, wie man vielleicht glaubt, also gleiches Thema wie beim Taster-Entprellen . Ausserdem belegt's dann keinen INT-Port. Ne Zeitbasis wie 10ms hat man eh in den meisten Anwendungen, also einfach da reinklinken. Johann
-
Thread
Problem beim Entprellen/Timer0
Semgente-Anzeige pro Tastendruck um 1 erhöht funktioniert soweit gut. Als ich dann den Timer0 einbaute, um den Taster zu entprellen, funktionierte gar nichts mehr. Hat jemand eine Idee woran das liegen kann? Code ist im Anhang Gruss
Ansteuern der Segmente und des Tasters ;PB0-PB7 sind für die Segmente (Ausgang) und PD2 ist für den Taster (Eingang) bestimmt. .INCLUDE "m32def.inc" ;Deklaration für ATmega32 .DEF status = r16 ;Variable, die überprüft, ob die Initialisierung schon einmal durchgeführt wurde .DEF zaehler
-
Thread
Taster als Schalter
einfachste Möglichkeit ist ganz klar ein JK-FF zu nehmen, den J und K Eingang auf Vcc schliessen, und den Taster entprell an den Clock anschliessen. Entprellen würde ich am besten mit einem RC-Glied nach dem Taster, mit einer Zeitkonstante von etwa 5ms. Im Anhang habe ich dir kurz eine solche Schaltung gezeichnet
> Ähm. Und wie symbolisierst du dann einen gedrückten Taster, wenn deine > gespeicherte Sequenz dir das vorschreibt? Das laden hätte ich einem eigenen controller überlassen, der quasi parallel zum taster angeschlossen ist. das entprellen hätte ich mittels
-
Thread
Interrupt am ATTiny13 in BASCOM
> Woran könnte es denn noch liegen ? Falsches Konzept... - Taster gehören nicht an den Interrupt (Sonderfall: Wecken aus Power- Down-Sleep) - Taster prellen und müssen entprellt werden - Warteschleifen im Interrupt sind tödlich Vorschlag: - Taster einlesen und entprellen (Debounce) - Wurde Taster betätigt, dann ein Flag setzen - Wurde zweiter Taster betätigt, dann das Flag löschen (ein Flag ist eine Bitvariable, auch Merker oder Boolean genannt) - In Mainloop
-
Thread
Welche SMD KondensatorArt fuer Integratorschaltung
MikroMakro (Gast) >Die Integratorschaltung dient der Entprellung ueber laengeren Zeitraum. Entprellen? Was? Tasten? UNd dafür mast du so einen Aufstand?!?!???
@ Falk Brunner: > Entprellen? Was? Tasten? UNd dafür mast du so einen Aufstand?!?!??? Ich habe doch keinen Aufstand gemacht. Ich bin ja selber der vielen Informationen überrascht. Und bin sehr dankbar dafür. Warum soll
-
Thread
Entprellung 3*4 Tastenfeld
durchzuschauen, aber ich poste ihn trotzdem mal im Anhang. Ich habe ein 3*4 Tastenfeld, das ich entprellen will und bei dem ich die gedrückten Tasten ermitteln will. Letzteres funtioniert zwar, aber nur mit dem Takt "clock", einem 100MHz Takt einer PLL. Ich teile den 100MHz Takt, sodass ich einen von
previous_tst_r1, previous_tst_r2, previous_tst_r3, previous_tst_c0, previous_tst_c1, previous_tst_c2, taste0_9, taste_enter, taste_operation sollten eigentlich beim Reset (in einem anderen Process) zurüchgestzt werden, tun es aber nicht. Die Behavioral Simulation zeigt sie als "U" uninitialisiert an und
-
Thread
(Assembler) Taster für einen Lauflicht programmieren? Abi-aufgabe 06
Taste in extra Hardware entprellt ist. Deshalb werden Tastenabfragen zu 99% mit Pollen und Entprellen im Timerinterrupt realisiert. Peter
Musst du den Taster wirklich entprellen ? Reicht es nicht dass du während dem Leuchten der besagten LED permanent den Taster abfragst und bei Gedrückt-Erkennung dann fortfährst ? Es ist ja nicht so dass Prellen in
-
Thread
Interrupt an ATmega32
Ich würde dazu keinen Interrupt nehmen, sondern einen normalen Eingang pollen (und entprellen). Der Goldcap speichert Energie für mehrere Minuten (ein Goldcap 0,1F hat genug Energie für mehr als eine halbe Minute Soundausgabe mit Tiny85 über HS-PWM direkt auf Lautsprecher), da hast Du verdammt
wrote: > Ich würde dazu keinen Interrupt nehmen, sondern einen normalen Eingang > pollen (und entprellen). Der Goldcap speichert Energie für mehrere > Minuten (ein Goldcap 0,1F hat genug Energie für mehr als eine halbe > Minute Soundausgabe mit Tiny85 über HS-PWM direkt auf Lautsprecher), da > hast
-
Thread
Probleme mit PIC connecten
Am MCLR eingang habe ich noch einen zusätzlichen Taster, der mir erlaubt manuel ein SW-Reset zu machen. Nach dem Taster habe ich ein RC-Glies, zum entprellen, und danach den MCLR vom ICD2 und den Taster an ein Schmittrigger-AND angeschlossen. Wenn ich messe ist der MCLR aber auf High, solange ich den Taster nicht gedrückt halte. Der Typ: 16F877A Halt so Standart. PGM hat er. Versuche es mal.
-
Thread
Timer arbeitet mit zu hoher Toleranz
werden. Nach erfolgter Zündung soll ein Messlaser ausgelöst werden. Diese Sequenz soll über einen Taster ausgelöst werden und einmal durchlaufen werden. Im Moment ist diese Funktion zu Testzwecken leicht abgeändert: Durch längeres Halten der Taste wird eine zyklische Auslösung der Sequenz bewirkt.
, damit kann man natürlich > keinen Blumentopf gewinnen. Nun ja, die werden benötigt, um die Taster zu entprellen. Während der Sequenz sollten sie eigentlich nicht ausgeführ werden. > Die Displayzugriffe haben höchstwarscheinlich keine feste > Ausführungszeit und _delay_ms auch nicht. Die
-
Thread
Sieben-Segment-Anzeige? Sehr einfache Ansteuerung?
I2C). Kann die Anzeige dimmen. Bis zu vier Stellen. Eine andere Version des IC (MAX6959) kann auch Taster neben der Anzeige einlesen.
Der Brown-Out-Kram kannste eigentlich vergessen, das macht der PIC. Genauso das entprellen vom Reset (Wozu eigentlich Reset).
-
Thread
atmega16 interrupt priorität emulieren
unterbrochen werden, deswegen "sei();" am Anfang der Routine (7-segment display, Auswertungen, Taster entprellen etc.) TIMER0_COMP_vect: 5Khz Triggert die Erste von zwei AD-Wandlungen (Spannung). ADC-Ergebnisse der letzten Messugen multiplizieren und integrieren ADC_vect: Holt die ADC-Ergebnisse
Flag erledigen lassen kannst (ganz besonders, wenn das unterbrochen werden darf). edit: Shift-Taste repariert ;)
-
Thread
Tastenentprellung mit PWM in C
Entprellung an sich ist kein Problem. Zwei Taster entprellen auch nicht. (Gibt hier was vielgelobtes von Peter Dannegger). "Einstellung PWM (Berechnung der Frequenz, der PWM)" ist ein bischen merkwürdig. Wenn man die Timerparameter kennt kann
steht also zu vermuten, das im Zusammenhang mit: >Das Programm ist eigentlich nur ein Zähler. 2 Taster werden angesteuert >(Aufwärtszählen, Abwärtszählen). 1111 ist der Maximalwert (also max 15). gemeint ist, das der PWM-Zyklus in 16 Teile geteilt und in dieser Auflösung mit den Tasten eingestellt
-
Thread
Led mit PWM bei Bascom steuern (atmega8)
wird. Nach den 10 Stufen soll sie wieder an der ersten Stufe anfangen. Schaltplan: GND-------[Taster]-------PB4 GND-------[LED]----------PB3 Code: $regfile = "m8def.dat" $crystal = 16000000 'externer Quarz $baud = 19200 $hwstack = 32 $swstack
PWM-Zähler mit PWM-Sollwert vergleichen und Port ein/ausschalten - bei Überlauf des PWM-Zählers die Tasten abfragen und entprellen In der Mainloop: - Ergebnisse der Tastenentprellung pollen und PWM-Sollwert anpassen Die Kunst des Programmieren besteht im Wesentlichen darin, die zu lösende Aufgabe
-
Thread
mega8 - ADC im Free Run geht nicht
Dies ist eine gute Basis für ADC lesen, Drehgeber abfragen, LCD bedienen, mit weiterem Teiler 1:16 Tasten entprellen, Berechnungen anschubsen, usw. Ein Timer kann nämlich bei guter Programmplanung etliche Arbeiten zugleich erledigen bzw. synchronisieren. ...
-
Thread
MSP430 Programmierproblem :-(
8 Leds angeschlossen habe also 0...255 möglichkeiten die Anzusteuer. Ich will nun mit meinem Taster den ich an Pin4.3 angeschlossen habe immer einen anderen Zustand abrufen wenn ich meine Taste drücke. zB Taster 1 drücken Zustand 0b00000001 (Erste Led an) Taster 2mal drücken Zustand 0b00000010
Andere Vorschlag. Kannst du den Taster nicht an den Port 1 oder 2 anschliesen. Dann könnstest du nählich einen Interrupt nutzen um den Zusand am Port 8 hochzuzählen. und im gleichen Zug würde ich den Taster entprellen (Hardware nicht
-
Thread
Entprellroutine von Peter in Code einfügen, aber wie?
ATmega16 @ 16MHz #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> #define Taster_1 (PIND&(1<<PD2)) #define Taster_2 (PIND&(1<<PD3)) #define Taster_3 (PIND&(1<<PD4)) uint8_t var1 = 0; uint8_t var2 = 0; ISR(TIMER0_OVF_vect) { PORTA = 0xff; } int main(void) {
CS02); // Prescaler: 1024 TIMSK |= (1<<TOIE0); sei(); while(1) { if (Taster_1 && TCNT0 == 255) { var2++; if (var2 == 50) { var1++; var2 = 0; } } if (TCNT0 == var1) { PORTA = 0x00; } } }
-
Thread
Warum funzt meine Funktion nicht (Tasterentprellung)
uint16_t intPWM_WS; volatile uint16_t intPWM_BL; volatile uint16_t intSPEED; //------------ Taster entprellen ------------ #define ALL_KEYS (1<<MODE | 1<<UP | 1<<DOWN) #define REPEAT_MASK (1<<UP | 1<<DOWN) // repeat: key1, key2 #define REPEAT_START 50
Wo und wie sind denn die Tasten angeschlossen?
-
Thread
Denkfehler bei Matrixtastatur?
der Ausgan 0..2 geschaltet ist eine 0 an. Das Problem, welches daraus resultiert ist, dass jede Taste einer Zeile die LED einschalten kann, da ja überall eine Null anliegt, kann jeder Andere Taster einer Zeile den Pull UP Wiederstand down zeihen. Gruß Stefan
nun noch einmal mit dem 3. Ausgang machen. Auf diese Weise findest du heraus, welcher Taster gedrückt wurde. Nun noch entprellen und du kannst damit arbeiten... Sven PS: Dein Kabel zu Ground ist Unsinn.
-
Thread
2-Tasten Steuerung
Wie wärs mit Taste 1 gedrückt incr Taste 2 gedrückt decr Taste 1 und 2 gleichzeitig gedrückt incr oder decr rückgängig machen und bestätigen auslösen ?
Ich weiss dass ich eine einzige Taste entprellen kann (debounce). Wenn du mir aber sagen kannst wie ich 2 Tasten miteinander gleichzeitig entprellen kann, bitte teil mir das mit. Grüsse climbah
-
Thread
was passiert mit den Ausgängen im Falle einer Brown-Out detection
OC0A), PB1 (OC0B) und PB2 als Ausgang while ( PINB & (1<<PB4) ); // Warten bis Taster losgelassen wurde. _delay_ms(10); // Wegen evtl. Prellen 1ms warten sei(); // Interrupts aktivieren MCUCR = (1<<SE); // Sleepmode
umschalten } if ( PINB & (1<<PB4) ){ // Wenn Pin 4 mit V+ verbunden ist (Taster gedrückt). if ( presscount < 65535 ) presscount++; // Zählen bis Maximalwert } else { presscount = 0; } if ( presscount > OFF_DELAY ) { TCCR0A &= ~(
-
Thread
Interrupt INT0/INT1 bei Atmega8
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial#.28Tasten-.29Entprellung
das ist das Problem,........ Tasten niemals mit Interrupt entprellen oder Abfragen !! Gibt nur Ärger !! Oder wieviele Interrupts löst Deine Taste aus ?? Die "Nebensache" fängt eben im Detail an !!
-
Thread
Stromversorgung USB geht, aber nichts anderes
dann passt das auch. Deine Pull-Up-Widerstände sind viel zu klein! An SZVZU wird bestimmt ein Taster dranhängen, da müssen keine 5mA rüber fließen. Nimm besser 100k bis 1M und wenn du deine Taster noch etwas Hardware-entprellen willst spendier jedem Taster noch einen kleinen Kondensator. Bei 1M
passt das auch. > > Deine Pull-Up-Widerstände sind viel zu klein! > An SZVZU wird bestimmt ein Taster dranhängen, da müssen keine 5mA rüber > fließen. > Nimm besser 100k bis 1M und wenn du deine Taster noch etwas > Hardware-entprellen willst spendier jedem Taster noch einen kleinen > Kondensator
-
Thread
Vierfach Schalter Ansteuerung, IC, Relais?
Mega8. So kann ich mir auch noch eine Anzeige generieren welcher Ausgang benutzt wird, leicht die Tasten entprellen etc. Ist IMHO eine einfach Lösung mit fast keiner Zusatzbeschaltung (interner Osz. reicht) bei Bedarf erweitert werden kann und nicht wirklich teuer ist. thb
-
Thread
piso register per Software in c auslesen
Ach ja - das Entprellen: Eine neue gleiche Taste (erneuter "1"-Pegel) wird nur akzeptiert, wenn Du an der Spalte und Reihe eine "0" ausgelesen hast. D. h. Taste gelesen -> merken -> wenn "neue Taste = alte Taste"
>Ach ja - das Entprellen: Sorry für meine Dummheit, aber das mit der Entprellung ist mir nicht ganz klar? Also eine Taste prellt und ändert mehrmals die Flanke high - low - high (neue Taste?). Frage ich am Eingangspin
-
Thread
Interrupt wird nicht gesperrt
Flag,.. Falls das Ereignis *während* der Abarbeitung der ISR nochmal auftritt, ja. > die Taste ist am Ende Tasten prellen und gehören grundsätzlich *nicht* per Interrupt abgefragt.
erscheint mir das auch logisch. Ich wollte extra den Interrupt nehmen weil ich dacht dass ich dadurch die Taste entprellen kann (was ja auch funktionieren würde, wenn er denn die Flag nicht trotzdem speichern würde). Aber jetzt werde ich wohl doch den steinigen Weg nehmen^^. Oder kann man vllt die Flag irgendwie
-
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
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 Taster2 End If
-
Thread
Schalten mit logischen Pegeln (AVR ATmega8515)
so anschaue und auch den Artikel zu [[Entprellung]] fällt mir auf, dass dort der logische Pegel "Taster nicht gedrückt" eines Eingangs immer "high" ist. Wenn man den Taster drückt wird dieser Eingang dann auf "low" gezogen. Was ja von der Logik her verdrehte Pegel bedeutet. Taster gedrückt = 0 Taster
in etwa so aussehen: o +5V | R | _ | | +---o o----o (INPUT des µC) Zum Entprellen würde ich dann dem Taster einen Tiefpass nachschalten. Also in etwa so o +5V | _ | | +---o o--R--+---o (INPUT µC) | = | --- Den
-
Thread
Eingänge am atmega32 konfigurieren (Anfängerfrage)
. Dein Port B beginnt mit 0x00. In der Schleife wird dann ständig geprüft, ob die Taste gedrückt ist. Ist eine Taste gedrückt, wird dem Port der neue Wert 0xFF zugewiesen. Lässt du die Taste los, wird zwar der von der Bedingung abhängige Teil nicht mehr ausgeführt, aber nachdem da nichts
Das mit: "Mit einem Taster die Leds einschalten und bei einem zweiten Tastendruck wieder ausschalten" Stell diese Aufgabenstellung noch etwas zurück. Das ist nämlich gar nicht so simpel. Dazu musst du die Tasten entprellen
-
Thread
Simulation - Prellen/Entpellen von Tastern
Taster + Widerstand + Speicheroszi damit kannste das Prellen gut sichtbar machen
Vielleicht mit nem Zähler? Bei Taste Up -> Down läuft er mit einer bestimmten Taktfrequenz (z. B. T = 5 µs) los: 0, 1, 2, ..., 1000. Bei Taste Down -> Up wird er umgekehrt auf 1000 gesetzt und zählt auf 0 runter. Regeln: (1) Begrenzung
-
Thread
Taster am ATmega8
kleines Board zusammengelötet und hab aufgrund vieler dummer Fehler den ganzen Tag gebraucht um die Taster zum laufen zu kriegen. Ich hab aufgrund mangelnder C-Kenntnisse erstmal die Entprellung aus dem Tutorial so übernommen wie es da steht und versucht es zu verstehen, das muss erstmal reichen so. Später werde ich mich selbst mal daran probieren. Nun...Die Taster funktionen und togglen dann jeweils eine LED. Ich zitiere nochmal den Code aus dem Tutorial: --------------------------------------------------------------------------- #include <avr/io.h>
-
Thread
"if signal'event and signal = '1' " im process, wie bzw. wie umgeht man das?
Idealfall hast du in deinem Design einen Mastertakt zu dem alles synchron ist. Weil jetzt aber deine Taster und die ganze Aussenwelt sicher nicht synchron zu deinem FPGA laufen, mußt du jedem Signal deinen Takt aufzwingen, das Signal also über mindestens 2 Flipflops /Einsynchronisieren/ bzw. /Eintakten/.
Flanke schon wieder auf 0 oder habe ich das falsch verstanden? Ich würde das so lösen: -- Entprellen if (sregC="11111110") then pegelC <= '1'; end if; -- high if (sregC="00000001") then pegelC <= '0'; end if; -- low Also genauso wie die Flankenerkennung. So ist sicher gestellt, dass das Pegelsignal
-
Thread
[AVR Assember] Interrupt ohne reti beenden
verschiedene Aktionen durchgeführt werden. Während der Ablaufsteuerung muss immer eine bestimmte Taste gedrückt sein und ab einem bestimmten Punkt darf eine Zeit X nicht überschritten werden. Sobald die Taste losgelassen wird oder die Zeit überschritten wird muss der Ablauf sofort unterbrochen
Routine eine Abfrage reinbringen und ob in dem Timer > Interrupt ein Merker für das Loslassen der Taste gesetzt wurde. So wäre > es vielleicht "sauber" programmiert. Sauber (d.h. Fehlersicher) wäre es, wenn Du die Taste entprellst (4 Abfragen etwa alle 10ms sind gleich). Peter
-
Thread
Problem mit Code
> Dann speichert dein key_pressed() last_State nicht für jede Taste > einzeln, sondern nur den Wert des jeweils letzten Aufrufs. Das ist doch die Lösung das Problemes, Wenn Taste 1 gedrück und Taste 2 nicht gedrückt dann ist der Laststate immer entgegengesetzt. Damit
Du fragst abwechselnd Taster_1 und Taster_2 ab, aber speicherst den Zustand immer in der selben Variabel "last_state". Sobald Du eine Taste drückst ist (last_state == input) immer wieder false und die LED flakert... Zum entprellen
-
Thread
LEDs mit Zeitverzögerung und Abschaltung
Hallo, ich habe folgendes Problem ich möchte 2 LEDs mit 4 Tastern steuern. Je 2 Taster schalten eine LED ein, welche eine Nachlaufzeit im Sekundenbereich haben soll ca. 30 bis 60sec. Wird aber einer der Taster während der Nachlaufzeit dedrückt, sollen sofort alle
um die richtige Reihenfolge. * Du benutzt Taster ohne sie zu entprellen. Das gibt Ärger.
-
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
Hallo, zum Codeschnipsel wurde ja schon was gesagt. Trotzdem: wie entprellst Du den Taster bzw. verhinderst, daß ein 2. oder 3. auftretender Externer IRQ den Port nicht beliebig wieder auf L setzt? Danach sieht es mir nämlichn aus. Ext INT wird erkannt, Impulse gehen los
-
Thread
Debouncing 8 Keys und rotary encoder von P. Dannegger.
OC1A DDR #define IN1A PA0 #define IN1B PA1 // ####################### DEFINE Tastatur-Entprellen ######################################## // 2 Tasten ----- PD6, PD7 kurz / lang gedrückt LED an PORTCx wird ein- und ausgeschaltet #define KEY_PIN PIND #define KEY7 7 #define
= (diff & 2) - 1; // bit 1 = direction (+/-) } } // ############################## TASTEN ENTPRELLEN #################################### u8 get_key_press( u8 key_mask ) { cli(); key_mask &= key_press; key_press ^= key_mask;
-
Thread
PWM RGB-LED umschalten
ASM; da würden Kommentare schon helfen. Aber so wie ich deinen Code-Teil verstehe, hast du ein Entprell-Problem, indem du den Taster scheinbar nicht entprellst. Einfach Code anderer Leute zu nehmen, ihn ohne Sinn und Verstand zu ändern und dann im Forum nach Hilfe fragen finde ich ziemlich daneben
auf den LEDBIT wert, der sich komischerweise ändern obwohl der taster NICHT gedrückt ist... also besteht das problem bereits vor dem entprellen.. wie auch immer sorry dass ich so wenig kommentare benutzt habe, ich dachte der code ist einfach zu verstehen, sind ja
-
Thread
Atmel Mega 8 verhält sich nicht wie in AVR Studio Simulation
define edge_detect 1 #define level_detect 0 for (;;) { if (((P5IN & b00000010) == 0) & (TasterRU != 0)) TasterRU--; if (((P5IN & b00000100) == 0) & (TasterRO != 0)) TasterRO--; if (((P5IN & b00001000) == 0) & (TasterLO != 0)) TasterLO--; if (((P5IN & b00010000) == 0) & (TasterLU
einen regelmässigen Interrupt einsetzen wirst. In dieser ISR kannst du dann nebenbei auch noch die Tasten entprellen und hast dann auch noch den Vorteil, dass du zwischen langen und kurzen Tastendrücken auch noch unterscheiden kannst.
-
Thread
Zwei uC synchron? 1MHz internenr RC-Osci.
laufen, bis sie einen merkbaren Unterschied liefern. Würden die Prozessoren gleich schnell auf die Taste reagieren, wäre es also völlig egal, ob die Takte einige % abweichen. Wichtiger ist: Sie müssen zur selben Zeit einen Anlass zum reagieren erkennen. Z.B. über die Taste. hier ist die Frage: kann
Programmteil stecken, der das Erkennen des Tastendrucks verzögert? Wenn beide Controller nur ständig die Taste abfragen, oder die Taste per Interrupt erkannt wird, sehe ich keine Gefahr, dass du einen Unterschied merkst. Dann ist das Signal von der Taste die Synchronisation, die du suchst. Ansonsten eine
-
Thread
Tasterabfrage fallende Flanke
würdest, wenn du auf steigende Flanke testen willst. > Und das eben ohne Interrupt! So einen Taster frägt mann sinnigerweise eh nicht mit einem Interrupt ab (es sei denn man muss den µC aus dem Sleep rausholen) sondern mit einem Timerinterrupt. Denn Flanke abfragen ist eine Sache - Taste entprellen
eine Standard-Sache. Den nimmst du einfach und bist glücklich. Denn die meisten dieser Routinen entprellen, merken sich den Tastenzustand und können dir sagen, ob eine Taste gerade losgelassen oder gedrückt wurde.
-
Thread
Einsynchronsieren mit 2 FFs
durch zuweisen eines Reset-Werts an inputsr erzwingen, dass es in FF umgesetzt wird. Für das Entprellen von Tasten stellt das natürlich kein Problem dar.
dass die Signallaufzeiten vom Pin zu dieser LUT stark schwanken koennen je nach Design. (Bei Tastern ist das natuerlich voellig unerheblich, bei schnellen Signalen die synchron zu irgendeinem Takt von aussen sind, kann das aber grosse Probleme verursachen)
-
Thread
tastenentprellen von Peter
TASTER AN PD4? Bin mir nicht sicher,das ist bestimmt falsch oder? #define KEY1 6 #define KEY2 7 [/c] ersetzt. Es funktioniert nicht. Muss ich noch irgendwo dran drehen? Ist das ein Programm
Peter!Danke ....! volatile war der Klemmer. Habe noch 2 Fragen: 1 Habe deine älteren Tasten-Entprell-Versionen probiert. Die funktionierten nicht. Muss ich ältere Programme generell umbauen, die vor der aktuellen Compilerversion programmiert wurden, wie in diesem Fall? 2 Der Kollege
-
Thread
Funktionszeiger
small_font,PSTR("MENÜPUNKT 3")); lcd_set_cursor(43,LINE7);lcd_puts_p(small_font,PSTR("Zurueck mit Taste 3")); _delay_ms(10); //Taste entprellen while(1) { if( PIND & ( 1 << PIND4 ) ){show_menu();} } } void menu3_show()//MENÜPUNKT4 { lcd_clear(); lcd_set_cursor(43,LINE0
small_font,PSTR("MENÜPUNKT 4")); lcd_set_cursor(43,LINE7);lcd_puts_p(small_font,PSTR("Hauptmenue Taste 3")); _delay_ms(10); //Taste entprellen while(1) { if( PIND & ( 1 << PIND4 ) ){show_menu();} } } void show_menu() { lcd_clear(); DrawMenuTexts(); HandleButtons
-
Thread
Projekt : Partymischanlage
4 2,5 Kanister 1 Kompressor 1 Druckschalter 1 Speicherpuffer 1 Liter 1 Rückschlagventil 4 Taster ( Schließer ) 1 Taster ( Öffner ) 1 Schalter 8 Leds Paar Meter Strippe Paar Meter Schlauch Diverses wie Schlauchschellen und so weiter Nun zum Projekt: Beschreibung : Getränkeautomat
umgeschaltet. Nebenbei können die Hardware-Timer per Interrupt auch Zeitverzögerungen ermöglichen oder Tasten entprellen, aber das wird dann eher die hohe Kunst sein. Für das erste genügt es, wenn Du je nach Zustand die Eingänge prüfst und dann entsprechend reagierst. Und dann startet die große Schleife