oder so... aber wie genau schaut dann dieses interrupt aus? ich weiß, dass die frage naiv ist, aber dafür ist es ja ein forum ;)
Druckbare Version
oder so... aber wie genau schaut dann dieses interrupt aus? ich weiß, dass die frage naiv ist, aber dafür ist es ja ein forum ;)
http://www.mc-project.de/Pages/AVR/Timer/timer.html
vielleicht hilft dir das ja
Hi!
Kann es sein, dass ein Fehler im http://www.mikrocontroller.net/artic...R-GCC-Tutorial ist ?
Im Abschnitt 9.5.2.2 (Tasten-)Entprellung
Hier wird ein delay mit 100ms angegeben. Aber 262.14ms/ 3.6864Mhz ergeben 71,1ms. Oder habe ich das nicht richtig verstanden ?Code:#include <avr/io.h>
#include <inttypes.h>
#ifndef F_CPU
#define F_CPU 3686400UL /* Quarz mit 3.6864 Mhz */
#endif
#include <avr/delay.h> /* definiert _delay_ms() ab avr-libc Version 1.2.0 */
/* 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(100);
if ( ! (*port & (1 << pin)) )
{
/* Anwender Zeit zum Loslassen des Tasters geben */
_delay_ms(100);
return 1;
}
}
return 0;
}
int main(void)
{
DDRB &= ~( 1 << PB0 ); /* PIN PB0 auf Eingang (Taster) */
PORTB |= ( 1 << PB0 ); /* Pullup-Widerstand aktivieren */
...
if (debounce(&PINB, PB0)) /* Falls Taster an PIN PB0 gedrueckt.. */
PORTD = PIND ^ ( 1 << PD7 ); /* ..LED an Port PD7 an-
bzw. ausschalten */
...
}