
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.
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).
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.
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:
|
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.
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)
|
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.
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.
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.
Leggi anche:
Un sistema modulare per lo sviluppo su architetture a microcontrollore da 16 o 32 bit

Articolo di guida molto interessante! Complimenti!
I microcontrollori della famiglia PIC24 sono la naturale evoluzione dei famosi PIC16 e PIC18.
I 16 bit da sempre si sono collocati in segmenti di mercato strani. Da una parte i PIC18 e gli 8 bit sempre più performanti e dall’altra i micro a 32bit sempre più economici. Ritengo sia una ottima famiglia (feci dei corsi in una azienda su questi micro) con una semplicità di utilizzo come fiore all’occhiello, però non deve essere sottovalutato l’avanzamento degli ARM verso il basso, con il CORTEX M0+
Ciao, sono un nuovo abbonato e vorrei una info. Premetto che sono un hobbista e vorrei imparare a conosce e programmare i microcontrollori. Quando mi sono abbanato, ho letto che c’e anche il corso sui microcontrollori. Potete indicarmi dove trovo questo corso. Grazie
Ciao Massimo,
fa parte degli EOS-Book che trovi nel menu in alto, sulla destra EOS-Book vicino a CATEGORIE.
Ecco il link diretto: http://it.emcelettronica.com/eos-book-2-corso-di-microprogrammazione-tutti
Ottimo corso. Consiglio di leggere attentamente e condividere dubbi e considerazioni.
Grazie…..lo studierò con attenzione.