Interrupt nei PIC

Introduzione sugli interrupt.

In informatica, un interrupt o interruzione è un segnale asincrono che indica il “bisogno di attenzione” da parte di una periferica finalizzata ad una particolare richiesta di servizio, un evento sincrono che consente l’interruzione di un processo qualora si verifichino determinate condizioni oppure più in generale una particolare richiesta al sistema operativo da parte di un processo in esecuzione. (Wikipedia)

L’interrupt può definirsi anche la ‘pecora nera’ degli studenti, i quali non riescono spesso a comprenderne il corretto funzionamento. Nei prossimi punti andremo a cercare di riempire quelli che sono i vostri dubbi in merito.

Differenza tra polling e interrupt.
  • Polling, metodo per il quale la CPU del microcontrollore si occupa monitorare e verificare tutti gli ingressi e le uscite, agendo poi di conseguenza. Questo porta ad un’eccessivo sfruttamento del microcontrollore ma al susseguirsi di azioni ben precise, dettate dal codice stesso.

Esempio pratico: in una classe di 20 studenti, l’insegnate decide di interrogare proprio te ed inizia a porti delle domande, fino a quando tu non avrai risposto a queste lei continuerà ad aspettare e ad ignorare le richieste degli altri studenti.

  • Interrupt, è una routine generata da un cambiamento interno o esterno al sistema, che viene eseguita in maniera immediata. Al termine dell’interrupt il ciclo viene eseguito dal punto in cui si era fermato. Tramite l’uso dell’interrupt il microcontrollore diventa un dispositivo multitasking perchè la velocità con cui l’interrupt viene eseguito, se non contiene molte istruzioni, è tale da far sì che il ciclo e l’ISR (Interrupt Service Routine) sembrino svolti contemporaneamente.

Un breve schema per comprendere meglio il funzionamento:

Interrupt (interno o esterno) → Il microcontrollore memorizza il punto del ciclo in cui si è fermato → Esegue la routine di interrupt → Torna di nuovo ad eseguire il ciclo (dal punto memorizzato in precedenza)

Esempio pratico: in una classe di 20 studenti, l’insegnate decide di interrogare proprio te ed inizia a porti delle domande, nonostante tu non risponda a queste la chiamata di un altro alunno sposterà la sua attenzione su di esso, per poi ritornare a interrogare te.

Interrupt.
FamigleInterrupt
PIC10 - PIC12 - PIC16Nessun interrupt/ Interrupt a 1 livello
PIC18Interrupt a 2 livelli (ALTA e BASSA priorità)
PIC24 - dsPICOgni periferica genera il suo interrupt
PIC32Ogni periferica genera il suo interrupt (ci sono molte più possibilità di configurazione rispetto ai PIC24)
Interrupt nei PIC10 – PIC12 – PIC16.

Nella maggior parte di questi dispositivi, della nuova serie, esiste un unico livello di interrupt.

La figura seguente ci mostra cosa avviene quando accade un interrupt:

Il ciclo viene svolto fino a quando non si verifica un’interrupt, viene eseguita la routine di interrupt per poi riprendere nuovamente a svolgere il ciclo.

Interrupt nei PIC18.

Nei PIC18 esistono due livelli di interrupt, quello ad alta priorità (high_isr) e quello a bassa priorità (low_isr). Questi due livelli fanno si che il microcontrollore possa svolgere tre azioni ‘contemporanee’.

Per riuscire a capire meglio come funzionano possiamo rivolgere l’attenzione alla figura seguente:

Il ciclo viene svolto fino a quando non si verifica un interrupt, se l’interrupt generato è a BASSA PRIORITÀ e durante la sua esecuzione viene ricevuto un interrupt ad ALTA PRIORITÀ il processo risulterà equivalente alla figura.

Per gli interrupt relativi ai PIC24-dsPIC e ai PIC32 vi rimando ai rispettivi datasheet per riuscire a comprenderne meglio il funzionamento.

Tipi di interrupt (i principali).
  • TIMER0, TIMER1, TIMER2, ecc.
  • Conversione ADC
  • Cambiamento di stato del pin RB0, RB1, RB2
  • Cambiamento degli stati di uno dei pin RB4-RB7
  • EUSART
  • I2C
  • SPI
  • Comparatori utilizzati nelle varie modalità (CAPTURE, COMPARE, PWM)
Registri per l’utilizzo degli interrupt.

I registri per gli interrupt cambiano di famiglia in famiglia, per questo verranno analizzati all’interno dei relativi progetti, con ampie descrizioni all’utilizzo di essi.

 

Lascia un commento