-
Thread
ATMega32, Timer2 zu schnell
Ordnung aus. Das Ganze wird zum Messen von Intervallen zwischen externen Interrupts sowie zum Entprellen von Tastern gebraucht, die Aufloesung von 0.1 msec waere mir schon wichtig. Hoffe ihr koennt mir weiterhelfen, liebe Gruesse, Dennis
-
Thread
Uhrzeit stellen
include <lcd/lcd-routines.c> // greift auf LCD-routine zu #include <stdio.h> #define TASTER1 PB0 #define TASTER2 PB1 #define TASTER3 PB2 #define TASTER4 PD7 // eventuell umlöten auf PB3-->(ISP)! volatile int tc; char hr=20, min=0, sec=0; char
am Ende dann nicht cli(); ? Das Hauptprogramm läuft doch pausenlos durch. Nun ja, ich habe 4 Taster definiert: [c] #define TASTER1 PB0 #define TASTER2 PB1 #define TASTER3 PB2 #define TASTER4 PD7 [c/] Mit Taster1 möchte ich die Stunden hochzählen und mit Taster2
-
Thread
Tastenentprellen von PD erweitert auf 16 Keys!
ich habe schon öfter die Enprellroutine vom Peter benutzt nur brauchte ich eine Möglichkeit 16 Tasten zu entprellen. Ich habe mir den Code etwas abgeändert und durch den Simulator gejagt. Es hat soweit auch alles funktioniert. Kann sich das vieleicht mal noch jemand angucken ob ich mir nicht
XTAL / 1024 * 10e-3 + 0.5); // preload for 10ms i = key_state ^ KEY_PIN; // key changed ? Taste gedrückt = High ct0 = ~( ct0 & i ); // reset or count ct0 ct1 = ct0 ^ (ct1 & i); // reset or count ct1 i &= ct0 & ct1; // count until roll over ? key_state ^= i;
-
Thread
PCB-Projekt: RTC, 7Seg, Temp.sensor
Schema: - Es fehlt noch ein Quarz, ohne genauen Takt wirst du mit RS232 Probleme bekommen. - Die Taster lassen sich auch in Software entprellen. - Statt dem MAX7221 kannst du auch den MAX7219 nehmen, vielleicht ist der günstiger. Einen "echten" SPI-Bus verwendest du hier nicht, für das eine IC kann
-
Thread
wie Code verbessern?
Ja, in dem man den Taster enrprellt.
#Interrupt-Verfahren_.28nach_Peter_Dannegger.29 http://www.mikrocontroller.net/topic/tasten-entprellen-bulletproof
-
Thread
Blockieren sich Interrupts gegenseitig?
deinem ersten Interrupt mittels "sei()" die Interrupts freischalten. Vergiss aber nicht, deinen Taster zu entprellen, oder andere Maßnahmen dafür vorzunehmen. Gruß, Yaro
startet und dann beendet ist so wird auch der Timer-Int ausgelöst. > Vergiss aber nicht, deinen Taster zu entprellen, oder andere Maßnahmen > dafür vorzunehmen. da liegt schon eher das Problem, wobei der ausgelöste Timer-Int ja nicht verloren geht - warten wir mal auf den Code ... Sascha
-
Thread
kunstobjekt mit Weiterschaltung per interrupt
spess53 schrieb im Beitrag #2371180: > 2. INTs sind für Tasten ungeeignet. Nicht wenn man hardwaremäßig entprellt.
ist aus µC Sicht nichts zeitkritisches. wenn er regelmässig mit einem Timer nachsieht, ob eine Taste gedrückt ist, dann ist das schnell genug und man spart den Aufwand für externes Entprellen mit gleichzeitig noch besserer Funktionalität wie zb Autorepeat, Unterscheidung kurzer/langer Tastendruck
-
Thread
Problem mit Schieberegister und steigende Flanke
nachdem er > einen Tastendruck erkannt hat. Was bedeutet, man muß sich immer wieder um das Entprellen 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
nachdem er >> einen Tastendruck erkannt hat. > > Was bedeutet, man muß sich immer wieder um das Entprellen 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
-
Thread
assambler-problem
Wie entprellst du den Taster?
otto: deswegen habe ich ja die "wait"-schleife eingebaut, damit quasi erst gezählt wird wenn der Taster wieder losgelassen wird. ich überprüfe noch mal den "entprell-apparat"... rein vom code sollte es eigentlich richtig sein oder?
-
Thread
Steigende Flanke mit Funktion klappt nicht
gedacht: [c] bool Eingang[64] = {false}; bool arraytest[40] = {false};; [/c] [c] void R_TRIG_Taster(bool bit,int bitnr, bool array[]) { if(!array[bitnr] && bit) //Taster wird gedrueckt (steigende Flanke) { array[bitnr] = true; } else if (array[bitnr] && bit) //Taster wird gehalten { array[bitnr] = false; } else */ //Taster wird losgelassen (fallende Flanke) { array[bitnr] = false; } return array; } [/c] so in der main-Schleife aufgerufen: [c] R_TRIG_Taster(Eingang[4],4, arraytest
-
Thread
Taster enprellen
Hallo, Ich muss einen Taster entprellen, und zwar ist das Problem, dass der Taster in einer Maschine verbaut ist, und mitunter bis zu 15sec. gedrückt bleibt, dabei aber nur einen einzigen Impuls abgeben darf... Ich habe jetzt
...) Wie kann ich das denn lösen, dass der Taster nur kurz auf Masse schaltet und damit den Timer auslöst, auch wenn der Taster länger gedrückt bleibt? mfg
-
Thread
Tastatur über ADC einlesen
Meter vom Controller entfernt montiert wird - wenn man sie richtig programmiert. Mit normalem Entprellen geht hier leider nichts. Ich hab es so programmiert: Mit einem Timer werden alle 5mSec die Analogwerte gemessen. Wenn eine Taste gedrückt wird, werden jeweils 12 Analogwerte erfasst und die zugeordnete
Ja, genaugenommen musst du ein bißerl "entprellen", ich hab es so gemacht: messen und für jeden Messwert in dem Tastenarray die dazugehörige Taste hochzählen.. das ergibt in der geschilderten Zahlenreihe Matrix(12) auf null setzen 0 270
-
Thread
TWI kommunikation hängt sich auf
diese Klasse: http://www.mikrocontroller.net/topic/87597 Der Master sendet abhängig von der Tasten eingabe an Port B Pin 1 und 0 eine 1 oder 2. Der Slave stellt darauf das Signal um (Orca1 wird überschrieben). Gleichzeitig wird am Master uC an Port D Pin 1 oder 0 auf High bzw. Low gesetzt.
Fertig ist die Laube. Als Stecker eignet sich dann vielleicht ein USB oder sowas. Die sind billig. Taster mit dran (schön entprellen) und fertig. Schönes Projekt! Grüße, Jens
-
Thread
SPI als Eingänge
Hi, ich benutze beim atmega16 den portD als ISP-Schnittstelle und möchte nun auch entprellte tasten (wie im artikel "taster entprellen" beschrieben mit 74HC14) anschließen. Wenn der baustein im sockel steckt und ich dann den programmer anschließe (AVRISP mk2) blinkt die statusled rot... wenn ich
Hi, ich benutze beim atmega16 den portD als ISP-Schnittstelle und möchte > nun auch entprellte tasten (wie im artikel "taster entprellen" > beschrieben mit 74HC14) anschließen. Warum denn nur? Mach doch wie der Rest der Welt eine Software-Entprellung. Einen uC hast du eh'... mr. mo schrieb im
-
Thread
TPIC6B595 Schieberegister, Serial In wirkt wie durchgeschleift
Finn Schmitz schrieb im Beitrag #2359352: > Tasterprellen: Ist mein Vorhaben daher mit Tastern unmöglich? Wie stelle > ich es sonst mechanisch an? Jein. Man kann Taster mit einem Kondensator entprellen. Aber ein Schieberegister ist nicht dazu da, daß man es mit Tastern und Schaltern bedient
Entprellung: Taster + Pullup (10k) -> RC-Tiefpaß (100k+100nF) -> 74HC14-Gatter Peter
-
Thread
Tasten gedrückt halten
Was macht deine Experimentierplatine denn während du den Taster betätigst? Denn wenn da nix zu tun ist würd ich den Taster z.B. alle 100ms Pollen. Wenn er Die Anzahl der Pollings wird gezählt. Die Anzahl der positiv zurückgegebenen Werte des Pollings (Taster ist gedrückt) kann man zählen und sich daraus dementsprechend eine Zeit berechnen. Sobald der Taster nicht mehr gedrückt ist kann man noch 1 oder 2x abfragen um sicherzustellen, dass der Taster wirklich nicht mehr gedrückt ist und kann aufhören zu pollen. - Ich habe den Beitrag über "Taster entprellen
-
Thread
Abfragen ob Taster mehrmals gedrückt wurde
also taster entprellen kann ich in soweit, das wenn ich einen taster drücke er eine led einschaltet...er dann in einer schleifen abfragt ob ich einen zweiten taster drücke...und wenn ich den dann drücke er die
Bascom Beispiele, Tutorials durch, z.B.: http://halvar.at/elektronik/kleiner_bascom_avr_kurs/taster_entprellen/ Und fange klein an. Dein Programm ist keine Black Box, sondern Du mußt es Schritt für Schritt aufbauen. Peter
-
Thread
Taster richtig abfragen
{ if(TASTER-PIN & (1<<TASTER1)) { test++; } } " eingebe und die variable "test" auf einem display ausgebe zählt sie mit annähernd dem systemtakt hoch sobalkd ich den taster drücke. Momentan
Brauchst du nicht. Du musst warten bis die Taste wieder losgelassen wurde [C] while(1) { if(TASTER-PIN & (1<<TASTER1)) { test++; while(TASTER-PIN & (1<<TASTER1)) {} // warten solange gedrückt } } [/C]
-
Thread
LED Laufllicht in Assembler
aber im moment egal sein) -- Anzeige des Speed als Zahl Was der Code noch falsch macht: -- Die Tasten lassen sich nicht entprellen -- Der Speed kann auch größer werden als 9 (es fehlt/funktioniert nicht die begrenzung zwischen 1-9) Ich packe mal den Code rein. Folgende Fragen hab ich: -- Warum
die LED angeschlossen sind .equ led_ddr = DDRB ; Die Datenrichtung der LED .equ taster_port = PORTC ; Der Port an dem die Taster angeschlossen sind .equ taster_ddr = DDRC ; Die Datenrichtung der Taster .equ taster_in = PINC ; Eingabe der Taster .equ seq_port
-
Thread
7-Segment Zähler
inkl. 7-Segment-Dekoder) und eine 7-Segment-LED-Anzeige (nebst passenden Vorwiderständen) dran. Die Tasten zum Weiterzählen müsstest du hardwaremäßig entprellen. Mit Mikrocontroller wäre es aber weniger Bauteilaufwand, flexibler und besser erweiterbar.
Ansteuerung der 7-Segment Anzeigen hatte ich mir gedacht, mit Hilfe eines Pics anzusteuern. Das Entprellen mit Hilfe zweier NAND-Bausteine. Jedoch, weiß ich nicht genau, wie ich die Taster mit der 7-Segment Anzeige und dem Pic verschalten soll.
-
Thread
Mehrere Dinge mit dem uC erledigen
beschaltet ist. Besser wäre ein periodisches Abfragen (Pollen) im Timer > Interrupt, da kann man auch entprellen. Entprellen koennte man auch im Interrupt. Und bei sicherheitskritischen Aufgaben wird auch das LCD so lange warten koennen. Stellt sich aber die generelle Frage ob das sinnvoll waere einen Not-Aus-Taster zu entprellen. Ausreichend kleiner Pull-Up-Widerstand und gut is. Volker
-
Thread
[ATMega32]Unbekannter Fehler beim Timer0 overflow
auf deinem Prozessor tut, was es soll. Erst, wenn du erfolgreich IO setzen und lesen, einen Taster abfragen, und eine LED per Timer blinken lassen kannst, erst dann kannst du vielleicht mal drüber nachdenken, das alles zu einem größeren Programm zusammenzusetzen. Oliver
Bedingung immer Falsch ist. Auch sonst sind da noch grobe Patzer dirn, es fehlt z.B. eine Entprellen der Taster, Delay im Interrupt, kein Volatile.
-
Thread
T-FlipFlop will nicht wie ich will
Kondensator durch 68pF. Sicher nicht die richtige Massnahme. Ich tippe nach wie vor auf den Taster, oder daß der Taster, wenn man ihn drückt, zu Wackelkontakten auf dem Steckbrett führt.
Kondensator durch 68pF. > > Sicher nicht die richtige Massnahme. > > Ich tippe nach wie vor auf den Taster, oder daß der Taster, wenn man ihn > drückt, zu Wackelkontakten auf dem Steckbrett führt. Naja der Taster ist nicht der neueste. Ich finde es aber verwunderlich,dass mit Kondensatorwerten >1nF
-
Thread
Mit Servosignal & uC schalten
und speichert dies als Maximum, man drückt den Hebel bis zum Anschlag runter und drückt wieder die Taste und er guckt sich das Signal an und sieht 0,95ms und nimmt dies als minimum. Natürlich nimmt man nicht drei Tasten dafür sonder beim erstenmal drücken wird Wert 1 gespeichert, beim zweiten der zweite usw. und damit man die Taste auch für andere Sachen benutzen kann muss man erst in den Konfigurationsmodus kommen. Dies macht man indem man die Taste 3 Sekunden lang drückt. Tasten Entprellen muß man auch noch. Ausserdem ist An
-
Thread
Transistor Logic - ein Schalter auf zwei Ausgänge
Hallo, ich bräuchte eine Schaltung, die aus einem Eingangssignal, das von einem Taster kommt diese zwei Ausgangssignale erzeugt: [pre] Eingang: ------------+ +---------+ +--------- +-------------+ +---------------------
Taster einen Interrupt auslösen und die Ausgänge entsprechend Schalten, aber bei diesem doch recht einfachen Problem müsste man doch auch diskret recht gut zu einer schönen Lösung kommen. Da fehlt mir allerdings
-
Thread
Taster-Matrix Code von Peda auf AVR
Code am LED Port angezeigt wenn ich die Taste loslasse wird der Port wieder gelöscht. Nur muss ich das nun noch entprellen. Da hab ich den Kommentar von PeDa in der Routine nicht verstanden "call with debouncing time (10..200msec)" ansonsten
Code am LED Port angezeigt wenn ich die Taste loslasse wird der Port wieder gelöscht. Nur muss ich das nun noch entprellen. Da hab ich den Kommentar von PeDa in der Routine nicht verstanden "call with debouncing time (10..200msec)" Vieleicht
-
Thread
Protoboard vorschlag.
Frei definierbar. Dies ist das ANDY Board, hat einen 50/60 Hz Clockgenerator welcher auf für das Entprellen der Tasten/Dip-Switches verwendet wird, 16 Zweifarbige Leds, drei Spannungsregler (+-9V sowie 5V) und einen Pulsgenerator (Rechteck/Sinus). Was ich haben möchte: Pmod style 6pin Ports, USB (MCP2200
arduino mini) . Auch drei PSU würde ich beibehalten, warscheinlich LM317. Hätte gerne 4 entprellte Taster und einen zusätzlichen DAC (R2R) um die Dip-Switch mit einem ADC einlesen zu können sowie einen Drehpoti.
-
Thread
VHDL - For-Schleife
Hallo Leute, habe ein Problem: Ich versuche Tasten zu entprellen indem ich bei fallender Flanke einfach eine Weile warte und dann nochmal überpüfe, ob der Zustand immernoch 0 ist und dann zählt die Taste als gedrückt. Das Warten läuft mit einer
Flanke wartet und dann nochmal überprüft ob ich low oder high bin. So möchte ich halt einfach die Taste entprellen.
-
Thread
Mega32 schaltet, ohne ein Signal zu bekommen
=================== Programm ==================================================== */ /* * Entprell-Methoden, um Entprellung an mehreren Stellen aufrufen zu koennen */ // nach-unten-Taster uint8_t debounce_Down(void) { return debounce(NavigationIn, menDown); } // nach-oben-Taster uint8_t debounce_Up(void) { return debounce(NavigationIn, menUp); } // enter-Taster uint8_t debounce_Enter(void) { return debounce(NavigationIn, menEnter); } // zurueck-Taster uint8_t debounce_Back(void) { return debounce(NavigationIn, menBack); } // Reset-Taster
-
Thread
Atmel Evalutionsboard- Probleme beim Schalten der LED
Karl Heinz Buchegger schrieb im Beitrag #2317004: > Der Taster T1 soll als Schalter fungieren, also beim ersten drücken geht >> die LED1 an und bleibt solange an bis erneut der Taster T1 gedrückt >> wird. Und da kommt dann sicher noch die Problematik "Entprellen
"Entprellen" hinzu. > > citb Langt es nicht wenn der Taster Hardware-technisch Entprellt ist, und die Internen Pull-Ups aktiviert worden sind?
-
Thread
Binaerzaehler Assembler
----------------------------------------------------------- ;Projekt : Binaerzaehler ; (Taster1/PIN D2(oben) zaehlt hoch) ; (Taster2/PIN D3(unten) zaehlt runter) ;Prozessor : AT90S8535 ;Takt : 8MHz ; ;Stand : ;Fehler : ;Hardware : ; ;----------------------------
mit 1 subtrahiert wurde, zurueck zu START Nun ist meine Frage, wie ich meine Taster entprelle, da diese nicht +/-1, sondern beliebig viel zählen? Bitte, bitte helft mir mal. :)
-
Thread
D-FlipFlop mit Atmega8
leds hängen nun möchte ich das wenn die spannung anliegt die leds aus sind. sobald ich den taster T1 drücke soll mein Programm ablaufen sprich die Leds gehen an (ist eine Endlosschleife) wenn ich nun den taster nochmals drücke sollen alle LEDs wieder aus gehen.
.html D-Flip-Flop anstelle eines RS-Flip-Flop wäre ohnehin richtiger. Und falls Du nur einen Taster und keinen Umschalter hast ist sowieso kein Flip-Flop sinnvoll.
-
Thread
Tastenentprellung über Hardware, was praktikabel?
Versorgungsspannung Vcc. Aber wie gesagt: Eigentlich ist das alles gar nicht notwendig. Softwaremässiges Entprellen funktionert hervorragend und mit den PeDa Routinen bekommt man dann auch noch ein paar Goodies mit dazu, wie zb Autorepeat, was besonders bei Eintellsachen, die man mittels Rauf-/Runter Tasten einstellt
keinen Kurzschluss in der > Versorgungsspannung geben, wenn die Kondensatoren parallel zu den > Tastern liegen. WEnn sie parallel zu den Tastern liegen, werden sie bei Betätigen des Tasters schlagartig entladen. AUch nicht besser.
-
Thread
Fortlaufender Zähler in C
Ach ja - du darfst auf keinen Fall vergessen, deinen Taster zu entprellen. Sonst zählt er ab und zu X * 10 (also 20 oder 30 ...) dazu.
Michael schrieb im Beitrag #2297884: > Wenn (Taste kurz gedrückt) // Entprellung nicht vergessen mit: Wenn (Taste kurz gedrückt)&(counter==0) Counter += 10; könnte man sich die Entprellung sparen, da dann der eigene Timer das Entprellen übenimmt
-
Thread
LED Programm
falsch an die Lösung der Sache heranzugehen. Ich nehme mal an, so soll es funktionieren: char tasten,lampen,delay[4],i; // Ports init while(1) { tasten=PINA; lampen=0; for(i=0;i<4;i++) { if(tasten&(1<<i)) delay[i]=100; if(delay[i]>0) { lampen|=1<<i; delay
und somit die LED ausschaltet. Nur Mut, du wirst das hinkriegen. Machs erst mal nur für 1 Taster und für 1 LED. Und wenn das dann läuft, dann erweiterst du auf 4 Taster und 4 LED.
-
Thread
Attiny25 interne Pullup-Widerstände
das PUD Bit in MCUSR aus? Muss glaube ich 0 sein. Gegenfrage: Was klappt nicht. Vielleicht Taster falsch angeschloßen?
Hm. Dann hätte es funktionieren "können". Liegen denn ohne Taster 5v an?
-
Thread
Drehencoder am PIC 16F628
rechts nach links rüber. Da kann man dann die Richtung bestimmen, die Anschlüsse sind gleich und Taster prellen auch usw.
.. So mach ich das auch. Kontakt A frage ich im Zeittakt von 1ms ab. 10-20ms ist für normale Tasten besser. Bei Encodern bekommt man aber bei schnellem Drehen Schwierigkeiten mit der Auswertung.
-
Thread
4x4 Matrixtastatur mit Tasterentprellung
5 // Taste: #define KEY6 6 // Taste: #define KEY7 7 // Taste: #define KEY8 8 // Taste: #define KEY9 9 // Taste: #define KEY10 10 // Taste: #define KEY11 11 // Taste: #define KEY12 12 // Taste: #define KEY13 13 // Taste: #define KEY14 14 // Taste: #define KEY15 15 // Taste: [/code] Gruß und danke, Marc
-
Thread
Taster entprellen
Tastereingänge und verwende das Verfahren von Peter Dannegger mit den vertikalen Zählern. Damit kannst du 8 Taster auf einen Schlag entprellen. Schau in den Tutorials nach.
nebenbei immer eine gute Idee, jedes >Eingangssignal 1. zu filtern (analog -> filtern, digital -> entprellen) >und 2. zu plausibilisieren. Völlig richtig! ESD an einem Port-Pin ist immer kritisch. Und gerade die Tasten können da Einiges einfangen...
-
Thread
Taster am ISR-PIN entprellen
Guten Tag zusammen, Ich habe einen Taster an einem Interupt-PIN und wenn ich diesen Taster Drücke, löse ich einen Interupt aus, und das Programm springt in die ISR. Aber wie entprelle ich dies? Wenn ich den Taster ohne Interupt nutze geht das mit debounce. Aber wie mache ich es, wenn ich den Taster als Interupt nutzen möchte? Gruß und Danke Snatch
-
Thread
Hilfe zu "Interrupt" Befehl
bestellt und habe nun dazu eine Frage. Ich habe eine Tonabfolge programmiert und möchte nun diese per Tasten druck abbrechen. Da aber der Zustand des Buttons am Anfang meiner Hauptschleife abgefragt wird, muss ich praktisch den Taster die ganze Zeit gedrückt halten, bis meine Schleife von vorn beginnt, damit
volatile gekennzeichnet sein. Warum steht im Artikel über die Interrupts. Um das Thema Prellen/Entprellen bei Tasten zu entschärfen, kannst du die Routine in 1. entsprechend schreiben. Also z.B. ändert sich die Hilfsvariable erst, wenn x-mal hintereinander der gleiche Tastenwert anliegt. Näheres zum
-
Thread
Debounce-Funktion aus dem GCC-Tutorial
guckt dann ob der Pin wieder auf High steht, wartet wieder 100ms und gibt dann true zurück. Ich taste das indem ich eine LED mit einem jeweiligen druck auf den Taster aus und beim nächsten Druck wieder anschalte. Wenn das so wäre dann wundert mich eins: Wenn ich den Taster gedrückt lasse (dauerhaft
Entprellen von Tastern beim Pollin-Board) und hab das wohl falsch in Erinnerung gehabt. Ich frickel mal eben meine debounce-Funktion um :D
-
Thread
ATmega problem mit Interrupt testprogramm
Interrupts in den "nix passiert" Zustand. Das kann z.B. passieren, wenn du INT0 mit einem prellenden Taster auslöst. > SREG |= 0x80; // Interrupts "global" aktivieren Dafür gibt es sei() > MCUCR |= 0x03; > GICR |= 0x40; Unsinnig die absoluten Bitwerte zu kontrollieren, wenn das AVR Modell
Womit wird denn die steigender Flanke erzeugt? Hoffentlich kein Taster! Sonst: entprellen. Gruß Dietrich