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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.