PCINT et INT

Bonjour, je voudrais savoir quel était la différence entre PCINT0 et INT0.

On peut faire devenir une pin interruptible en agissant sur les registre PCICR et PCMSK0,1,2

Et sur le registre EIMSK pour INT0, alors même que cette pin est aussi PCINT18 (pour la Nano par exemple)

Qu'en est-il vraiment, y a t-il une explication ?

Cordialment.

Je vais parler pour le 328p, les autres avr peuvent avoir des différences.

Il existe deux types d’interruption :

  • type 1 : celles sur des broches bien précises et en nombre limité (INTx)
  • type 2 : celles sur des ports complets (PCINTx)
    Il faut savoir que les sorties des microcontroleurs sont gérées par des registres et on appelle "port" le groupe de sorties contrôlées par le même groupe de registres, au final par le même groupe d'électronique à l'intérieur du microcontoleur.

Quand une interruption de type INTx est utilisée le programme sait immédiatement quelle I/O a généré l'interruption.
Quand une interruption de type PCINTx est générée le programme ne connait que le port qui a généré l'interruption, c'est au programmeur a tester pour savoir quelle I/O du port a changé d'état.

Les broches D2 et D3 (int0 et int1) peuvent aussi être gérées à partir des PCINTx.
Voir si tu veux le tuto Interruptions ATMega 328p - Tutoriels et cours - Arduino Forum

1 Like

D'accord, c'est plus claire.

Donc en priorité INT0 et INT1 qui sont plus configurables (rising, falling, change) et les autres PCINTx quand on a besoin de plusieurs sources d'interruptions, en gros.

Oui INT0 et INT1 sont plus "simples" d'emploi et quand on a besoin de plus d'interruptions il reste les PCINTx.

L'ordre de priorité des interruptions est défini dans la datasheet du micro et , je cite de mémoire donc à vérifier, INT0 et 1 sont "plus" prioritaires que les PCINTx