Rieccomi ragazzi, mi sono venute in mente un po' di cose.
Partiamo dall'hardware.
1) E' necessario un RTC? Non si può implementare nel software? Lo dico perché non vedo molto senso nell'avere due quarzi, uno per il micro e uno per l'RTC, più il chip dell'RTC. Ho pensato che se il micro può generare degli interrupt o "tick", per esempio ogni circa 10 ms, si può tararne digitalmente la durata per far avanzare un orologio una volta al secondo. Questo orologio si userebbe per le temporizzazioni a lungo termine, mentre per quelle a breve o che non ammettono jitter si userebbero i "tick".
Esempio: ho dei "tick" di durata pari a 10,1234 ms. Ogni volta che c'è un "tick" sommo 43479672 a un contatore a 32 bit. A ogni overflow di questo contatore a 32 bit aggiungo 1 secondo all'orologio.
Questo numero (43479672) non rappresenta altro che la durata del "tick" espressa in unità di

. Posso cambiare questo numero (taratura digitale) a passi di una unità alla volta. Ogni passo di una unità su 43 milioni corrisponde a una correzione di 23 parti per miliardo. 23 parti per miliardo corrispondono a 0,73 s l'anno, errore ben inferiore a quello dovuto a tolleranze e derive del quarzo.
Quindi, a meno che il chip dell'RTC incorpori un termometro e riesca a compensare le derive termiche del quarzo, o abbia qualche altra sofisticazione che renda comodo averlo (tipo alimentazione separata con pila al litio), io lo risparmierei.
Che ne dite? So di essere un neofita, e magari mi sfugge qualcosa e l'RTC hardware serve, ma mi sembra una buona idea, anche se su un aspetto tutto sommato secondario.
2)
TardoFreak ha scritto:Per l' eventuale espansione/prototipazione direi di usare connettori DIN a 96 poli. Costano poco. si possono montare sulle millefori formato eurocard ed una schedina di bus per montare le femmine.
Invece di usare quei connettori stupidi di arduino che limitano lo spazio ed hanno pochi pin.
Ottimo, si possono ottenere sistemi complessi e con tante espansioni.
Visto che come dici il connettore ha 3 file saldabili passo 2,54 mm, magari non costa tanto mantenere il profilo dei componenti basso, e così permettere a chi volesse di saldare, al posto del connettore DIN, 1 o 2 o 3 file di connettori "tipo arduino"... Boh, anche qui sono un neofita, ma mi sembra che potrebbe essere una possibilità utile a qualcuno.
Per il software, sarebbe bello avere un mini kernel con multi-tasking collaborativo (non-preemptive), base comune a cui ciascuno può attaccare degli event handler realizzati come macchine a stati. Sto scrivendo un articolo sulla programmazione a eventi, ecco come vorrei fare questo kernel, basato sullo schema "
extended handlers":
Che ve ne pare? E' un lavoro che può valere la pena? O magari sapete se c'è già fatta una soluzione open-source?
Poi per le macchine a stati voglio provare "
The state machine compiler".
TardoFreak ha scritto:mi sarebbe piaciuto ... poterlo programmare tramite un terminale (quindi con un linguaggio interpretato o semi-compilato) collegato al PC tramite una seriale virtuale , provando il programma passo per passo e modificarlo tutte le volte che mi viene un' idea per migliorare il ciclo di collaudo.
Mi vengono in mente Lua, Python e Java. La macchina virtuale Java forse è un po' pesante, ma chissà... Android usa una cosa simile. Forse Python è meglio, ma ne so ancora troppo poco. Lua assomiglia più al C e ha un interprete molto leggero. Bisogna studiare e provare, provare, provare... Qualcuno ha qualche consiglio?
A me questo progetto sembra una bellissima idea.
