Come ho sempre detto, e' difficile capire le persone con uno schermo nel mezzo.
Ma quando si alzano i toni (anche per via di fraintendimenti che faccia a faccia non ci sarebbero), la discussione va sul personale e diventa sterile.
Io mi son chiesto quanto dura la mia routine di interrupt (conscio del fatto che e' concettualmente sbagliata) e ho fatto delle misure (sbagliate perche' pensavo che millis fosse preciso).
Ho corretto il tiro, probabilmente sbagliando ancora. Forse, usando un timer per contare i cicli di clock dovrei riuscire ad avere una misura piu' accurata (potrei dissassemblare la mia routine di interrupt ma e' troppo lunga e sicuramente mi perdo).
Io non ho convinzioni, sono conscio che il mio codice e' scritto male (per mie deficienze) e son pronto a cambiarlo piu' volte finche' non funziona, questo l'ho sempre detto. Per fortuna non lo faccio per lavoro, quindi ho tutto il tempo per sperimentare
Questa cosa concedimela e apprezzala (dammi una soddisfazione ogni tanto
).
Infine, come gia' detto, io sono praticone. Il fine ultimo e' far funzionare il tutto meglio possibile.
Se il tuo riesce a filettare a 1000 giri un passo 3 e il mio (a parita' di condizioni) riesce a filettare solo fino a 300, vuol dire che il tuo lavora meglio del mio (mio e tuo e' inteso in generale. In senso stretto il mio programma ha girato solo sul banco, magari messo sul tornio esplode tutto).
Una volta stabilito questo, andro' a ritroso per vedere perche' il mio programma non riesce a fare quello che fa il tuo. Lo so, ragiono al contrario ma son fatto cosi'.
Una cosa non mi e' chiara: perche' non posso prendere il caso peggiore come tempo di esecuzione dell'interrupt? Se e' un discorso generale mi e' chiaro. Nel caso specifico non la vedo una bestialita' cosi' estrema.
Per quanto riguarda la randomicita' non mi esprimo, e' stato gia' detto tutto e non posso che essere d'accordo. Spero che Mimoletti si sia espresso male e intedesse qualcos'altro.
Quello che dici (intercettare il primo impulso e ricostruire gli altri) e' stato applicato in un programma che avevo trovato, sempre per l'els.
Se ricordo/ho capito giusto, lo stepper era pilotato senza leggere l'encoder costantemente come facciamo noi. L'encoder veniva letto solo sotto una certa velocita' (50rpm o li' in giro), oltre presumeva che direzione e velocita' restassero invariate.
Appena capito questo, non ho perso tempo a studiare il resto del programma perche' mi sembrava inutile.