Gut, eine PCINT kann ich an jedem beliebigen Portpin haben und die INT0 ist an PB1 gebunden, aber das kann doch nicht der Grund für die Existenz der PCINT sein?
Es gibt halt nur
einen INT0.
Aber manchmal möchte man mehrere Interrupt-Quellen zur Vefügung haben.
INT0 hat die höchste Priorität. Wenn der auftritt, dann cancelt es automatisch die möglicherweise zeitgleich (oder unmittelbar nachfolgenden) anderen Interrupts, sofern man keine Maßnahme dagegen ergreift. Siehe die Seiten 10 und 11 im Datenblatt.
Man kann bei INT0 festlegen, ob auf einen Low-
Zustand, oder explizit auf eine steigende
Flanke, oder explizit eine fallende
Flanke reagiert werden soll, oder auf ein
Toggeln in beliebige Richtung.
Im Gegensatz dazu, detektieren die sechs PCINT(0.5) Eingänge lediglich das
Toggeln eines Pins (egal in welche Richtung).
An dem Datenblatt kann man in Bezug auf Interrupts echt verzweifeln, wenn man kein gestandener Fachmann für Bit-Schubserei in Mikrocontrollern ist. Mein Verständnis bleibt hier ziemlich vage, denn weder aus dem von Dir geposteten Schema, noch aus dem im Datenblatt darunter befindlichen Timing-Diagramm, geht für mich vollständig klar hervor, was es mit diesen drei Flipflops auf sich hat. Aber ich VERMUTE, dass es erstens damit zu tun hat, die Unterscheidung der Flanken weg zu kriegen, um letztendlich auf das bloße Toggeln des Pin-Zustands zu reagieren. Zweitens mag es damit zu tun haben, dass INT0 eine höhere Priorität hat, als PCINT(n). Darum eine Verzögerung um drei Takte.
Man sieht im Timing-Diagramm, dass der auf PCINT(n) folgende Takt zunächst pcint_in_(n) wieder auf low setzt. - Dieses Signal wurde zuvor unverzüglich (asynchron) high, als PCINT(n) high wurde.
Es braucht dann, wegen der Flipflops, noch genau zwei weitere Takte, um am Ende das PCIF auszuspucken.
Bevor das passiert, fallen zwischen den Flipflops noch die Signale pcint_syn und pcint_seflag an. Diese Signale sind per Suchfunkion im Datenblatt sonst nicht aufzufinden, aber ich gehe davon aus, dass der Controller sie intern verwurstet ... und dass der Controller sein finales PCIF erst dann erzeugt, wenn wenn diese beiden internen Signale ihren Dienst getan haben.
Das Datenblatt stellt im Timing-Diagramm leider nur den Fall dar, wenn der PCINT(n) von Low auf High toggelt.
Was aber passiert, wenn von High auf Low getoggelt wird, bleibt für mich nebulös. Allerdings habe ich auch Schwierigkeiten bei der Interpretation der im Plan verwendeten, amerikanischen Gatter-Schaltzeichen.
Ich würde sagen: Lebe einfach damit, dass es so ist, wie es ist!
Die Entwickler werden sich bestimmt ganz schlaue Dinge dabei gedacht haben, dass sie es genau so umgesetzt haben.