[Risolto]Multitasking con Arduino?

MauroTec:
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.

Esattamente! Questo è il corretto uso del leOS.
Ricordo che se poi inseriamo nel task operazioni semplicissime alla fine l'interruzione è quasi inavvertibile.

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.

Idem. Non capisco perché per scaricare i datasheet bisogna iscriversi.

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.

Qui credo che sia come il bootloader inserito nel SAM3X dell'Arduino DUE ossia che è scritto direttamente da Atmel e, come ha detto tempo fa Banzi in merito proprio ad un mio dubbio sul bootloader del chip, è fatto apposta così per non essere toccato dall'utente.

In definitiva, il programma deve risiedere per forza nella SRAM, non vedo altre memorie in questi Xcore. Ma qui ho timore che ci sia qualcosa di poco chiaro: siccome la SRAM è memoria volatile, se stacco l'alimentazione il programma se ne va, non ci possono essere storie.