Pages: 1 ... 13 14 [15] 16 17 ... 31   Go Down
Author Topic: leOS - un semplice OS per schedulare piccoli task  (Read 30796 times)
0 Members and 1 Guest are viewing this topic.
Cagliari, Italy
Offline Offline
Tesla Member
***
Karma: 104
Posts: 6626
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

potresti farmene una per far comunicare arduini in modalità P2P usando quasiasi mezzo(spi,ip,i2c,ethernet..)? possibilmente con routing dinamico..  smiley-cool
Questa ci si avvicina --> http://arduino.cc/forum/index.php?topic=70030.0
Logged

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

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

dato che fai librerie su commissione,
ROTFL  smiley-yell smiley-yell
Logged


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

@paoloP:si,non è male.. smiley grazie

@leo72:vorrei fare uno skimmer con un arduino mini,lettore & co smiley-twist potresti farmi un progettino?poi ti do la percentuale..
Logged

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

Non sapevo cos'era uno skimmer, ho cercato... ed ho pensato che ciò che vuoi fare è una cosa molto piratesca  smiley-razz
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5611
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

E lo posso dire senza timore di smentite da parte di testato, che sa questa essere la verità  smiley-razz
smiley confermo tutto
diciamo che le mie obiezioni ti risultavano coerenti con il progetto, e cmq non dimentichiamoci che io pago in test, e ti ho trovato un bug grande come una casa che in realta' non hai risolto, ma ci hai messo una pezza, o sbaglio ? (mi riferisco al millennium bug)
« Last Edit: August 30, 2012, 03:19:33 pm by Testato » Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

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

Alla fine proprio bug non era, veniva fuori un'aggiunta di 1 giorno sul timestamp quando si passava l'anno 2000 per via degli anni quadricentenari, se non ricordo male. Ora però mi cogli alla sprovvista, dovrei andare a rivedere le ultime pagine di quel thread perché non ricordo con esattezza cosa succedeva.
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5611
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

non ne vale la pena, e' troppo grande quel thread  smiley
alla fine l'importante e' che con la data attuale funziona, non e' che una persona si fa un orologio e lo setta per il 1980  smiley

dimenticavo, complimenti per l'apparizione sul Blog, ma chi e' la persona che lo ha postato ? puo' postare solo il team credo giusto ?
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

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

non ne vale la pena, e' troppo grande quel thread  smiley
alla fine l'importante e' che con la data attuale funziona, non e' che una persona si fa un orologio e lo setta per il 1980  smiley
Con la correzione che ho introdotto, la persona lo può fare, volendo. Il problema è aggirato.

Quote
dimenticavo, complimenti per l'apparizione sul Blog, ma chi e' la persona che lo ha postato ? puo' postare solo il team credo giusto ?
Grazie. Anch'io non so chi sia stato, però vedo che è italiano, per lo meno dal nome: Alessandro Paganelli.
Penso però che sia un qualcuno che cura il blog per conto del team, non penso che con tutto quello che hanno da fare i membri del team si mettano a spulciare in giro sulla rete o per il forum alla ricerca di news interessanti.
Logged


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

leo leo,come hai fatto tu a sopravvivere tutti questi anni senza skimmer?! smiley-yell
..buona giornata..
Logged

Salerno(ITA)
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti, ho scaricato e testato la libreria e va alla grande... unico problema è che quando utilizzo anche un'altra libreria chiamata swRTC all'interno dello stesso sketch mi da un errore... l'errore riportato è:
leOS\leOS.cpp.o: In function `__vector_9':

C:\Users\Utente\Desktop\Metering Data Logger\arduino-1.0.1\libraries\leOS/leOS.cpp:185: multiple definition of `__vector_9'
swRTC\swRTC.cpp.o:C:\Users\Utente\Desktop\Metering Data Logger\arduino-1.0.1\libraries\swRTC/swRTC.cpp:144: first defined here

è come se le due librerie risultassero incompatibili... vi prego datemi una mano che mi serve urgentemente!!! grazie e complimenti per i consigli che mi sono risultati molto utili! smiley-wink
Logged

Marco Pacifico

Offline Offline
Edison Member
*
Karma: 24
Posts: 2032
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Salve a tutti, ho scaricato e testato la libreria e va alla grande... unico problema è che quando utilizzo anche un'altra libreria chiamata swRTC all'interno dello stesso sketch mi da un errore... l'errore riportato è:
leOS\leOS.cpp.o: In function `__vector_9':

C:\Users\Utente\Desktop\Metering Data Logger\arduino-1.0.1\libraries\leOS/leOS.cpp:185: multiple definition of `__vector_9'
swRTC\swRTC.cpp.o:C:\Users\Utente\Desktop\Metering Data Logger\arduino-1.0.1\libraries\swRTC/swRTC.cpp:144: first defined here

è come se le due librerie risultassero incompatibili... vi prego datemi una mano che mi serve urgentemente!!! grazie e complimenti per i consigli che mi sono risultati molto utili! smiley-wink
infatti lo sono utilizzano lo stesso timer,nei post precendenti lo trovi,puoi usare il looper che non va in conflitto con niente se non sbaglio.
Logged

"Due cose sono infinite: l'universo e la stupidità umana, ma riguardo l'universo ho ancora dei dubbi..." Albert Einstein

Salerno(ITA)
Offline Offline
Newbie
*
Karma: 0
Posts: 2
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Oh OpSS ora mi son accorto che entrambe le librerie sono state fatte da leo72!!!;)
complimenti sono entrambe utilissime.. solo che dovrei utilizzarle insieme...smiley-sad
looper da quel che ho capito non è indipendente, ovvero, il timer dipende anche dalle istruzioni contenute nel'loop principale...
a me serve il leOS in quanto non bada alle istruzioni presenti nel'loop e quindi mi da una precisione che risulta essenziale per il mio progetto...
Logged

Marco Pacifico

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

Ciao, se ci spieghi che cosa devi fare forse posso darti una mano ad utilizzare al meglio uno dei due strumenti.
Logged


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

Stasera mi sono divertito a giocare con il leOS.
Qui di seguito un esempio di applicazione del leOS. Un RTC software gestito direttamente dallo schedulatore.
Non ha la precisione di un RTC hardware né la possibilità di correggere la deriva rispetto al tempo reale dell'altra mia libreria swRTC però è divertente vedere come con poche righe di codice si possa usare il leOS per gestire in background un orologio software, utile ad esempio per pianificare compiti a determinati intervalli della giornata.

Code:
/*
    Creazione di un semplice RTC software mediante l'uso del leOS.
    Viene creato un task che aggiorna ogni secondo una serie di
    variabili temporali per poter gestire ore, minuti, secondi,
    giorno, mese ed anno.
   
    L'orario e la data attuali sono stampati ad intervallo di 1
    secondo direttamente sulla seriale, contemporaneamente al
    lampeggio del led integrato sull'Arduino
   
    Versione: 1.0 - 2012/09/13
   
    Licenza: GNU GPL 3.0 o successive
*/

#include <leOS.h>

leOS myOS;

volatile byte _hours = 0;
volatile byte _minutes = 0;
volatile byte _seconds = 0;
volatile byte _day = 0;
volatile byte _month = 0;
volatile int _year = 0;
volatile byte daysPerMonth[12] = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31};
byte led1Status = 0;
const byte LED1 = 13;
byte temp = 0;

void setup() {
    myOS.begin();
    Serial.begin(9600);
    pinMode(LED1, OUTPUT);
    myOS.addTask(updateRTC, 1000);
    temp = _seconds;
}

void loop() {
    if(temp != _seconds) {
        led1Status ^= 1;
        digitalWrite(LED1, led1Status);
        temp = _seconds;
        Serial.print("Ore ");
        Serial.print(_hours, DEC);
        Serial.print(":");
        Serial.print(_minutes, DEC);
        Serial.print(":");
        Serial.print(_seconds, DEC);
        Serial.print(" - Data: ");
        Serial.print(_day, DEC);
        Serial.print("/");
        Serial.print(_month, DEC);
        Serial.print("/");
        Serial.println(_year, DEC);   
    }
}

//aggiorna l'orologio software
void updateRTC() {
    byte _dayT;
    _seconds++;

    if (_seconds>59) {
        _seconds=0;
        _minutes++;
        if (_minutes>59) {
            _minutes=0;
            _hours++;
            if (_hours>23) {
                _hours=0;
                _day++;
                if (_month == 2) { //february?
                    if (leapYear(_year)) {
                        _dayT=29;
                    } else {
                        _dayT=28;
                    }
                } else {
                    _dayT=daysPerMonth[_month-1];
                }
                if (_day>_dayT) {
                    _day=1;
                    _month++;
                    if (_month>12) {
                        _month=1;
                        _year++;
                    }
                }
            }
        }
    }
}


//controlla se l'anno corrente è bisestile
boolean leapYear(int yearT) {
    if (((yearT % 4) == 0) && ((yearT % 100) != 0) || ((yearT % 400) == 0)) {
        return true;
    } else {
        return false;
    }
}
Ovviamente la precisione è quel che è, dipendendo dal risonatore ceramico dell'Arduino UNO, però può essere d'aiuto per tanti piccoli compiti. Se ricercate precisioni più elevate, studiatevi il mio progetto Micrologio.
Logged


0
Offline Offline
Faraday Member
**
Karma: 39
Posts: 5611
Arduino rocks
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Il weekday ?  smiley-yell

Bel lavoro  smiley
Logged

- [GUIDA] IDE1.x - Nuove Funzioni - Sketch Standalone - Bootloader - VirtualBoard
http://arduino.cc/forum/index.php/topic,88546.0.html
- [LIBRERIA] ST7032i LCD I2C Controller Library
http://arduino.cc/forum/index.php/topic,96163.0.html

Pages: 1 ... 13 14 [15] 16 17 ... 31   Go Up
Jump to: