Interrupts

Ci sono quattro tipi d’interrupts

  • TMR-X: interviene dall’interno del timer del microprocessore.
  • INT : interviene da un evento esterno, associato alla variazione di stato di un ingresso (pin).
  • IOC (interrupt On change): interviene a ogni variazione agli ingressi (pin) predefiniti.
  • Custom: definisce una procedura d’interrupt.

Altri interrups sono associati alla funzione, “Receive “, dei chip con un UART.

interrupts1

Creare un interrupts

interrupts2
  • Enable / disable: abilita o disabilita lo interrupt.
  • Interrupt on: seleziona il tipo d’interrupt dalla lista disponibile per il microprocessore utilizzato.
  • Properties: assegna la proprietà dell’evento.
  • Will call Macro: chiama la Macro creata con create new Macro.
interrupts3
interrupts4

con doppio click sulla forma arancione, si apre la finestra Proprietà.

utilizzo del interrupts timer 0

Come lascia intendere il nome, gli Interrupts, interrompono momentaneamente il programma richiamando l’esecuzione di un’altra funzione specificata in precedenza dal programmatore.

Gli “Interrupts” sono chiamati da un evento esterno, o da un fatto preimpostato nel tempo.

Il numero degli Interrupts disponibili dipende dal microchip utilizzato nel progetto; Il “Data Sheet”, del componente , riporta quali e quanti interrupts dispone.

Dal pannello Proprietà: Interrupts, si può decidere se abilitare (Enable) o meno (Disable) la funzione.

Se si abilita l’interrupts, dalla lista a discesa, si può selezionare il tipo di Interrupts tra quelli disponibili per il componente utilizzato nel progetto.

Nel caso si selezionasse “Timer 0”, nel menu “ Properties” si può impostare il prescaler, che divide la frequenza dell’oscillatore (clock).

Quando il contatore del Timer, interno al chip, supera il numero d’impulsi che può contenere nei suoi registri interni (overflow), il contatore ritorna a zero, questo fatto genera l’impulso che chiama una Macro.

TMR Timer overflow Interrupt

Questo tipo d’interrupt è chiamato ripetutamente, e può essere utilizzato per gestire gli eventi al passare del tempo, ad esempio nella gestione dell’aggiornamento del display.

 Dipende dall’impostazione del prescaler e  dall’impostazione della frequenza dell’oscillatore del microchip ; pertanto, la funzione TMR, è “device e timer” dipendente.

interrupts6
interrupts7

Ricorrere al contatore interno del chip, è utile se gli eventi degli interventi dello interrupt, non sono governati dall’accuratezza del clock, nel caso fossero, fortemente, dipendenti dalla precisione del contatore, è opportuno aggiungere un orologio esterno, in particolar modo quando si deve gestire un segnale PWM che utilizza il timer interno.

 La gestione di PWM o Servocomandi,  consumano cicli di clock .

interrupts5

Proprietà TRM-0

Clock source select:

Seleziona se il segnale utilizzato per il Timer overflow, proviene dall’oscillatore interno o da una sorgente esterna.

  • Internal clock (CLK0)
  • Transition on TOCKI

Source edge select:

 Seleziona se intervenire sul fronte di salita o discesa dello stato logico.

  • Transizione High-to-low su T0CKI
  • Transizione low-to-high su T0CKI

Prescaler rate

Il prescaler, divide la frequenza di clock in modo da generare un impulso di overflow più lento.

Il valore da attribuire al prescaler dipende dall’oscillatore usato per il microchip.

INT

Quando uno stimolo esterno, come la pressione di un pulsante collegato al pin, è usato per generare un Interrupts, che può intervenire al passaggio del livello logico zero a livello logico uno o viceversa.

  • Falling edge of INT     (da alto a basso)
  • Rising edge of INT      (da basso ad alto)

Questo sistema è utile, quando si vuole fermare un programma per un’emergenza, oppure per gestire Start, Stop, Reset di un contatore.

Questa funzione chiama un Interrupt al variare di qualsiasi dei pins I/O di una porta, che possono essere abilitati o no per gestire gli Interrupts.

custom

Questa funzione permette la creazione di un codice personale d’interrupt, quando il chip selezionato per il progetto non ha la funzione richiesta.

Port change

Interrupts esterni  per microchip ATMEGA328

ATMEGA328

TMR0

frequenza del microchip

Prescaler rate

Clock source select:

Source edge select:

interrupts pins int ext

IOC PORT B

IOC PORT C

IOC PORT D

interrupts pin ext

Riccardo Monti