Sto lavorando ad un progetto che deve implementare un RTOS su arduino per lo svolgimento di diversi tasks.
Avrei come requisito abbastanza critico che la risoluzione temporale del kernel del RTOS sia almeno di 1ms, questo per regolare finemente la velocità di un motore stepper tramite l'esecuzione ripetitiva di un task.
Sto confrontando due RTOS freeRTOS e ERIKA enterprise.
Il primo è molto semplice e intuitivo, il problema è che a quanto ho capito, per arduino, la risoluzione temporale minima è di 15ms.
Quindi non potrei gestire il periodo del task di controllo del motore in modo che sia per esempio esattamente 104ms.
mi sto sbagliando sul fatto che non posso impostare task con risoluzione del periodo di 1ms?
non ho condizioni restrittive sul periodo degli altri tasks solo su quello di controllo del motore.
dovrei cambiare metodo per il controllo del motore, ad esempio con interrupts?
Mi scuso se non ho descritto dettagliatamente il problema, ma vado vado veramente di fretta
Il porting di FreeRTOS™ fatto su Arduino utilizza come ticks il watchdog con un periodo di 16ms, quindi, al di sotto non si va. Del resto, stai parlado di una piccola MCU a 8 bit e 16 MHz di clock e ... con un tick a 1ms, considerando tutto quello ch va fatto, NON resterebbe quasi tempo per fare altro ...
Se ti servono risoluzioni del 1ms devi andare su MCU molto più veloci e anche magari a 16 o meglio 32 bit. Io uso normalmente quelle risoluzioni ma con PIC32 o con ATSAM che comunque viaggiano minimo a 40 MHz.
Mi sembrava più intuitivo usare un RTOS che implementa uno scheduler con preemption.
In realtà il fatto é che si tratta di un progetto di un esame che tratta di software real time, quindi dovrei usare un RTOS per rimanere nel contesto.
Spero si possa risolvere in qualche modo, magari integrando la soluzione con l'utilizzo di un RTOS per la gestione degli altri tasks.
altrimenti dovrò cambiare progetto
Visto che é una limitazione delle librerie arduino-freeRTOS, devo proprio cambiare scheda?
Devo per forza uscire dall'ambito arduino? Per esempio una esp32 non andrebbe bene?
Ho un po di esperienza con le nucleo (f401re), sapete se ne esiste una che sia supportata da freeRTOS ? Magari che sia anche di piccole dimensioni .
Allora, per usare FreeRTOS™ occorre studiarselo bene e ... studiandoselo bene si trovano tutti i "port" già fatti. Ce ne sono decine e decine quindi, guarda qualche scheda che consci bene e poi vai a vedere tra tutti i vari "port" per trovare se c'è quelo relativo alla MCU che la scheda scelta monta.