Citazione Originariamente Scritto da Andrea L. Visualizza Messaggio
Ciao
io non vedo poi questa grande quantità di operazioni da fare
1. fissi un certo periodo di tempo in cui vengono contati in un registro il numero di giri dell'albero
Quindi to pensi da lavorare sul numero medio di giri contati in un certo periodo?
Non so se puo funzionare bene, in fase di forti accelerazioni sei in ritardo con il calcolo dell'anticipo.
Citazione Originariamente Scritto da Andrea L. Visualizza Messaggio
2. si fissa una tabella dove ad ogni intervallo di giri corrisponde un anticipo (ovvero la curva, che può essere memorizzata o sulla memoria del pic o su una memoria esterna). Per avere un determinato numeri di intervalli la soluzione più semplice è abbassare la risoluzione, cosa che si può ottenere aumentando la frequenza di campionamento oppure campionando con frequenza più bassa e dividendo il risultato ottenuto, cosa che si può effettuare semplicemente con l'istruzione RRF. Considerate che il registro del pic 16 è da 8 bit, per cui si hanno 256 combinazioni, che, se si fissa un regime massimo approssimativo di 10.000 giri, danno intervalli di 10.000/256=39 giri, che mi sembra abbastanza stretto come intervallo!!
Non mi e' chiaro cosa vuoi campionare.
Citazione Originariamente Scritto da Andrea L. Visualizza Messaggio
3. sempre con lo stesso numero acquisito sopra e sempre attraverso una seria di divisioni e/o moltiplicazioni si arriva al numero di giri al minuto. Considerate che una moltiplicazione per n è la somma del numero con sé stesso n volte, e una divisione con risultato n è la sottrazione del numero con sé stesso n volte fino ad arrivare ad un risultato negativo. Quindi anche in questo caso non serve un gran ché di numero di cicli.
Alla fine quello che deve fare il pic è acquisire il numero, confrontarlo con un listato e moltiplicarlo/dividerlo per avere il numero di giri. Personalmente ho scritto firmware molto più complessi. Se il pic ha anche un certo numero di piedini, è possibile pilotare direttamente il display con la tecnica del multiplexing.
Ci credo che hai scritto firware piu complessi, ma pesno che tu semplificando troppo il problema.

Il controllo piu efficacie e' un controllo realtime, cioe si misura il tempo necessario a percorrere un giro completo dell'albero motore, si calcola l'anticipo desiderato, nello stesso istante in cui generi l'interrupt di fine giro, inizi a misurare il ritardo necessario per ottenere l'angolo di anticipo desiderato a quel regime.

Vol.