Interrup lumi

buona sera signori, quello che sto per chiedervi, probabilmente vi raggelerà, ma devo schiarirmi le idee.

Perliamo di Interrup, vorrei chiedervi come si usa, se avete due righette di codice per capire il funzionamento, nozioni teriche e uso (in quali casi si usa e perche), insomma tuto cio che potete dirmi su di esso.

Ringrazio per la pazienza in anticipo Andrea

Partiamo da un concetto. Non esistono interrupt software negli Atmel, ossia porzioni di codice che fai eseguire tu ad intervalli regolari.

Gli interrupt sono hardware (ossia scatenati da qualche evento relativo al micro) e possono essere di 2 tipi, interni od esterni. Quelli esterni sono i PCINT, ossia gli interrupt che si attivano sui cambi di stato dei pin. Gli interrupt interni possono essere agganciati ad un timer. Altre info si trovano sul datasheet, molto completo.

Altre ancora, con esempi di codice, sono distribuite in tante discussioni: se cerchi interrupt, ne troverai un sacco.

..e avevo cercato!! evidentemente mi sto rintronando sempre di più =( :astonished:

Forse ho trovato qualcosia, proverò...grazie mille x l'aiuto (come sempre)

Gli interrupt si usano quando é critico di perdere un evento oppure quando quando é piú semplice che un intervento attivi una parte di programma che controllare di contnuo un pin.

Ci sono 4 funzioni che fanno usare gli interrupt esterni a livello di programmazione C. attachInterrupt() // per attivare un interrupt e definire la funzione interrupt chiamata in caso di evento interrupt esterno detachInterrupt() // disattiva un interrupt precedentemente attivato.

interrupts() // per attivare gli interrupt noInterrupts() // per disattivare gli interrupt

esempi: http://arduino.cc/en/Reference/AttachInterrupt

Le altre possibilitá (interrupt interni pilotati da counter o timer) e maggior possibilitá sui interrupt esterni devi programmarli a livello registri del ATmega.

La funzione Interrupt chiamata da un interrupt deve essere breve e non puó contenere ritardi.

Ciao Uwe

grazie per le delucidazioni, chiedevo perche stavo "giocando" a costruire un controllo valvole, e volevo usare l'interrup appunto in caso di allarme esterno 8evento brutto segnalato da altro strumento), per ora usavo un if...ma la curiosita è grande e volevo appunto provare l'opzione con interrup. Grazie x le dritte/delucidazioni

Se vuoi imparare ad usarlo ok, ma al caso tuo non serve. L’interrupt serve nel caso in cui, nel momento in cui avviene un evento, questo debba essere trattato immediatamente (quindi sospendendo il normale flusso del programma), quindi quanto il tempo è un fattore critico.