Creative Commons BY-NC-ND 2.5Questo sito e tutto il suo contenuto sono distribuiti sotto la licenza Creative Commons Attribuzione - Non Commerciale - Non opere derivate 2.5 Italia e con le condizioni d'uso definite nel disclaimer: siete pregati di leggere entrambi questi documenti prima di usufruire dei contenuti di questo sito. Per alcuni contenuti è necessaria una registrazione gratuita: non è necessario pagare e non è necessario accumulare punteggi per accedere agli articoli e scaricare i sorgenti: basta solo essere onesti. Se volete che questo sito continui a rimanere attivo, a contribuire ogni giorno alla diffusione della cultura libera, non copiate il materiale per ripubblicarlo in altri luoghi. Se volete partecipare su settorezero e rendere le vostre idee, i vostri progetti, fruibili da tutti senza limitazioni potete farlo tranquillamente.

chipKIT™ MAX32 – Il rivale di Arduino Mega 2560

Autore: Giovanni Bernardo | Data pubblicazione: 3 ottobre 2011
Categorie: Arduino chipKIT™ PICmicro 32

Abbiamo già avuto modo di conoscere il Chipkit™ UNO32 qualche puntata fa, ora è giunto il momento di conoscere il fratello maggiore: il chipKIT™ MAX32, sempre ideato e realizzato dalla Digilent.

Il chipKIT™ MAX32 rappresenta l’antagonista di Arduino Mega 2560 (il successore di Arduino Mega). Anche qui, come nel caso del fratello minore, la MCU montata a bordo è un PIC32:

Chipkit MAX32 (sopra) Vs Arduino Mega2560 (sotto)

Sappiamo che Arduino Mega, rispetto all’Arduino UNO (e simili), ha un maggior numero di I/O e periferiche aggiuntive (ad esempio ci sono 4 UART e 14 PWM per dirne un paio). Il chipKIT™ MAX32 non  è da meno e mantiene le stesse promesse del fratello minore: rispetto al “rivale”, oltre ad avere maggiore potenza di calcolo e memoria, ha anche degli I/O addizionali oltre ad alcune periferiche non nativamente presenti su Arduino Mega.

La MCU a bordo del chipKIT™ MAX32 è un PIC32MX95F512L , il che vuol dire che abbiamo a disposizione innanzitutto una MCU a 32Bit che gira ad 80MHz, poi una periferica USB 2.0 OTG, una periferica Ethernet 10/100, 2 moduli CAN, 8 canali DMA … giusto per citare qualcosa che manca all’Arduino Mega, seguono ben 512Kb di memoria programma e 128Kb di Ram (rispettivamente il doppio e 16 volte di più rispetto ai quantitativi disponibili su Arduino Mega).

Gli I/O a disposizione sul chipKIT™ MAX32 sono addirittura 83 contro i 54 di Arduino Mega. Metto qui una tabella comparativa delle caratteristiche:

 Arduino Mega 2560chipKIT MAX32
MCUATmega 2560PIC32MX795F512L
Frequenza operativa16MHz80MHz
Memoria programma256Kb512Kb
Memoria RAM8Kb128Kb
I/O Digitali5483
Ingressi Analogici1616
Uscite PWM14 (pin da 0 a 13)5 (pins 3,5,6,9 e 10)
Interrupts esterni6 (pins 2,3,18,19,20 e 21)5 (pins 2,3,7,20 e 21)
Periferiche avanzatenessunaRTCC Hardware
USB 2.0 OTG
10/100 Ethernet MAC
CAN bus (2 moduli)

Come vedete eventuali problemi di compatibilità su qualche shield potrebbero esistere unicamente su qualche uscita PWM e sugli interrupt esterni, ma attualmente l’unico shield incompatibile risulta essere un particolare driver motori, fate riferimento al thread ufficiale sulla compatibilità degli shields. Al contrario su Arduino Mega non è assolutamente possibile utilizzare il chipKIT Network Shield (che analizzeremo in una prossima puntata) che è stato realizzato appositamente per sfruttare le caratteristiche avanzate disponibili unicamente sul chipKIT™ MAX32.

Le altre caratteristiche (UART, SPI, I2C ecc) sono uguali per entrambe le schede e non le ho riportate. L’unica differenza sta nell’ SPI: sugli Arduini il modulo SPI può essere utilizzato unicamente come master, sui chipKIT invece l’SPI può essere utilizzato anche in modalità Slave settando gli appositi Jumper: questo consente, ad esempio, di far comunicare tra loro due chipKIT (ma anche un chipKIT e un Arduino o un chipKIT e un altro dispositivo SPI master).

Dato che qualcuno me l’ha chiesto dovendo fare una scelta progettuale tra i due chipKIT, metto qui anche una tabella comparativa tra chipKIT UNO32 e chipKIT MAX32:

 chipKIT UNO32chipKIT MAX32
MCUPIC32MX320F128HPIC32MX795F512L
Frequenza operativa80MHz80MHz
Memoria programma128Kb512Kb
Memoria RAM16Kb128Kb
I/O Digitali4283
Ingressi Analogici1216
Uscite PWM5 (pins 3,5,6,9 e 10)5 (pins 3,5,6,9 e 10)
Interrupts esterni5 (pins 2,7,8,35,38)5 (pins 2,3,7,20 e 21)
UARTs2:
UART (RX:pin0, TX:pin1)
UART2 (RX:pin39, TX:pin40)
4:
UART0 (RX:pin0, TX:pin1)
UART1 (RX:pin19, TX:pin18)
UART2 (RX:pin17, TX:pin16)
UART3 (RX:pin15, TX:pin14)
Periferiche avanzateRTCC Hardware (dopo montaggio di X2)RTCC Hardware
USB 2.0 OTG
10/100 Ethernet MAC
CAN bus (2 moduli)

Il posizionamento del pulsante di reset risulta più intelligente sul chipKIT MAX32 che non su Arduino Mega: sul chipKIT MAX32 si trova in alto a sinistra in prossimità del bordo, facilmente accessibile anche con uno shield montato. Di fianco al pulsante di reset ci sono i led LD1 e LD2 che servono a monitorare le linee TX/RX della seriale collegata al convertitore FTDI232. Il led dell’alimentazione si trova invece vicino al jack, mentre il led utente, LD4, si trova di fianco ai jumper JP3/JP4.

“La questione dei 5V”

Ripeto questa cosa ancora una volta perchè noto che in molti non la arrivano a capire anche se non c’è niente di difficile da comprendere: anche se il PIC a bordo della scheda funziona a 3.3V, sono stati presi degli accorgimenti affinchè possano essere utilizzate periferiche a 5V senza alcun problema. Questo vuol dire che potete usare ancora i vostri  display a 5V (tanto per fare un esempio). L’unico problema potrebbe essere rappresentato da alcune periferiche CMOS che non potrebbero essere in grado di riconoscere 3.3V come livello logico alto (ma non c’è rischio di bruciare niente! Sia chiaro!). Anche per gli ingressi analogici sono stati presi provvedimenti. Sul manuale è scritto molto chiaramente (io prego sempre che la gente, prima di aprir bocca, si metta a leggere, ma pare che leggere, per alcuni, sia una cosa davvero difficile):

The digital I/O pins on the PIC32 microcontroller are 5V tolerant.

Quindi: nessun problema sui pin digitali: possono accettare 5V in ingresso in maniera “nativa”. E’ ovvio che se i pin digitali vengono settati come uscita non tireranno fuori 5V ma al massimo 3.3V dato che il PIC funziona a 3.3V, una precisazione inutile, no? Ma continuiamo a leggere:
The analog capable I/O pins are not 5V tolerant.
Questo vuol dire che il PIC, nativamente, non è in grado di accettare 5V sugli ingressi analogici, MA:
To provide 5V tolerance on those pins, the Max32 contains clamp diodes and current limiting resistors to protect them from 5V input voltages

Quindi anche gli ingressi analogici possono accettare 5Vperchè sono state prese delle precauzioni. Ma attenzione: dice che gli ingressi sono protetti dai 5V: il che significa che dovendo leggere una tensione analogica con una certa precisione, si evita di far arrivare i 5V correndo il rischio che i diodi di clamping ci privino della dinamica, quindi in questi casi va usato un partitore o si fa in modo che il sensore lavori a 3.3V se è possibile. Lo ripeto in maccheronico: i 5V sugli ingressi analogici ci possono arrivare, ma è ovvio che dopo i 3V viene “tagliato” tutto a 3V, quindi dopo i 3V leggete sempre 1024 sul convertitore AD e quindi far arrivare 5V non è una scelta intelligente anche se possibile. Ritengo che con questo sia stato abbastanza preciso, quindi spero di non leggere più super-fesserie sui forum. Ma non ci conto più ormai.

In aggiunta si leggono altre affermazioni piuttosto discutibili in cui si afferma che il mondo gira a 5V. Forse era vero qualche anno fa ma oggi non più o quantomeno la tendenza è cambiata per far fronte a miglioramenti: la maggioranza dei nuovi dispositivi vengono progettati per lavorare a tensioni sempre più basse per consentire processi di miniaturizzazione sempre più spinti. Un numero sempre maggiore di periferiche gira a 3.3V e lo step successivo sono gli 1.8V. Sarebbe anche ora di cominciare a pensare al futuro piuttosto che rimanere fossilizzati e sostenere tesi piuttosto bislacche solo per evitare di fare un briciolo di sforzo in più e stare al passo coi tempi.

Programmazione “classica”

Sul chipKIT MAX32 c’è un PICmicro, giusto? Quindi oltre che in modalità compatibile con Arduino, possiamo programmarlo anche in maniera classica utilizzando MPLAB IDE come ambiente di sviluppo e MPLAB C32 C Compiler come compilatore e caricare quindi i programmi con un bootloader o tramite il connettore ICSP. Anche sul MAX32 è stato fatto uso di un connettore ICSP con i pad sfalsati che consente l’innesto saldo di uno strip maschio a 6 pin senza dover necessariamente saldare:

A differenza del fratello minore UNO32, però, il pic montato a bordo del MAX32 non viene riconosciuto dal picKIT2 (viene restituito un errore relativo alla tensione VPP), per cui per poterlo programmare in questo modo è necessario almeno il picKIT3.

Settaggio dei Jumpers

Rispetto al fratello minore, il MAX32 ha dei jumper in meno:

  • JP1 : serve per selezionare la sorgente di alimentazione esterna/interna. In pratica spostando il jumper verso destra (in posizione “REG”) entra in funzione il regolatore a 5V, questa è la selezione da eseguire quando si fornisce alimentazione sul jack J2 o quando non si sa cosa fare. In posizione “BYP”, il regolatore viene bypassato, questa selezione è da eseguire quando si alimenta la scheda con l’USB o con una sorgente a 5V. In entrambi i casi il regolatore a 3V è sempre abilitato.
  • JP3+JP4 :  servono a selezionare la modalità di funzionamento del bus SPI (master/slave).

Per maggiori informazioni fate riferimento al documento che illustra il settaggio dei jumper.

Altro

Per il resto vale tutto ciò che ho già detto nell’articolo precedente : Il chipKIT™ MAX32 si programma utilizzando MPIDE allo stesso modo di come si fa con Arduino, basta che ricordarsi di selezionare la scheda corretta dal menù Tools->Board:

Come vedete per il MAX32 ci sono due selezioni: la selezione chipKIT MAX32 è quella standard, che utilizza il convertitore FTDI232 come su Arduino, l’altra selezione (chipKIT MAX32-USB for Serial) serve ad utilizzare l’USB OTG integrata nel PIC32 come ponte seriale. Non mi è ancora chiaro come funziona questa seconda opzione e ho posto una domanda nel forum per avere delucidazioni in merito.

In Italia i prodotti della Digilent vengono distribuiti da Mirifica, e il mio consiglio è di andare sul loro sito per l’acquisto del chipKIT™ MAX32.

Documentazione e Downloads

Galleria fotografica chipKIT MAX32™

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? SettoreZero è realizzato soltanto con contenuti originali: tutti gli articoli sono curati con passione dagli autori e nulla viene copiato da altri siti. Supporta e mantieni in vita SettoreZero con una donazione: basta soltanto un caffè o una birra. Puoi supportare SettoreZero anche con uno dei progetti elencati nella sezione servizi o partecipare anche tu con un tuo articolo/progetto personale.

Se desiderate che SettoreZero continui a rimanere gratuito e fruibile da tutti, non copiate il nostro materiale e segnalateci se qualcuno lo fa.

Puoi andare alla fine dell'articolo e lasciare un commento. I trackback e i ping non sono attualmente consentiti.

  1. Ancora nessun commento.

Devi essere collegato per lasciare un commento.

  1. Ancora nessun trackback
settorezero.com e il logo Zroid™ ©2007÷2015 Giovanni Bernardo - E' vietata la copia e la distribuzione anche parziale dei contenuti di questo sito web senza l'esplicito consenso dell'autore.
I contenuti di settorezero.com sono distribuiti sotto una licenza Creative Commons Attribuzione-Non Commerciale-Non Opere derivate 2.5 Italia a cui vanno aggiunte le condizioni d'uso definite nel disclaimer.
settorezero.com e tutti i suoi contenuti sono tutelati dalla legge sul diritto d'autore per cui i trasgressori sono perseguibili a norma di legge. Settorezero fa uso dei cookie leggi l'informativa estesa.
Creative Commons BY-NC-ND 2.5
Il tema di questo sito è basato sul tema Fusion per wordpress, realizzato originariamente da digitalnature e fa uso del plugin Wassup per il computo delle statistiche. Per contattare l'autore siete pregati di utilizzare la sezione contatti.
Per essere aggiornato con tutte le novità di settorezero.com seguici anche anche su Facebook Twitter Tumblr Blogspot Youtube.