Scopriamo il PIC 24F microcontroller a 16bit di Microchip

Microcontrollori PIC24F

Microchip, azienda leader nel settore della produzione di microcontrollori ad 8 bit, già nel corso dell’anno 2003 si era lanciata nel mondo dei 16 bit, con l’annuncio della famiglia dsPIC30F, un microcontrollore a 16 bit unito ad un core DSP. Poi, a due anni di distanza, l’atteso annuncio del puro microcontrollore a 16 bit, la cui famiglia prende il nome di PIC24.

Quando, nel 2003, incontrammo nella line card di Microchip i nuovi oggetti a 16 chiamati dsPIC30F, integranti un core DSP, ci chiedemmo per quanto avremmo dovuto attendere l’uscita del puro microcontrollore. Ebbene l’attesa è terminata il 10 Ottobre 2005, giorno in cui la multinazionale di Chandler ha rilasciato in produzione 22 dispositivi, divisi in due sotto famiglie, la 24F (macchine a 16 MIPS) e la 24H (macchine a 40 MIPS).

Analisi della famiglia PIC24F

Come per le precedenti famiglie, anche il PIC24F è un microcontrollore RISC. Ha un core a 16 bit, una potenza di calcolo di 16MIPS (Milioni  di Istruzioni Per Secondo), facilità di trattamento degli I/O, molte periferiche (si arriva al 100 pin!), interrupt molto duttili e programmabilità in linguaggio C tramite i più comuni compilatori. A proposito di compilatori, la figura 1 mostra una comparazione tra il C30 (il compilatore proprietario Microchip) ed altri compilatori di terze parti.

Figura 1. Confronto fra i compilatori concorrenti e il C30

Figura 1. Confronto fra i compilatori concorrenti e il C30

I settori di mercato interessati dal rilascio dei nuovi dispositivi sono quello del consumer (sistemi di sicurezza, pannelli di controllo, telecomandi), quello delle comunicazioni (componenti per reti ottiche), quello delle misure e strumentazione (terminali remoti, palmari di controllo, POS, strumenti medicali) e, per finire, il mercato storico di Microchip, ossia l’industriale (sistemi di automazione, building monitor, controllo accessi, sicurezza, sistemi di accesso, automazioni per ufficio). Anche per la famiglia PIC24F, i tool di sviluppo ufficiali Microchip sono fondamentalmente l’ambiente di sviluppo MPLAB® IDE e il classico ICD2, ormai presente su tutti  i banchi di lavoro di chi utilizza Microchip. A questo si è aggiunta una Demo board (#DM240001) specifica per il mondo 16 bit di Microchip (figura 2).

Figura 2. La Demo Board DM240001

Figura 2. La Demo Board DM240001

Il Microcontrollore PIC24FJ64GA006

La cosa migliore nell’analisi di una nuova famiglia di microcontrollori,  è scegliere il modello base e sviscerarne le caratteristiche, per creare una base di conoscenze applicabile poi al resto della famiglia. Ecco quindi il PIC24FJ64GA006, che è fornito di 64Kbyte di Flash program memory, (riprogrammabile  fino a 1.000 volte) e 8Kbytes di RAM. La FLASH ha una larghezza di 24 bit, ragion per cui lo spazio massimo indirizzabile equivale a 223, ovvero 8Mbyte. L’architettura è la classica Harvard modificata (adottata da sempre in Microchip)  in cui la memoria di programma  e quella dati  sono fisicamente distinte l’una dall’altra e sono interfacciate da un bus alle periferiche di sistema. Questa architettura consente di avere un microcontrollore con Program Memory di lunghezza ottimizzata alle istruzioni, che sono in numero relativamente limitato  (il microcontrollore  è infatti un RISC, Reduced Instruction  Set Controller). Il case è un 64 pin TQFP, ma i pin effettivamente utilizzabili sono 53. La tensione di funzionamento va da 2 a 3,6Volt e non è più di 5 Volt. Questo fatto è dovuto alla scelta specifica di Microchip di realizzare queste famiglie in tecnologia Standard Flash, ossia su supporto di silicio a basso costo ma con performance limitate (per l’appunto 3,3Vdc, assenza di una pompa di carica e quindi assenza di una memoria EEPROM a bordo, numero limitato a 1.000 a 10.000 di cicli di cancellazione e scrittura). Come per i componenti della famiglia dsPIC30F, anche il PIC24FJ64GA006 si caratterizza per l’elevato numero di periferiche di interfaccia ed acquisizione. Dalla figura 4 si evince la presenza, nella famiglia PIC24F, di Timers a 16 bit (nel GA006 sono ben 5, indipendenti fra loro), di un Watchdog, per garantire la corretta esecuzione del flusso di  programma, di un AD Converter con Frequenza di campionamento di 500 Ksamples/secondo, profondità di 10 bit, e 16 canali.

Figura 3. Caratteristiche del PIC24FJ64GA006

Figura 3. Caratteristiche del PIC24FJ64GA006

Figura 4. Architettura della Famiglia PIC24

Figura 4. Architettura della Famiglia PIC24

Ecco un esempio di cosa si può fare con un ADC di questo tipo:

Esempio di utilizzo di ADC
Con una tensione di riferimento per l’ADC Vref=3,3Vdc possono essere realizzate acquisizioni con le seguenti caratteristiche:

  • 1 campione ogni 2 microsecondi;
  • Granularità di tensione sensibile pari a 3,22 mV;
  • Campionamento automatico impostabile da software.

Oltre al convertitore analogico digitale, è disponibile un comparatore con un modulo  a due ingressi. Il PIC24FJ64GA006 è anche equipaggiato con un Real Time Clock Calendar, col quale è possibile avere un riferimento preciso dell’ora e della data attuale, con supporto preciso anche per gli anni bisestili. Come è facile intuire, questa periferica risulterà indispensabile  a  chiunque  debba  realizzare un  oggetto  con display di interfaccia utente (telecomandi, cronotermostati, pannelli ecc..). Le porte seriali sono 2, indipendenti e configurabili come porte IrDA, sempre nell’ottica di realizzare sistemi di puntamento remoto come telecomandi. La altre periferiche seriali disponibili a bordo sono due SPI e due I2C, assolutamente indipendenti fra loro (questa è una importante differenza rispetto alle famiglie precedenti, come la 18F, in cui SPI e I2C erano multiplexate attraverso il gestore seriale MSSP). Oltre a questo è addirittura supportata una Parallel Master Port, per comunicazioni tramite porta parallela (stampanti, sistemi di trasmissione dati). Altra caratteristica importantissima di questo dispositivo è la tecnologia realizzativa nanoWatt©, che consente di ottenere consumi inferiori al mA in regime di Idle mode. Oltre a questa caratteristica, la tecnologia nanoWatt© implica anche la presenza di un oscillatore interno, che consente una massima frequenza di lavoro di 8 MHz. È presente anche una periferica di interfaccia e programmazione di tipo JTAG, che si affianca alla già presente e nota ICSP™, che da sempre contraddistingue i microcontrollori flash Microchip. Architetturalmente,  il dispositivo si caratterizza anche per la presenza di 16 working register general purpose, che possono essere utilizzati per interfacciare il nostro codice alle periferiche citate. La gestione delle interruzioni si basa su una tabella (Interrupt Vector Table), in cui le varie richieste di interruzione sono gestite a stack, sia che esse siano generate a livello macchina per problemi o situazione di emergenza (TRAP), sia che siano generate da software o da fonti esterne (INT classici). La figura 5 mostra la tabella dei vettori di interrupt.

Figura 5 La tabella di vettorizzazione degli interrupt

Figura 5 La tabella di vettorizzazione degli interrupt

Di particolare interesse sono le TRAP, che consentono appunto di mantenere monitorata l’attività del sistema e le eventuali problematiche che vengano ad insorgere nel normale funzionamento.  Nel seguito un esempio.

Esempio di intervento di una TRAP
Problema  elettrico  all’oscillatore  esterno  del micro (es. 20MHZ)

  1. Intervento della TRAP, la quale interrompe  il flusso di  programma  e lancia una routine  di gestione dell’emergenza;
  2. Possibilità di commutare dall’oscillatore esterno a quello interno, mantenendo così in vita il sistema, seppur a frequenza di lavoro ridotta;
  3. Avviso al sistema del problema avvenuto tramite la gestione di un flag.

Da ultimo, è interessante porre l’attenzione su alcune altre caratteristiche, denominate Special Function, che caratterizzano e distinguono questo componente e la sua famiglia dalle altre famiglie Microchip e, ancor di più, dagli altri componenti presenti nel medesimo settore di mercato. Innanzitutto, dal momento che la Flash, come citato, è di tipo standard, non si ha la possibilità di utilizzare una pompa di carica interna. Questo fatto preclude la possibilità di realizzare una EEPROM interna, ma non certo la possibilità di memorizzare dati in maniera permanente. Lo stratagemma, peraltro comune nei microcontrollori  di questa fascia di mercato, consiste nel riservare una porzione di Flash per il salvataggio dei dati. Il PIC24FJ64GA006, ad esempio, consente di riservare una porzione di Flash, di abilitare la scrittura della program memory anche attraverso JTAG e di proteggere da successive letture la flash stessa. Questa caratteristica risulta molto utile nel momento in cui il firmware programmato sul dispositivo sia critico dal punto di vista del know how. Queste informazioni  sono salvate in una riga di Program Memory protetta, denominata Flash Configuration Word. Come detto, la lunghezza di una riga di Program Memory è di 24 bit, ragion per cui si possono sfruttare sino a 24 Flag all’interno di questo registro di configurazione. Ad oggi, come si vede in figura 6, sono sfruttati solo 12 bit.

Figura 6. Il registro di configurazione della Flash Program Memory

Figura 6. Il registro di configurazione della Flash Program Memory

Una caratteristica davvero interessante riguarda  il Watchdog timer il quale, oltre a svolgere la sua abituale funzione di “Cane da Guardia” del sistema (per evitare che il flusso di programma vada in punti non previsti o in loop senza uscita) può svolgere anche l’interessantissima funzione di timer interno per risvegliare il micro quando è in sleep mode. In pratica, si programma il timer indicando il numero di cicli macchina da attendere prima di risvegliare il dispositivo e poi si pone in sleep il microcontrollore.  La struttura logica del blocco è di conseguenza quella descritta in figura 7.

Figura 7. Schema logico del blocco watchdog

Figura 7.  Schema logico del blocco watchdog

Per quanto visto, il microcontrollore PIC24FJ64GA006,  con  i  suoi 16  MIPS di  potenza computazionale e i suoi 16 bit di larghezza di bus, uniti all’elevato numero di periferiche e alle prestazioni particolarmente perfezionate dei suoi registri speciali, si configura come un oggetto di elevata versatilità e dalle prestazioni davvero performanti. Da ultimo, volendo effettuare considerazioni a livello più prettamente progettuale, ci si potrebbe chiedere quali siano i vantaggi derivanti dalla scelta di una macchina di  questo tipo, magari raffrontata con un PIC18F di fascia alta. Innanzitutto, come già ricordato, la famiglia PIC18F rimane a 8 bit, ragion per cui la PIC24F consente di utilizzare un bus di memoria con larghezza di 16 bit, con evidente ottimizzazione delle prestazioni e del troughput dei dati. In secondo luogo, l’elevata capacità computazionale consente una generale ottimizzazione della gestione delle periferiche, giacché si possono gestire con più rapidità e con maggior capillarità una quantità di dati senza dubbio maggiore. Queste caratteristiche risultano evidenti nell’esplosione del numero di periferiche (5 timers, 5 CCP, 5 Input capture, UART, SPI e I2C tutti indipendenti  fra loro sono una assoluta novità).  Altra caratteristica davvero rilevante di questi oggetti è la possibilità di azionare in cascata i timer a 16 bit, rendendoli quindi capaci di  effettuare conteggi con profondità di  32  bit. Questo chiaramente rende possibile eseguire controlli di durata molto estesa o di elevata raffinazione. In figura 8 sono riportate nel dettaglio le periferiche di comunicazione, unite alle altre caratteristiche peculiari di tutta la famiglia.

MEMORY
Up to 256 KB self-programmable Flash
Up to 16 KB RAM
DMA to internal peripherals with 2 KB dual port RAM
Parallel Master Port (PMP) interface to external data memory and peripherals
COMMUNICATIONS KEY FEATURES
UART Asynchronous channel supporting LIN, IrDA®, RS.232, RS-485 with 4-deep FIFO buffer
SPI™ High-speed synchronous channel including 8-deep FIFO buffer
PC™ Support Multi-Master/Slave mode with 7-bit/10-bit addressing
CAN with buffer, filters Automotive/industrial  standard, includes 8 transit and 32 receive buffers
TIMERS/CONTROL KEY FEATURES
16-bit timers, cascadable to 32-bit Cascadable to 32-bit, up/down,  with multiple clock sources including a low-power 32 kHz oscillator, trigger for A/D conversion
Input Capture (IC) The highly configurable Input Capture, Output Compare and PWM modules are easily configured with the Timer modules to generate waveforms and monitor external events
Output Compare (OC)
Pulse Width Modulation  (PWM)
Watchdog Timer (WDT) On-chip low-power RC oscillator, post-scaler for wide range of time-out values
Real Time Clock Calendar (RTCC) Minimal software support required, multiple clock source options and calibration
ANALOG KEY FEATURES
10/12-bit  A/D converter Up to 32 channels on PIC24H
10-bit A/D converter Up to 16 channels on PIC24F
Comparators With on-chip programmable reference voltage
Integrated voltage Regulator with Power-on Reset and Brown-out Reset Power-on Reset and Brown-out Reset provide stable system operation

Per terminare, si ponga l’attenzione alla possibilità di interfacciare il microcontrollore della famiglia PIC24F con una memoria esterna, accedendo in parallelo a quest’ultima tramite la periferica PMP, Parallel Master Port. Si tenga presente che la funzionalità PMP Parallel Master Port è presente solo nella famiglia PIC24F, mentre il più evoluto Direct Memory Access è presente solo nella PIC24H, fatto questo che giustifica il costo più elevato dei PIC24H rispetto ai “fratelli” PIC24F. Dalle analisi e dalle considerazioni effettuate, è possibile estrapolare che questi oggetti sono certamente da selezionare nel momento in cui si intraprende la progettazione di un sistema evoluto, che debba garantire una certa profondità  di calcolo o debba interfacciarsi efficacemente con numerose periferiche esterne, oppure lavorare con protocolli e routine di sicurezza. Alcuni esempi di applicazioni dove questi oggetti stanno già oggi prendendo piede sono gli sportelli bancomat, i controlli industriali evoluti, le applicazioni medicali di monitoristica ed analisi. Gli utilizzatori finali, effettuate le dovute analisi di laboratorio e raccolti  i risultati  dal campo, come sempre accade, daranno poi il giudizio definitivo su questi oggetti e sulle loro possibili applicazioni. A fondo pagina sono riportate due tabelle che riassumono le caratteristiche dei componenti delle famiglie PIC24F e PIC24H. Per informazioni dettagliate si rimanda al datasheet dei singoli device disponibili sul sito Microchip.

22

23

Leggi anche:

Un sistema modulare per lo sviluppo su architetture a microcontrollore da 16 o 32 bit

STAMPA     Tags:,

6 Commenti

  1. Maurizio Di Paolo Emilio Maurizio 11 novembre 2015
  2. Emanuele Bonanni Emanuele 11 novembre 2015
  3. Massimo Petrillo 11 dicembre 2015

Scrivi un commento

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