La nuova famiglia dei microcontrollori dei 32 bit è basata sull’architettura MIPS32, con la relativa combinazione principale di rendimento elevato, digiuna risposta di interruzione e consumo di potere basso. La famiglia PIC32 è sostenuta liberamente dall’ide di MPLAB del Microchip ed effettua la compatibilità dell’unità periferica e di software con le famiglie a 16 bit di MCU/DSC della Microchip. La Microchip inoltre offre un insieme completo degli strumenti di sviluppo, il tutto disponibile con il codice sorgente libero. La famiglia PIC32 può funzionare a 72 megahertz (e a frequenze superiori) ed offre una flash per esempio di 512 Kb e una RAM di 32 Kb. Esaminiamo le caratteristiche tecniche principali di una famiglia dei PIC32, il PIC32MX:
➤ convertitore A/D 10 bit, 16 Canali;
➤ oscillatore Interno a 8 MHz, 32 kHz;
➤ max speed 40 MHz;
➤ power management modes: RUN, IDLE, SLEEP;
➤ watch dog timer;
➤ supporto interfaccia JTAG.
Tutti i prodotti della famiglia PIC32 sono supportati da strumenti di sviluppo della Microchip compreso il MPLAB IDE, il C32 MPLAB compilatore C, il MPLAB REAL ICE sistema di emulazione, la MPLAB ICD-2 in un circuito debugger, e la MPLAB PM3 universale dispositivo programmatore. MPLAB Integrated Development Environment (IDE) è un ambiente di programmazione integrato per lo sviluppo di applicazioni EMBEDDED apposito per microcontrollori della serie PIC® o dsPIC® di Microchip.
MPLAB IDE è un software 32-bit per MS Windows, facile e immediato da utilizzare include strumenti rapidi per lo sviluppo e il debugging. MPLAB IDE si può utilizzare anche come singola interfaccia grafica unificata per sistemi di sviluppo SW e HW di Microchip e di terze parti. Muoversi fra i vari strumenti è immediato e l’aggiornamento del firmware sul dispositivo di debug hardware è istantaneo perchè MPLAB IDE usa la stessa interfaccia per tutti gli strumenti. Il simulatore MPSIM è una parte dell’ambiente MPLAB il quale permette di avere una visione globale sul comportamento del nostro programma per un determinato microcontrollore permettendoci di verificare che il comportamento dello stesso sia corretto. Permette inoltre di comprendere meglio il comportamento del microcontrollore. Tramite il simulatore possiamo monitorare il valore corrente delle variabili utilizzate, dei registri e lo stato delle porte a livello di pin. Il simulatore esegue il programma linea per linea ed evidenzia i valori dei registri e variabili del microcontrollore. Dopo aver scritto il programma è buona norma simulare le reazioni del sistema utilizzando il programma, e successivamente far girare l’applicazione in un sistema reale. Generalmente il passo della imulazione viene sempre considerato superfluo e viene sistematicamente scartato.
C32 MPLAB
l compilatore C per microcontrollori PIC32; è un compilatore full-optional per Microchip PIC32 della famiglia a 32 bit.
Le caratteristiche principali sono:
➤ compatibile con standard, memoria, conversione di dati e librerie matematiche;
➤ supporto codice a 16 bit e 32 bit nello stesso progetto;
➤ single and multi-vector interrupt.
Starter kit
Il PIC32 Starter Kit viene venduto completo di tutto ciò che è necessario agli sviluppatori per iniziare, compreso l’MPLAB IDE e MPLAB C32, la documentazione, esempi di progetti con tutorial e schemi. Nei listati 1 e 2 riportiamo rispettivamente un esempio di codice per l’utilizzo delle perifiche relative al modulo di oscillazione e al modulo di conversione A/D.
#include <plib.h> int main(void) { // osc source, PLL multipler value, PLL postscaler , RC divisor SYSTEMConfigPerformance(72000000L); // configure the FRC for divide-by-8(1 MHz) OSCConfig( OSC_FRC_DIV, 0, 0, OSC_FRC_POST_8 ); // Configure the PB bus to run at 1/4 the CPU frequency mOSCSetPBDIV( OSC_PB_DIV_4 ); while (1) { // *** insert user code *** } }
Listato 1 |
#include <plib.h> unsigned int channel4; // conversion result // as read from result buffer unsigned int channel5; // conversion result // as read from result buffer unsigned int offset; // buffer offset to point // to the base of the idle buffer int main(void) { // Configure the device // for maximum performance. SYSTEMConfigPerformance(72000000L); // configure and enable the ADC CloseADC10(); // ensure the ADC is off before // setting the configuration // configure to sample AN4 & AN5 // Definition of the parameter of // the system: PARAM1, PARAM2… SetChanADC10( ADC_CH0_NEG_SAMPLEA_NVREF | ADC_CH0_POS_SAMPLEA_ AN4 | ADC_CH0_NEG_SAMPLEB_NVREF | ADC_CH0_POS_SAMPLEB_ AN5); // configure to sample AN4 & AN5 OpenADC10( PARAM1, PARAM2, PARAM3, PARAM4, PARAM5 ); // configure ADC using parameter // define above EnableADC10(); // Enable the ADC while ( ! mAD1GetIntFlag() ) { } // wait for the first conversion to complete so there will be vaild data in ADC result registers // the results of the conversions // are available in channel4 // and channel5 while (1) { offset = 8 * ((~ReadActiveBufferADC10() & 0x01)); // determine which buffer is idle // and create an offset channel4 = ReadADC10(offset); // read the result of channel 4 conversion from the idle buffer channel5 = ReadADC10(offset + 1); // read the result of channel 5 // conversion from the idle buffer } return 0; }
Listato 2 |

In calce all’articolo viene indicata una frequenza di clock massima di 72MHz per i PIC32… tuttavia i la serie MZ può arrivare tranquillamente a 200MHz, con una potenza di calcolo di 330 DMIPS, (esempio il PIC32MZ2048EFM100 ). 😉
Si, la serie MZ è più recente. Grazie della segnalazione 🙂
Grazie per la segnalazione, abbiamo provveduto a modificare.
Per MPLAB vi segnalo questi due link interessanti http://it.emcelettronica.com/mplab-xpress-ide-cloud-based-con-raspberry-pi e http://it.emcelettronica.com/howto-debug-con-mplab
La seriePIC32MZ…EFH arriva a 252MHz e 415 DMIPS
Esatto….per questo avevo scritto “tranquillamente” 😉
252 é il limite elettrico massimo per la famiglia. Ad ogni modo, sono delle ottime macchine. La serie Mx aveva qualche bug…(la stessa microchip sconsiglia di usarla per nuovi progetti)…questa Mz invece funziona egregiamente e con prestazioni finalmente interessanti per un 32bit. Saluti 🙂
Ciao.
Scusate ma l’MPLAB non è stato sostituito da MPLAB-X?
credo sia un pò obsoleto parlare ancora di MPLAB ..
Ci sono molti che usano ancora MPLAB. L’idea implementativa comunque può essere anche esportata nelle versioni successive.