Hola killerjc, el primer post que haces desde que estoy registrado, jeje.
Te gusta bastante complicarte la vida, un RTOS para un datalogger,
, a mi también me gusta complicarme la vida.
Tu proyecto sin embargo, me recuerda mas a un cliente-servidor, es solo una idea vale, pero imagina tus datos como si fueras un cliente ( tu datalogger) y te suscribes a un servidor ( los datos a recibir), de esta maneras tus datos serán TIPS, estructuras o matrices donde puedes poner los datos que quieras, el tiempo, el dato numérico, la importancia del dato, lo que quieras.
De esta manera tendrás un task que reciba los datos y no pierda ni uno mediante un buffer circular, de esta manera no pierdes datos ni se llena la memoria, sino, que en el hipotético caso de que se llene el buffer se pisan los datos mas antiguos (ya procesados).
Otro task se encargara de procesar los datos, de manera inteligente, por ejemplo si estas recibiendo un dato cada 1ms y ese dato no cambia en 50 ms para que guardarlo 50 veces¿ como en el TIPS llebas el tiempo y el periodo de muestreo sabes cuantas veces has recibido el mismo dato, y para uno analógico puedes meterle una histeresis para determinarlo como un cambio o no.
En cuanto a las variables globales para los datos yo no lo descartaría y vería como se comporta, el task de procesamiento y guardado del dato es de 10 ms y el task de adquisición va a 1 ms no pasa nada porque cada 10 ms se bloque la variable global durante algún ms se perderán datos pero tu los estas pillando cada 10 así que sin problemas.
Pff no se es que hay muchas maneras de hacerlo pero cual es la mejor? Es complicado.
Un saludo.