Go Down

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

leo72



EDIT: Leo, che differenze ci sono tra la tua libreria e questa? -->http://arduino.cc/playground/Code/TimedAction


Mi rispondo da solo.
La TimedAction usa la funzione millis per stabilire l'intervallo di tempo e quindi eseguire il task.
La TimedAction viene bloccata in caso di delay.

La libreria di Leo invece usa un timer interno per richiamare la funzione puntata e quindi non è soggetta al resto del codice. Non si blocca quindi neanche durante un delay.

Esatto. Come puoi vedere dall'esempio allegato, i 2 led pilotati dai 2 task continuano il loro lampeggio nonostante nel loop principale ci sia un delay per governare il lampeggio del 3° led.
Questo perché ho creato un contatore di ms interno al timer 2 ed uso quello per controllare il trascorrere del tempo.

Quote

Una domanda: il timer2 potrebbe andare in conflitto con altre periferiche interne al micro, tipo I2C, SPI o Seriale?

Io ho provato la stampa su seriale dopo aver aggiunto i 2 task ed ha funzionato. Però tutto quello che viene gestito da interrupt può influenzare il leOS, così come tutto quello che è gestito da interrupt si influenza attualmente. Pensa che la gestione dell'I2C è fatta via interrupt così come la seriale, eppure nessuno lo nota né si lamenta  ;)

leo72


Leo complimenti, ti stai superando, appena riesco lo provo :)

Ma va, dai  :smiley-sweat: :smiley-sweat:

Madwriter



mi sa che usa il timer interno di arduino  :smiley-mr-green: carino io quando non ho nulla da fare per lo più progetto,tu sei molto piu creativo  XD

Beh, ogni tanto mi passano queste bischerate per la testa  XD
Era qualche giorno che ci pensavo. Ieri pomeriggio a casa ho scritto il core centrale, poi a lavoro ieri sera ho fatto un po' di debug e le ultime cose le ho corrette stamattina.

Complimenti, bel lavoro.
Conosco questi "ingrippi" vengono spesso anche a me e finchè non relizzo la cosa che ho in testa non sto in pace con me stesso  :smiley-mr-green:
"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

leo72

Mi ero dimenticato di dire una cosa, che non suonerà nuova a chi ha già dato un'occhiata al file .cpp.
L'OS dovrebbe girare su tutti i micro attualmente supportabili dall'IDE in maniera più o meno ufficiale, ossia gli Atmega8/88/168/328, i Mega1280/2560 (quindi girare anche sulle Arduino MEGA), i Tiny25/45/85 e 24/44/84, i Tiny2313/4313 ed i Mega644/1284.

Per mancanza di tempo NON ho potuto fare i test su nessun chip diverso dal 328 (ho usato la mia Arduino UNO) per cui se qualcuno ha voglia di provare, mi faccia sapere come va.  ;)
Soprattutto sui Tiny sarebbe interessante sapere l'impatto in termini di prestazioni su micro con clock inferiori ai 16 MHz dell'Arduino.

leo72

PS:
vi svelo una cosa.... leOS non sta solo per "little embedded Operating System". Siccome sono molto egocentrico, è anche un gioco di parole sul mio nome "leo"  :smiley-sweat: :smiley-sweat: leoS però si capiva troppo, quindi ho scelto leOS.
Modesto, vero?  :P

Go Up