Hi Hab ein (kleines?!) Problem mit dem Input-Capture-Interrupt des AVR128. Nachdem ich ihn konfiguriert habe (siehe Code unten bzw Screenshot) läuft der Timer1 schon mal, aber er reagiert nicht darauf wenn ich den IC-Pin auf '0' setze. Das IC-Interrupt-Flag wird einfach nicht gesetzt, obwohl der PIND4 die richtigen Pegel erkennt und auch übernimmt! Hab natürlich den Globalen Interrupt freigegeben, die TIMSK gesetzt, die Flanke und den Prescaler gewählt und die IC-Quelle (beim 128 kann der IC auch vom Analog-Komparator getriggert werden) auf den PIND.4 eingestellt. Weiters hab ich schon einen anderen Controller ausprobiert, bei dem ist dasselbe (also auch kein def. Chip). Der Interrupt wird, wenn ich das Flag händisch beim Debuggen setze, fehlerfrei ausgeführt. Wollt jetzt fragen ob irgendwem noch was auf- oder einfällt warum das Flag nicht gesetzt wird. glg Sgix Hier noch meine Funktion zum Einstellen des IC: inline void InputCaptureInit(void) { TCCR1A = 0x00; /* Input capture noise canceler on, falling trigger edge, prescaler = 1 */ TCCR1B = (1<<ICNC1)|(0<<ICES1)|(0<<CS12)|(0<<CS11)|(1<<CS10); /* Input capture pin configured to input */ cbi (IC_DD_REG, IC_PIN); /* Enable pullup on IC pin */ sbi (IC_PORT_REG, IC_PIN); /* Enable input capture interrupt */ sbi(TIMSK, TICIE1); /* Clear registers */ TCNT1 = 0x0000; ICR1 = 0x0000; }
Hast du in der Dokumentation mal nach den "Known issues" gesucht? Evtl. handelt es sich um eine Einschränkung im Simulator.
Danke! War ein Problem des Debuggers. Er "übersieht" beim Durchsteppen die Flanke am Eingang und somit auch das Interrupt-Flag, das nur einen Takt anliegt. Dieses Problem tritt auch bei Output-Compare auf. Man muss halt den Interrupt einstellen und einen Break-Point in die ISR setzen um debuggen zu können. thx nochmal
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.