Gast
#1184538
Hallo Leute, ich bin Anfänger und arbeite gerade das GCC-Tutorial durch. Ich hab mir selbst ein 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> #include <inttypes.h> #ifndef F_CPU #warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert" #define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */ #endif #include <util/delay.h> /* bei alter avr-libc: #include <avr/delay.h> */ /* Einfache Funktion zum Entprellen eines Tasters */ inline uint8_t debounce(volatile uint8_t *port, uint8_t pin) { if ( ! (*port & (1 << pin)) ) { /* Pin wurde auf Masse gezogen, 100ms warten */ _delay_ms(50); // max. 262.1 ms / F_CPU in MHz _delay_ms(50); if ( *port & (1 << pin) ) { /* Anwender Zeit zum Loslassen des Tasters geben */ _delay_ms(50); _delay_ms(50); return 1; } } return 0; } ------------------------------------------------------------------------ --- So...Im Turorial steht weiter unten auch, dass der Nachteil dieser Variante eine ca. 200ms Verzögerung ist. Man merkt das beim Tasten auch ganz deutlich. Nun meine Frage, woher weiß ich die Verzögerungsdauer ? Vielleicht stell ich mich auch blos wieder doof an. Die ergibt sich ja aus dem Takt und dem Delay-Wert nicht wahr ?! Vielen Dank im Voraus. Gruß