[Risolto]Multitasking con Arduino?

hermit274:
Ciao ragazzi. scusate se rispondo in ritardo. a quanto pare avevate ragione! la programmazione utilizzando i delay è proprio penosa! purtroppo, da principiante, nn pensavo che mettendo un delay qui e un altro li rallentare così tanto l'esecuzione del loop!
cmqe ieri sera ho sbattuto un pò e sono riuscito a eliminare tutti i delay utilizzando le librerie Metro.h

Errore comune, forse una introduzione ad arduino ed in genere alla programmazione su microcontroller ti avrebbe posto subito in evidenza la limitazione del delay, ma questo potrebbe scoraggiare molti appassionati che non avrebbero mosso neanche i primi passi usando il delay.

In altre parole, sbatterci il muso è meglio, chiedere lumi è meglio che fare da soli.

Ora che sai come fare per evitare il delay ti posso dare altri consigli.
In generale:
Conviene sempre spezzare il programma in tante funzioni che svolgono compiti che si esauriscono in breve tempo: es ti ritrovi a dovere ordinare
un'array di nomi, il che richiede 1 minuto, in questo tempo le altre parti del programma sono isolate e non vengono eseguite. Con gli interrupt attaccati sul timer si risolve. Ad esempio la leOS usa l'interrupt sul timer2 che interrompe periodicamente l'esecuzione di ordinamento di prima, controlla cosa c'è da fare, la fa ed esce ed il controllo ritorna alla routine di ordinamento. Il risultato è che l'ordinamento magari ci impiega più tempo ma almeno le altre parti del programma vengono eseguite periodicamente.

Conviene impiegare un po del proprio tempo a raggionare su questa cosa degli interrupt fino a mettere in evidenza i comportamenti negativi oltre che quelli positivi. Uno dei comportamenti negativi si ha quando uno o più pin devono cambiare di stato con tempistiche ristrette, in questo caso il codice che governa questi pin non deve essere interrotto pena il mancato rispetto delle tempistiche.

leo72:
Una cosa non la capisco. Sembra che ci sia solo SRAM per accogliere il programma ed i dati, ed 8 KB di ROM per il bootloader. Ma se stacco l'alimentazione il firmware viene perso?

Neanche io capisco come stanno le cose, ho provato a scaricare il datasheet ma devo iscrivermi e al momento non mi va. Tra le altre cose la memoria di 8K e di tipo OTP e non so quante volte può essere scritta. Insomma finche non si ha accesso totale alla doc rimangono tante domande e poche risposte imprecise.

Comunque se c'è interesse verso questa architettura apro un post nella sezione generale. Mi chiedo cosa pensa Astro di questa architettura, magari lui ne sa già qualcosa in più di noi e può far luce.

Ciao.