- Per evitare problemi, su Arduino usa sempre l'allocazione statica delle risorse e non quella dinamica
ok, annotato
- l'inizializzazione del HW si fa nel setup(), NON nei task
ok, però nell'esempio fornito a corredo della libreria l'hardware viene inizializzato nei task. Vedi esempio blink_analogRead.
su Arduino il "tick" del sistema operativo, per ragioni di compatibilità con le librerie che usano i timers, è fatto con il WatchDog ed il "tick" minimo è di 16 msec.
Task che terminano prima dello scadere del tick ritornano correttamente il controllo al SO, ma operazioni che coinvolgono i ticks vanno fatte tenendone conto.
questa era l'altra domanda che volevo fare. Quindi in pratica, se un task termina in <16ms lo scheduler fa partire subito il successivo o aspetta comunque 16ms? Immagino sia tutto scritto nelle guide ma già che ci sono ne approfitto..
Detto questo, il tuo codice riscritto correttamete diventa:
grazie, stasera lo provo