Taster entprellen

Gast #1392889
Lesenswert?

Hallo zusammen,

habe mal wieder ein Anfängerproblem:

Habe folgenden Code zum Entprellen aus dem Tutorial Roboternetz:
Kann mir jemand einen Tipp geben warum es nict funktioniert?
Benutze einen Attiny2313 mit internen Takt.

Danke im Voraus
1
#include <avr/io.h>
2
#include <inttypes.h>
3
#ifndef F_CPU
4
#warning "F_CPU war noch nicht definiert, wird nun mit 3686400 definiert"
5
#define F_CPU 3686400UL     /* Quarz mit 3.6864 Mhz  */
6
#endif
7
#include <util/delay.h>     /* bei alter avr-libc: #include <avr/delay.h> */ 
8

9
inline uint8_t debounce(volatile uint8_t *port, uint8_t pin)
10
{
11
    if ( ! (*port & (1 << pin)) )
12
    {
13
        /* Pin wurde auf Masse gezogen, 100ms warten   */
14
        _delay_ms(50);  // max. 262.1 ms / F_CPU in MHz
15
        _delay_ms(50);
16
    
17
        if ( *port & (1 << pin) )
18
        {
19
            /* Anwender Zeit zum Loslassen des Tasters geben */
20
            _delay_ms(50);
21
            _delay_ms(50); 
22
            return 1;
23
        }
24
    }
25
    return 0;
26
}
27
 
28

29
  
30

31
int main (void) {
32

33
DDRB = 0x0F; //Bit1-4 Ausgang und 5-8 Eingang - Jeweils Taster und LEDs
34
PORTB = 0x00; //Pullups deaktivieren und Ausgänge = 0
35

36

37
while(1) {
38

39

40

41
  if (debounce(&PINB, PB6))             /* Falls Taster an PIN PB6 gedrueckt..    */
42
     {   PORTB = PINB ^ ( 1 << PB3 );  /* ..LED an Port PB3 an-
43
                    bzw. ausschalten */
44
   
45
  }
46

47
}
48

49
return 0;
50
}
Gast #1393016
Lesenswert?

Hallo Stefan,

habe natürlich externe Pullups eingebaut. Es ist ja nicht so das ich 
nicht schon ne Stunde alles ausprobiert habe.

Ich kann so viel wie ich will auf meinen Taster drücken. Die 
dazugehörige LED leuchtet nicht. Hardwearefehler habe ich mit anderen 
testprogrammen ausgeschlossen.
Gast #1393024
Lesenswert?

Ach übrigens:

Beim compilieren des Codes bekomm ich immer folgende Warnung:

warning: '_delay_ms' is static but used in inline function 'debounce' 
which is not static


...dies sollte jedoch nichts mit meinem Problem zu tun haben, oder?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren