J'ai utilisé PIC16F877
( fiche technique ) pour plusieurs projets. Pour une seule interruption de changement de broche externe, vous pouvez utiliser PORTB0
interruption. Mais maintenant, je dois prendre en charge 8 interruptions de changement de broches externes indépendantes, dans un seul circuit.
Dans la fiche technique, il est indiqué qu'il y a 15 interruptions PIC16F877
, mais je suppose que celles-ci sont comptées, y compris les interruptions de débordement de la minuterie, etc., qui sont inutiles dans ce cas.
C'est ce que dit la fiche technique sur le INTCON
registre.
Puis - je avoir 4 interruptions indépendantes à l' aide bit0, RBIF
? Cela représente un changement PB7:PB4
. Comment puis-je identifier la broche modifiée, est-ce en lisant la valeur du port dans la routine d'interruption?
Même si j'obtiens des réponses positives à ce qui précède, j'ai besoin de 8 interruptions? bien sûr, je peux toujours utiliser INTE
, pour le PORTB0
changement. Alors 4 + 1 = 5
, mais qu'en est-il des 3 autres? (Cependant, étant donné que les 8 événements d'interruption sont du même type, la 4 + 1 + 3 = 8
chose semble moche, n'est-ce pas?)
Il n'y a aucune autre tâche lourde attendue du micro-contrôleur autre que la surveillance de 8 broches. (En parlant des autres tâches, il devra maintenir un ensemble de variables de compteur séparées et transmettre fréquemment environ 4 octets au PC en série)
Toutes suggestions sont les bienvenues. Même s'il s'agit de changer le micro-contrôleur pour un plus adapté (mais euh .. ne me dites pas de m'éloigner de PIC
s).