[Soci SLIP] Re: [Arduino] Arduino posso scambiare pin da 11 a 3 ?

llcfree llcfree a gmail.com
Mer 20 Mar 2013 10:55:50 CET


On Wed, 2013-03-20 at 09:55 +0100, llcfree wrote:
> On Tue, 2013-03-19 at 18:38 +0100, Alessandro Pasotti wrote:
> > Detta così capisco che paia semplice...
> > 
> > 
> > 
> > 
> > Sto lavorando su questo esempio:
> > http://playground.arduino.cc//Code/PCMAudio
> > 
> > 
> > funziona benone, ma vorrei fargli leggere il file wav dal lettore SD,
> > il problema è che il pin 11 (MOSI) è usato sia da SPI del lettore SD
> > che dal timer2 fast PWM necessario per generare l'audio.
> > 
> > 
> > Domandona: è possibile cambiare il programma di esempio indicato sopra
> > in modo che usi il pin 3 al posto dell' 11 ? Ovviamente cambiare il
> > numero del pin all'inizio non funziona dato che poi nel prosieguo del
> > programma viene abbondantemente manipolato...
> > 
> > 
> > Ma alla fine: è possibile ?
> 
> Non lo so, ma qui c'e' un problema analogo al tuo (come adattare il
> codice non per arduino uno (atmega328) ma per atmega1280):
> 
> http://dankemax.de/data/uploads/ver2.ino
> 
> e suggerisce di usare (per quel dispositivo) il pin 10. Senza saperne
> nulla, la prima domanda che io mi farei e' quale sia la differenza tra
> pin 3 e pin 11 e se ci sia nell'atmeha328 un pin "10" che abbia le
> stesse funzioni del pin 10 nell'atmega1280. Se si', seguirei il
> suggerimento del link e vedrei cosa capita.
> 
> 
> > Mi pare che usi il timer2 in modalità fast PWM, dovrebbe essere
> > disponibile anche sul pin 3, no?
> > 
> 
> Se leggi i commenti al link sopra, vedi che ci sono problemi con pin e
> pwm. Magari tu che ne sai piu' di tutti noi sul tuo problema, capisci
> anche di cosa si tratta e ricaverne qualcosa.  Io ne so niente :)
> 
> Se poi quello che impari ce lo racconti in parole tue, sara' certo molto
> interessante.

Altra cosa da tenere in conto (sempre a livello generale, perche' i
dettagli non li so ancora) e' che il pin 3 e' uno dei due pin usati per
interrupt (l'altro e' il pin 2):

http://arduino.cc/en/Main/arduinoBoardUno

E' possibile che ci sia un conflitto nella gestione degli interrupt,
visto che usi contemporaneamente l'spi? 

Per saperlo, probabilmente bisogna vedere cosa fanno le librerie (che
cosa usano come pin per l'interrupt, come minimo).

Io proverei con un pin diverso da 3, che non abbia altre funzioni che
quelle che servono (PWM, mi pare di capire), tanto per incominciare.
Pero' devi modificare il codice, che immagino neppure tu capisca in
dettaglio, e che certo non si puo' modificare a caso sperando che
funzioni (anche se si fosse cosi' maledettamente fortunati da azzeccare
la combinazione giusta, non si imparerebbe niente e la volta dopo
bisognerebbe di nuovo sperare nella fortuna, trovare l'amico, pagare,
ammesso che una delle opzioni risolva davvero: se nessuno sa cosa si fa,
per quanto si faccia pagare, il problema non lo risolve. E i soldi
finiscono). 

Comunque, per scegliere il pin giusto e vedere come modificare il
codice, credo ti possa servire questa mappa:

http://arduino.cc/en/Hacking/PinMapping168

(la mappatura per 8, 168 e 328 e' la stessa, quindi va bene anche per
l'arduino uno).

E' un pochino meno bella e un po' meno colorata dell'altra, ma ha
l'enorme pregio di essere chiarissima (e si stampa anche in bianco e
nero, percio' non bisogna pagare 4 toner invece di uno)

Guarda che io proprio non so niente di arduino. Pero' questi sono gli
stessi problemi che si avevano una volta con GNU/linux (conflitto di
interrupt, conflitti in generale etc, quando le risorse erano scarse
anche li' e le distribuzioni piene di bachi).

Questo dimostra bene, secondo me, che non basta imparare a metter
insieme, ingolositi dal fatto che cosi' tanto e' disponibile e
gratuitamente. Bisogna continuare a sapere quello che si fa. Per fare un
esempio chiaro a tutti, e' come con le calcolatrici: fanno loro i conti,
ma se uno non sa fare i conti non puo' neppure capire se il risultato e'
giusto o no, figurarsi se sa trovare il modo di correggerlo. E per
sapere quali conti fare, bisogna sapere quale sia il problema e come
tradurlo in conti. Altrimenti si copia, come sui banchi di scuola, con
lo stesso risultato (un pezzo di carta e niente in testa).

Mando anche in lista soci, come suggerimento per l'impostazione di un
eventuale corso di programmazione.

Loredana






Maggiori informazioni sulla lista Soci