Real-time

capt_7:
Salve a tutti!

Sentite volevo chiedervi gentilmente se fosse possibile spiegarmi un aspetto di Arduino.

Arduino ha un microcontrollore con un bootloader installato. Il bootloader di solito serve a caricare un kernel o un sistema operativo. Dentro Arduino cosa viene caricato? Ha un suo kernel?

La memoria flash dell'Atmega328 presente sull'Arduino è divisa in due porzioni, una contiene un codice che viene eseguito al reset del microcontrollore, l'altra un altro codice. Nell'Arduino la prima contiene un software che viene denominato "bootloader" e che serve a cambiare il programma contenuto nell'altra sezione di memoria direttamente dal bootloader stesso. Ciò avviene quando, all'avvio, si spedisce tramite IDE un nuovo sketch: il bootloader, che risiede nell'area di memoria che viene letta per prima, controlla se sulla seriale arriva un nuovo programma. Se la risposta è positiva, scrive il programma nell'altra area di memoria, altrimenti avvia il programma che essa contiene.

Di per sé non c'è nessun kernel o sistema operativo preinstallato. Esistono alcuni progetti di RTOS, più o meno complessi, più o meno liberi.

Ve lo chiedo per capire cosa e chi gestisce l'esecuzione in real-time dei programmi caricati. Ho visto che il microcontrollore ha un Real Time Counter ma non ho capito chi lo gestisce, perchè di solito è il sistema operativo che qui però non c'è.

Grazie a tutti!

Il Real Time Counter di cui hai letto altro non è che modulo del microcontrollore agganciato ad un contatore interno. Un contatore, o timer, è un registro del microcontrollore che può essere aggiornato da diversi "eventi". Nel caso del Real Time Counter, questo modulo viene agganciato al timer 2 in modalità asincrona, ossia il cui clock è fornito non dal clock di sistema ma da una fonte di clock esterna. Questo modulo è nato per operare con i quarzi a 32768 Hz: impostando il prescaler (cioè il divisore di clock) del timer, si può ottenere un contatore particolarmente preciso.