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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.