Ich bin total verzweifelt, weil die blöden Tasten nicht so wollen, wie ich!!! Ich hab keine Ahnung warum!! Hab mal mein Design angehängt. Der line encoder macht nur eine codierung der 8 Tasten auf drei Leitungen und schaltet die E0 Leitung auf "high", wenn eine Taste gedrückt wird. Der Interrupt (Int1) wird ohne Probleme ausgelöst, dann schalte ich ihn aus warte 250 ms und schalte ihn dann wieder ein. Das ist doch sowas wie Entprellen der Tasten, oder? (Code steht unten) Allerdings habe ich das Problem, daß auch ohne daß Tasten gedrückt werden die Variable inkrementiert wird, manchmal tut sich längere Zeit garnichts Weiß jemand, warum das so ist?? SIGNAL (SIG_INTERRUPT1) { uint8_t tmp_sreg; // temporaerer Speicher fuer das Statusregister tmp_sreg = SREG; // Statusregister sichern cli(); // Interrupts global deaktivieren if ( (PIND & (1<<PIND6)) ) button++; timer2_on(); EIMSK&= ~(1<<INT1); SREG = tmp_sreg; return; } SIGNAL (SIG_OUTPUT_COMPARE2) { uint8_t tmp_sreg; tmp_sreg = SREG; cli(); EIMSK|= (1<<INT1); timer2_off(); SREG = tmp_sreg; return; }
Tut mir leid!!! Ich hatte vergessen alle Widerstände einzulöten und jetzt war der Zustand von E0 nicht wirklich definiert, weil nicht alle Leitungen auf "High" hingen sondern auf floating.
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.