PIC32 e l’ambiente MPLAB

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

8 Commenti

  1. mattimat 11 febbraio 2017
  2. Ivan.Pascolo 12 febbraio 2017
  3. mattimat 13 febbraio 2017
  4. plotino plotino 14 febbraio 2017

Scrivi un commento

ESPertino è la nuova scheda per IoT compatibile ARDUINO.
Scopri come averla GRATIS!