Pages: 1 ... 23 24 [25] 26 27 ... 31   Go Down
Author Topic: leOS - un semplice OS per schedulare piccoli task  (Read 37839 times)
0 Members and 1 Guest are viewing this topic.
0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5914
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

la funzione scorrimento e' integrata gia' nella libreria se non si vogliono fare cose complicate
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

0
Offline Offline
Full Member
***
Karma: 0
Posts: 111
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

ho provato a fare un buffer con un array char bidimensionale, ma non riesco a stamparlo sul display con print() o write()
se invece faccio due buffer uno per riga li riesco a stampare
Logged

Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

(Secondo me stiamo andando un po' troppo OT. Propongo di aprire un altro topic che tratti specificamente del tema buffer <=> lcd.)

Detto ciò, cmq rispondo: posta il codice che hai scritto.
Io ho uno sketch di prova che implementa un "virtual screen" più grande dell'LCD fisico. Include anche una funzione che copia un buffer bidimensionale sull'lcd.
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Arriva leOS2 2.1.0.
Questa è la prima versione stabile del leOS2. Ho corretto un bug per cui non veniva rispettato il valore di timeout passato in fase di inizializzazione prima di resettare il microcontrollore: nella precedente 2.0.91 il reset avveniva immediatamente, indipendentemente dal valore passato, mentre adesso viene rispettato perfettamente.

Lo sketch di test mostra il comportamento di questa funzione a mio avviso molto interessante: creo 2 task, 1 che fa lampeggiare un led con una frequenza di 500 ms, un altro task invece viene lanciato dopo 5 secondi e freeza la CPU del micro con un ciclo infinito. Nel loop() metto un lampeggio di un altro led con frequenza di 100 ms.
Si può notare come dopo 5 secondi di attività, il micro si congeli. Trascorso il tempo di timeout impostato, l'Atmega viene resettato.

Tutto questo usando sempre il solo WatchDog, quindi niente timer od altro messi nel mezzo. Ricordo che la cosa è possibile creando una ISR di gestione dell'interrupt del contatore del watchdog non atomica, quindi interrompibile da altri eventi. In questo modo posso invocare un task e contemporaneamente richiamare la ISR al successivo overflow del contatore del watchdog e decrementare il valore di timeout. Se il task completa l'esecuzione entro il tempo di timeout, l'esecuzione del codice prosegue regolarmente, altrimenti l'ISR continua a decrementare il timeout. Se questo giunge a 0, viene impostato un flag per cui al successivo overflow del watchdog non venga più sollevato un interrupt ma venga resettato direttamente il microcontrollore.

Per il download ed ulteriori approfondimenti:
www.leonardomiliani.com/?p=516
Logged


Offline Offline
Edison Member
*
Karma: 26
Posts: 1339
You do some programming to solve a problem, and some to solve it in a particular language. (CC2)
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Veramente notevole

O_o
Logged

Offline Offline
God Member
*****
Karma: 9
Posts: 550
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

son stato assente per molto tempo,cmq bravo,ottimo lavoro!!  smiley-grin
quando porterai i tuoi progetti su github?!  smiley-razz
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Veramente notevole

O_o
Grazie.  smiley-wink
Logged


Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

son stato assente per molto tempo,cmq bravo,ottimo lavoro!!  smiley-grin
quando porterai i tuoi progetti su github?!  smiley-razz
Ci sarebbero di già ma per ora pubblicizzo solo il download dal mio sito, altrimenti non riesco a seguire tutto.
https://github.com/leomil72
PS: su github non c'è ancora la versione 2.1.0, la metterò online domani (ora non sono a casa).
Logged


Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 112
Posts: 7126
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti segnalo questa nuova libreria --> https://github.com/chrismoos/avr-os
Logged

Code fast. Code easy. Codebender --> http://codebender.cc/?referrer=PaoloP

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

io invece ti segnalo il fatto che gli IDE più recenti hanno un "autoimportatore" di librerie, tu gli dai il path o l'url di un file zip e lui ti copia e scompatta il tutto nella cartella Libraries. Non l'ho provato, l'ho letto di sfuggita su un issue di github.
In pratica ricordi che girò un link che puntava a raccogliere tutte le librerie? probabilmente hanno intenzione di automatizzare il tutto smiley
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Ti segnalo questa nuova libreria --> https://github.com/chrismoos/avr-os
Non è uno scheduler completamente automatizzato, mi pare. Va chiamato continuamente dal loop, ed il controllo è fatto su millis. Inoltre non ho capito bene cosa intenda per
Quote
each task has its own stack that is restored when a task is resumed
A me pare che salvi solo il puntatore allo stack, non salva lo stato del microcontrollore. Potrei sbagliarmi.
Non so però la logica esatta di come funziona, non ho studiato il codice.
Logged


Offline Offline
God Member
*****
Karma: 9
Posts: 550
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

mah,dal context.h direi che salva tutto da r0 a r31..i vari stati penso siano in sti registri..
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 332
Posts: 22817
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

mah,dal context.h direi che salva tutto da r0 a r31..i vari stati penso siano in sti registri..
Non l'avevo visto.
Comunque mi sembra che sia un repetita dato che usando la libreria interrupt.h di Avr quest'operazione dovrebbe essere eseguita dalla libreria stessa. Però non vorrei dire castronerie.
Logged


0
Offline Offline
Faraday Member
**
Karma: 47
Posts: 5914
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

io invece ti segnalo il fatto che gli IDE più recenti hanno un "autoimportatore" di librerie, tu gli dai il path o l'url di un file zip e lui ti copia e scompatta il tutto nella cartella Libraries. Non l'ho provato, l'ho letto di sfuggita su un issue di github.
In pratica ricordi che girò un link che puntava a raccogliere tutte le librerie? probabilmente hanno intenzione di automatizzare il tutto smiley
Io sono passato a 1.5x definitivamente
le librerie vengono importate direttamente dallo .zip ma non vanno in libraries dell'IDE ma in una cartella dentro alla cartella Sketch. E' una scelta intelligente perche' quando si cancella l'ide vecchio non si perde nulla, ne' gli sketch ne le librerie
Logged

- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

0
Offline Offline
Shannon Member
****
Karma: 131
Posts: 10474
:(){:|:&};:
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

a si? prova a fare una libreria con le sottocartelle con dentro del codice, che non sia utility... dovrebbe funzionare in libraries, ma non se importata in questo modo...
Logged

sei nuovo? non sai da dove partire? leggi qui: http://playground.arduino.cc/Italiano/Newbie

Pages: 1 ... 23 24 [25] 26 27 ... 31   Go Up
Jump to: