Forum: Compiler & IDEs Taster


von Peter Muster (Gast)


Lesenswert?

Ich benötige 2 Taster für meinen Roboter.

Nun habe ich folgendes programmiert, jedoch passiert nichts.

taster.c

//Funktion zum beide Ports auf Eingang zu schalten
void ioinit()
{
    //Taster auf Input
    //An den Tastern die PullUps aktivieren
    DDRC  &= ~( 1 << PC0 );
  DDRC  &= ~( 1 << PC1 );
  PORTC |= ( 1 << PC0 );
    PORTC |= ( 1 << PC1 );
}

/* 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;
}

und in der main habe ich folgendes:

while(1) {
//Falls Taster an PIN PC2 gedrueckt
if (debounce(&PINC, PC0)) {
bla();
}
///Falls Taster an PIN PC1 gedrueckt
if (debounce(&PINC, PC1)) {
blu();
}
}

leider wird jedoch nun bla() oder blu() nicht ausgeführt...

Sieht jmd gerade den Fehler?
Danke

von Peter Muster (Gast)


Lesenswert?

das Problem hat sich erledigt.

Nun noch eine andere Frage:

wie erreiche ich es, dass die Funktion direkt und nicht erst nach dem 
Loslassen gestartet wird?

Danke

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.