Salve!
Sto cercando di settare sul pin 9 e 10 della Mega2560 un pwm a 10kHz, il massimo permesso dalla dual motor driver Pololu - Dual VNH3SP30 Motor Driver Carrier MD03A. Astro mi ha consigliato l'uso della libreria TimerOne e TimerThree, ma monto una usb host shield della sparkfun https://www.sparkfun.com/products/9947 e decido di leggere due segnali per ogni encoder, MORALE ho liberato dello spazio reindirizzando il pin SS e INT per avere finalmente liberi i pin 9 e 10, legati al timer1, nella mia testa indispensabile per il FastPWM... insomma ho fatto una gran confusione. Ripartendo da zero cerco di capirci qualcosa...
Sempre astrobed, mentre brancolo nel buio, mi consiglia risoluzione a 10bits e frequenza del pwm a 10kHz, il limite della motor driver. A prescindere ho acquistato una mega per problemi di spazio e subito adottata.
Scarto il Timer2 e quindi i pin 9 e 10 perchè la risoluzione massima è 8bits.(Advanced Arduino: direct use of ATmega counter/timers)
Per non fare casino con gli altri timer perchè legati a pin che uso per l'spi o per leggere gli encoder scarto anche timer 1 ,3 e 4.
Per la mega i timer con risoluzione a 16 bit sono 1,3,4,5:
timer 1 for pin 11 12
timer 3 for pin 2 3 5
timer 4 for pin 6 7 8
timer 5 for pin 44 45 46
Il più comodo per me sarebbe quindi il timer 5, anche per una questione di spazio.
Sempre qui Advanced Arduino: direct use of ATmega counter/timers quasi alla fine mostra una tabella con le modalità: Fast Pwm a diverse risoluzioni, phase correct, phase and frequency correct. Perchè per un robot autobilanciante spesso viene scelta la terza modalità? Quale risoluzione prevede?
Sono più propenso a fare a lavorare col timer 5, sempre che sia compatibile con la modalità di pwm scelta, OPPURE (se necessario) sposto gli encoder e uso TimerThree(pin 2 3 5).
Ne approfitto per ringraziare del supporto dato dai ragazzi del forum.
NXT