Go Down

Topic: leOS - un semplice OS per schedulare piccoli task (Read 42 times) previous topic - next topic

tuxduino

Quote
Interrupt Service Routine, non Internet.


Forse in Arduino 3 o 4 ci sarà proprio una Internet service routine, nel senso che Internet sarà così pervasiva che le funzionalità di comunicazione di base relative ad Internet saranno gestite direttamente in hardware, un po' come i Timer adesso...  :smiley-eek:

leo72



Quest'ultimo caso è quello che ci interessa: creando una ISR (Internet Service Routine) che intercetta il reset, possiamo gestire lo scheduler dei processi da eseguire in automatico senza utilizzare timer del microcontrollore, evitando quindi che il nostro sketch vada in conflitto con altre librerie che anch'esse usano lo stesso timer.


Interrupt Service Routine, non Internet.  :smiley-mr-green:

Uh oh....  :smiley-sweat: :smiley-sweat:

m_ri

leo,lo so che sto andando un po' OT,ma vedo che ti sei studiato la cosa...la mia domanda è: se l'esecuzione è piantata nel codice richiamato da un interrupt,c'è modo invocare cmq l'interrupt associato al watchdog?o l'unica cosa che posso fare è reset?

PaoloP

Non ho capito la domanda.
Comunque Leo ha scritto che, a parte l'ATmega8 (quelli che usa Testato per intenderci), in tutti gli altri micro è possibile associare al "Cane da Guardia" il reset del micro, un interrupt (quindi una TUA funzione) oppure tutti e due. (questa ultima possibilità mi lascia perplesso  :smiley-roll-sweat:)
Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

leo72

@m_ri:
vediamo se ho capito.
Abbiamo leOS2 in esecuzione. Esso lancia un task, all'interno del quale un utente inavvertitamente ha messo un delay(10) e la CPU resta bloccata in eterno nella ISR perché il delay in un interrupt è bloccante (non sto a spiegare i motivi, li sappiamo).
Il WDT continuerà a girare perché il contatore è HW quindi non è bloccato dal SW però la sua segnalazione dell'interrupt cadrà nel vuoto, dato che il micro sta già eseguendo l'interrupt associato all'overflow del contatore del WDT.

@Paolo:
il datasheet riporta le modalità selezionabili per l'overflow del WDT:
Quote

Mode - Action
Stopped - None
Interrupt Mode - Interrupt
System Reset Mode - Reset
Interrupt and System Reset Mode - Interrupt, then go to System Reset Mode
System Reset Mode - Reset**

**questa è l'unica possibile quando è attivo il fuse WDTON. Se il fuse è disattivato, si possono impostare via software tutte le altre.

Go Up