Forum: Mikrocontroller und Digitale Elektronik AVR 128 ICR-Flag-Problem


von Stefan G. (sgix)


Angehängte Dateien:

Lesenswert?

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

von Magnus Müller (Gast)


Lesenswert?

Hast du in der Dokumentation mal nach den "Known issues" gesucht? Evtl. 
handelt es sich um eine Einschränkung im Simulator.

von Stefan G. (sgix)


Lesenswert?

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