kann man so den int0 und int1 kurzfristig sperren? danke. mfg ISR(INT0_vect) { GIMSK &= ~((1<<INT0) | (1<<INT1)); encoder_li = encoder_li+1; print_wert_li(); if(encoder_li >= enc_wert) { print_ausgabe(); } GIMSK |= (1<<INT0) | (1<<INT1); }
Kann man wohl schon, aber warum? Während der ISR sind interrupts eh deaktiviert. Was vielleicht eher dem gewünschten Ergebniss nahekommt wäre die IRQ-Flags vor dem Verlassen nochmal zu löschen:
1 | GIFR=_BV(INTF1)|_BV(INTF0); |
Dein Hauptproblem ist aber eher das vermurkste Design. ISRs sollten möglichst kurz gehalten werden, print_wert_li() und print_ausgabe() hören sich aber eher nach langsamen, grossen Brocken an. Besser: in der ISR nur ein Flag setzen, Ausgabe dann in der Main-Schleife.
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.