Rispondo a tutti.
L'obiettivo che mi pongo è far arrivare BellaEli con tutto il suo bel codice ad essere non solo eccellente, non solo predisposto a qualsiasi processore non solo che vada a qualsiasi frequenza, ma soprattutto
pronto per un ipotetico 'impiccio' di retroazione.
Parto dalla mia prima osservazione che non è stata percepita...chiarito questo punto, tutto il resto verrà da se...almeno spero.

Nel codice BellaEli definisce il vettore onda_rif in questo modo...lo copio pari pari.
// Vettore di riferimento valori PWM, di una semionda, per ri-calcolo Vettore per variazioni di PWM
const unsigned int onda_rif [160] = {0, 14, 27, 41, 55, 69, 82, 96, 110, 123, 137, 150, 163, 177, 190, 203, 216, 229, 242, 255, 268, 281, 293,
305, 318, 330, 342, 354, 366, 377, 389, 400, 411, 422, 433, 444, 455, 465, 475, 485, 495, 505, 514, 523, 532, 541, 550, 558, 566, 574, 582, 590,
597, 604, 611, 617, 624, 630, 636, 641, 647, 652, 657, 661, 666, 670, 674, 677, 681, 684, 687, 689, 691, 693, 695, 697, 698, 699, 699, 700, 700,
700, 699, 699, 698, 697, 695, 693, 691, 689, 687, 684, 681, 677, 674, 670, 666, 661, 657, 652, 647, 641, 636, 630, 624, 617, 611, 604, 597, 590,
582, 574, 566, 558, 550, 541, 532, 523, 514, 505, 495, 485, 475, 465, 455, 444, 433, 422, 411, 400, 389, 377, 366, 354, 342, 330, 318, 305, 293,
281, 268, 255, 242, 229, 216, 203, 190, 177, 163, 150, 137, 123, 110, 96, 82, 69, 55, 41, 27, 14};
Per verificare la sua validità sono stato 'obbligato' a verificare i valori :
LINK.
Questi valori sono tutti costanti (scolpiti a manetta santa, molto probabilmente copiati da un qualcosa che li ha generati, purtroppo non ho letto tutta l'intera discussione ma non cambia il senso del mio pensiero).
Crea problemi questo modo di procedere?No, assolutamente no, però ci si lega mani e piedi...perchè?
Il consiglio dato era quello di far 'estrarre' al processore stesso quei valori con una funzione che va chiamata all'inizio dei tempi (initialize la chiamano gli esperti angosassoni...l'inizio dei tempi...poi per il solito slang è stata chiamata semplicemente init). Complicato fare questo? Per alcuni sicuramente si ma per i professionisti non dovrebbe esserlo...siamo quì per apprendere, anche questo è lo scopo del forum.

Questa è la riga di codice che sostituisce quei valori :
onda_rif[i]= (unsigned int)((sin(PI/SEG_SEMI_SIN*i)*PICCO_MASSIMO_ELI+AROUND));
ma non solo sostituisce i valori ma ha vantaggi incredibili:
Quale è il vantaggio? I punti della sinusoide possono essere di più o anche di meno (processore fetecchio (?) ,...ma poi siamo sicuri che un processore fetecchio non sia in grado di funzicare ugualmente o anche meglio di un processore più potente:tutto dipende da come si implemente ail SW che la fa da padrone)...possono essere ricalcolati in tempo reale (concetto informatico che identifica in questo caso 'mentre il processore è in funzione') utile anche in fase di debbug (cioè durante le prove di spiluppo)...infine non ci si lega mani e piedi a questi valori che dovrebbero essere scritti nuovamente.
Lo stesso discorso si ripete per il 160 e per quel 700...da dove saltano fuori?
Il 160 BellaEli lo ricava dalla frequenza del processore (io non abbraccio completamente il suo pensiero ma è solo un punto di vista).
In sintesi basta eliminare il costrutto const da davanti al vettore onda_rif e chiamare la funzione init() quando parte il processore in modo da valorizzarlo.
Chi ha un arduino, può verificare la variante? grassie!

Sono stato più chiaro ora?#####ALLEGATO-[/IMG][/IMG]?1511[/IMG]