Qual è la differenza tra Interrupt on Change e External Interrupt su PIC


11

Qual è la differenza di funzione tra IOC ed EXT Interrupt su un PIC? Attualmente sto usando un PIC12F1822 e, a parte il livello extra di controllo, hai a che fare con il CIO (cioè quale pin ha causato l'interruzione) i due sono identici.

Qual è la differenza pratica, se presente? Quando useresti l'uno o l'altro?

Risposte:


8

Guarda questo documento che afferma: -

Interrupt-on-change
Questa funzione è simile alla funzione di interrupt esterno , tranne per il fatto che un interrupt di modifica della porta verrà attivato da qualsiasi modifica (non solo un tipo di transizione) su uno qualsiasi dei pin per cui è abilitata. Questo lo rende più flessibile (essendo disponibile su più pin), ma anche più difficile da gestire correttamente.


5

Questo è probabilmente fatto per semplificare l'architettura di interruzione del chip avendo meno voci nella tabella di vettore di interruzione. L'interrupt in caso di modifica può essere impostato per attivarsi quando cambia un registro delle porte e può essere utile per qualcosa come una matrice di tastiere in cui non si desidera scrivere una routine di servizio di interruzione (ISR) per ogni singolo pin. Puoi scriverne solo uno in grado di verificare il valore dell'intera porta, che potrebbe essere ciò a cui sei veramente interessato a seconda dell'applicazione.


5

Le tre maggiori differenze tra la modifica dell'interrupt e i pin di interrupt esterni:

  1. I pin di interrupt esterni consentono al software di specificare se l'interrupt deve essere attivato da un fronte di salita o da un fronte di discesa; se, ad esempio, un pin è basso e si è interessati solo ai fronti di caduta, un interrupt non verrà attivato fino a quando il pin non si alza e cade in modo secondario. Usando l'interrupt-on-change, si dovrebbe svegliarsi su entrambi gli eventi.
  2. I pin di interrupt esterni hanno singoli bit di stato di blocco. Anche se un impulso in ingresso va e viene prima che il software abbia la possibilità di rispondere ad esso, il software può ancora scoprire che è successo e reagire adeguatamente.
  3. La lettura di una porta I / O che ha un interrupt di cambio pin abilitato proprio nel momento in cui i cambiamenti di input possono causare l'interruzione di cambio pin che non si innesca. Al contrario, la lettura della porta I / O collegata a un pin di interrupt esterno non ha alcun effetto sull'interrupt.

Gli interrupt esterni del PIC sono più versatili e affidabili degli interruttori di cambio pin generici. Suggerirei di usare il primo quando pratico.


3

Fondamentalmente, l'interrupt esterno verrà attivato su un fronte specifico (in salita o in discesa, definito dall'utente), mentre l'interruzione al cambio verrà attivato su qualsiasi fronte (sia in salita che in discesa).


Almeno per il PIC12F1822 dell'OP menzionato, il CIO può anche essere configurato (definito dall'utente) per l'attivazione sul fronte di salita, sul fronte di discesa o su entrambi (sezione 13). Quindi per me l'unica differenza sembra essere, che l'interrupt esterno può essere configurato solo per innescare su uno dei due rilevamenti di fronte.
PetPaulsen,

2

L'interruzione al cambio è generalmente per mezzo byte di I / O, dove gli interrupt esterni sono generalmente per singoli bit. Come hai già detto, una cosa che devi fare in IOC ISR è capire quale bit (o bit) è cambiato.

Il CIO è anche un po 'più difficile da usare, anche oltre. È indispensabile leggere la porta poco prima di abilitare l'interruzione e ancor più importante LEGGERE LA PORTA all'interno dell'ISR! Se hai un segnale che cambia lentamente e pensi di poter impostare un flag all'interno dell'ISR e di leggere più tardi, al di fuori dell'ISR, ripensaci! La lettura della porta (o qualsiasi bit sulla porta, se ricordo bene), ripristina il latch sul comparatore che attiva l'interrupt. Se non lo si cancella all'interno dell'ISR, si riavvierà immediatamente quando si esce dall'ISR. Se ti ricordi di farlo, va bene, ma se ti dimentichi e pensi di poter leggere la porta quando ti aggiri, ti sentirai un po 'frustrato finché non ti ricordi di fare la lettura nell'ISR.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.