looper - un semplice schedulatore senza timer/interrupt

Sì. Non so se hai visto gli esempi allegati ma c'è proprio un blinkWithoutMillis (come c'era nel leOS).

Il classico BlinkWithoutDelay compila in 1028 byte, BlinkWithoutMillis in 1558 byte, quindi neanche un grosso carico di risorse in più per avere in cambio molta libertà in più.

leo72: Seguendo la scia di leOS, e su richiesta di m_ri ( :P ) ecco looper.

very perfect :) mi sa che prima o poi dovrò offrirti una birra x tutte le volte che ti rompo le scatole..

gli ho dato un'occhiata veloce,ma mi sembra tutto ok.. unico suggerimento:penso proprio che puoi evitare di usare "volatile",e così consenti ottimizzazioni al compilatore.. (e io stass non ho fatto niente in quanto ha smesso di piovere,e son uscito..)

m_ri: unico suggerimento:penso proprio che puoi evitare di usare "volatile",e così consenti ottimizzazioni al compilatore..

Azz... vero :stuck_out_tongue_closed_eyes: Come detto, looper l'ho sviluppato partendo proprio dal leOS per cui ho preso il suo codice ed ho tolto la roba inutile. Mi pareva di aver fatto pulizia profonda ma invece qualcosa l'ho lasciata. Ottimo appunto ;)

Ecco, ho modificato lo zip allegato al 1° post. Si guadagnano una trentina di byte sulla compilazione di looper_BlinkWithoutMillis.

leo72: Ecco, ho modificato lo zip allegato al 1° post. Si guadagnano una trentina di byte sulla compilazione di looper_BlinkWithoutMillis.

ora lo provo un èò complimenti :D come mai non lo hai chiamato LEOoper invece di looper ]:D

benissimo.. altra cosa,ma probab te ne sei già acorto: dopo 49 giorni inizia a eseguire il task a ogni ciclo del loop per un po' di tempo(in quanto plannedTask riperte da 0,e millis è moolto maggiore)

Madwriter:

leo72: Ecco, ho modificato lo zip allegato al 1° post. Si guadagnano una trentina di byte sulla compilazione di looper_BlinkWithoutMillis.

ora lo provo un èò complimenti :D come mai non lo hai chiamato LEOoper invece di looper ]:D

ssshhh,che non ci aveva neanke pensato a sto nome.... XD

Madwriter:

leo72:
Ecco, ho modificato lo zip allegato al 1° post. Si guadagnano una trentina di byte sulla compilazione di looper_BlinkWithoutMillis.

ora lo provo un èò complimenti :smiley: come mai non lo hai chiamato LEOoper invece di looper ]:smiley:

ROTFL XD

m_ri:
benissimo…
altra cosa,ma probab te ne sei già acorto: dopo 49 giorni inizia a eseguire il task a ogni ciclo del loop per un po’ di tempo(in quanto plannedTask riperte da 0,e millis è moolto maggiore)

Sì, lo so. L’alternativa più semplice è usare un contatore a 64 bit come ho fatto con leOS ma in questo caso si appesantisce moltissimo il codice finale (sono diverse centinaia di byte in più di Flash occupata). Oppure rivedere la logica dello scheduler per aggirare l’overflow.

In allegato trovate looper2, è una versione modificata di looper che dovrebbe sistemare il bug dell’overflow di milis mediante l’uso di un contatore di overflow a 8 bit, creando in pratica una variabile a 40 bit, che dovrebbe quindi soffrire del problema dell’overflow dopo 34 anni. Ho modificato anche lo scheduler affinché usi questa nuova gestione a 40 bit.

Siccome non ho potuto provare per 49,7 giorni BlinkWithoutMillis, rilascio il codice così com’è :sweat_smile: :sweat_smile:

looper2.zip (3.1 KB)

ahhaha grande leo, sempre sulla cresta dell'onda (lo so, ultimamente son lento ma troppo lavoro e niente ferie rendono lesto pazzo)

lesto: ahhaha grande leo, sempre sulla cresta dell'onda (lo so, ultimamente son lento ma troppo lavoro e niente ferie rendono lesto pazzo)

Bisogna sempre inventare qualcosa di utile ;)

x iscrizione

io mi sono inventato un lavoro come bagnino

In che provincia stai lavorando?

m_ri:

io mi sono inventato un lavoro come bagnino

In che provincia stai lavorando?

cosi se sei nella stessa provincia eviti di buttarti a mare? ]:D

Madwriter:

m_ri:

io mi sono inventato un lavoro come bagnino

In che provincia stai lavorando?

cosi se sei nella stessa provincia eviti di buttarti a mare? ]:D

perspicace il ragazzo!! :P oltre a quello, anke x sapere dove si può trovare un bagnino a cui fregare alcol e raspberry..

legacy, ti comunico che sei rientrato nella mia lista dei cattivi :stuck_out_tongue_closed_eyes:

Ciao Leo, tramite looper è possibile lanciare una istanza OneTime per effettuare l'accensione e lo spegnimento di un pin con un intervallo settabile?

Mi spiego: avviene un evento metto il pin HIGH passa un tot di tempo metto il pin LOW

questo solo una volta e per ogni evento. Lo so che posso usare la millis con variabili di supporto, ma mi si incasina lo sketch. oppure è meglio la Leos?

Un task di tipo onetime viene eliminato dallo scheduler una volta eseguito. Quindi pare fatto apposta per il tuo caso.

Se la tempistica non è critica, puoi usare anche il looper invece che il leOS.

Ok. Provo. :roll_eyes: