ho chiesto all'autore del video il codice e me lo ha gentilmente mandato autorizzandomi a pubblicarlo qui sotto licenza creative commons,
l'autore e' Alessio Alessiof76@gmail.it
come da titolo immettendo il valore si ha in uscita la frequenza e si puo' regolare il dutycycle in 1023 step 0.1%-99.9%, utilissimo per 1000 applicazioni e per imparare qualcosa in piu'
Bello, davvero bello e utile . Ci vorrebbe una bella e comoda interfaccia GUI in Qt. Devo ricordarmi di questo progetto così appeno ho un momento libero ci faccio una GUI per la 2009, io quella ho.
reizel, se non ti scoccia, puoi confrontare i PWM in uscita utilizzando il metodo classico, su tutti i pin?
grazie mille a priori per condividere i tuoi studi!!
lesto:
reizel, se non ti scoccia, puoi confrontare i PWM in uscita utilizzando il metodo classico, su tutti i pin?
grazie mille a priori per condividere i tuoi studi!!
spiegati meglio perche' non ho capito, credo che la libreria TimerOne.h influisca sul pwm classico di qualche pin http://arduino.cc/playground/Code/Timer1
io ho il circuito montato anche se bastano 2 fili per testare il codice e un frequenzimetro o oscilloscopio
io ho solo un tester per freq e duty che mi da letture precise solo fino a 50KHz
intendevo testare uno skech "pulito" con solo le analogRead... so che su alcuni pin si comporta in modo strano, e vorrei vederci più chiaro, ma senza un oscilloscopio...
intendevo testare uno skech "pulito" con solo le analogRead... so che su alcuni pin si comporta in modo strano, e vorrei vederci più chiaro, ma senza un oscilloscopio...
Il medico mi ha detto che quando comincio a parlare così devo farmi due ore o più di sonno.
No a parte gli scherzi non ti seguo, analogRead?..... per fare che?
nono, sto parlando di arduino "liscio", senza alcuna libreria.
ho letto, e credo di averci avuto anche problemi, col fatto che su alcuni pin il PWM non lavora bene come sugli altri pin. Ovviamente la cosa sarà legata ai timer, magari al timer 0 che usa millis e co e quindi il PWM diventa multiplo della micros o robe del genere.
Lesto, quali sarebbero le problematiche a cui alludi?
Il core di Arduino tiene già conto del fatto che il timer 0 è utilizzato per millis, tant'è che viene infatti impostato il timer per la modalità fast PWM; usando la phase correct PWM si avrebbe un numero diverso di overflow per cui il calcolo temporale sarebbe alterato.
Il timer 0 viene perciò impostato in modo che nel caso del semplice calcolo del tempo il timer vada in overflow ogni tot. Attivando il Pwm non si deve far altro che agganciare il timer ai pin esterni, per cui oltre all'overflow del contatore si ha anche il cambio di stato sui pin.
non trovo nulla a conferma, ma in pratica un paio di pin PWM non hanno la stessa precisione degli altri e in alcuni casi può genereare problemi. Il fatto che ci sia di mezzo un timer è solo una ipotesi
lesto:
non trovo nulla a conferma, ma in pratica un paio di pin PWM non hanno la stessa precisione degli altri e in alcuni casi può genereare problemi.
Questa cosa non mi risulta, mi citi un caso specifico dove hai questi problemi ?
il problema è che non ho un caso di esempio, ricordo di essermi scontrato con la cosa quando ero agli inizi .. comunque dovrebbe bastare il confronto delle onde generate dai pin PWM
lesto:
il problema è che non ho un caso di esempio, ricordo di essermi scontrato con la cosa quando ero agli inizi .. comunque dovrebbe bastare il confronto delle onde generate dai pin PWM
Non c'è nulla da confrontare, il PWM viene generato in hardware dai timer, due segnali per ogni timer, in modo totalmente indipendente dal software, una volta caricati i giusti valori nei registri non devi fare altro.
Se poi come precisione ti riferisci al fatto che solo due canali pwm possono essere a più di 8 bit mentre i restanti quattro sono a 8 bit (su Arduino sono tutti a 8 bit) allora questo non è un problema/bug, è un limite hardware del 328p.
lesto:
non trovo nulla a conferma, ma in pratica un paio di pin PWM non hanno la stessa precisione degli altri e in alcuni casi può genereare problemi. Il fatto che ci sia di mezzo un timer è solo una ipotesi
E' la prima volta che la sento. Casomai posso concordare con te se parliamo di frequenze di clock del micro differenti dai 16 MHz: ti posso confermare che il core dell'Arduino (lo 002x lo so per certo, l'1.0 non ho controllato i file) non controlla a che velocità lavora la CPU per cui se hai un micro a 8 MHz il PWM ha frequenza dimezzata, questo sì.