Tutorials - PIC

 

Nuova generazione di periferiche
per i PIC a 8 bit


Microchip è sempre stata in azione per ottenere nuovi prodotti che riducano il costo del progetto, con una forte integrazione di unità periferiche particolari.
Così, si trovano PIC con controller LCD a segmenti e grafici, DAC, ADC a 12 bit, PWM avanzati, comparatori multipli, timer multipli,  EUSART e MSSP multipli, interfacce LAN, voltage detector, ecc.

Tutte queste periferiche sono una estensione o variazione delle classiche presenti in ogni microcontroller oppure sono di immediata comprensione, sia per la funzione che per l' uso, ricalcando comunque modelli sufficientemente noti. 

Però, oltre a queste funzioni già presenti da tempo più o meno lungo e implementate in molti componenti delle varie famiglie, si stanno evolvendo nuove generazioni di periferiche con lo scopo di ridurre ulteriormente la quantità di hardware esterno da aggiungere al microcontroller per sostenere l' applicazione.

Allo stato attuale, Microchip ha introdotto nei PIC a 8 bit una serie impressionante di nuovi moduli, principalmente nei componenti PIC10F(LF)32X and PIC1XF(LF), in package da 6 a 20 pin.

Questo dato origine ad una famiglia di PIC denominata 

Enhanced-Mid Range

della quale fanno parte i PIC12F e i PIC16F1, con interessanti funzioni, prima non presenti  nei mid-range (da qui il nome di Enhanced Mid Range), che hanno anche lo scopo di rendere più efficiente l' uso di compilatori C.

Si tratta di componenti 8 bit in cui sono state introdotte numerose innovazioni:

  • Memoria programma Flash fino a 56 k

  • RAM fino a 4 k

  • 256 bytes di EEPROM

  • due puntatori indiretti

  • tecnologia XLP nelle versioni "LF", con correnti di sleed di 90 nA, WDT corrente di 500 nA, oscillatore di Timer1 da 600 nA, tutto con alimentazione 1.8V (5.5 V max.)

  • oscillatore interno ad alta frequenza (16-32 MHz)

  • oscillatore interno a 32 MHz

  • latency dell' interrupt ridotta a 3-4 cicli per interrupt sincroni

  • set di istruzioni esteso a 49 opcodes con enhanced shift, enhanced aritmetic, fast banking, relative branch

  • save e restore dell' ambiente all' interrupt

Il core diventa assai complesso, con numerose variazioni rispetto a quello che sono stati finora i Mid-range.

In particolare:
  • i registro BSR per puntare i banchi
     
  • 2 FSR
     
  • una complessa struttura dell' oscillatore, con la possibilità di operare senza componenti esterni da 32kHz fino a 32MHz, in 11 step. 
    Startup a due velocità e fail safe monitor.
    Clock Reference Module con slew rate programmabile
     
  • 16 bytes di Common RAM accessibile da ogni banco
     
  • l' accesso lineare alla RAM, in modo non banked, attraverso i puntatori FSR
     
  • 12 core register accessibili da ogni banco
  • stack a 16 livello con Overflow e Underflow
  • save e restore dell' ambiente di interrupt con le locazioni di shadow accessibili
     
  • BOR controllabile da software

Particolarmente interessanti le nuove istruzioni, alcune delle quali sono già implementate nei PIC18F, ma altre sono del tutto nuove:

ASRF Arithmetic shift register
BRA Relative Branch (Always)
BRW Relative Branch with W
CALLW Call with W
LSLF Logical Shift Left
LSRF Logical Shift Right
MOVLP Move INDFn to W
MOVIW Move Literal to PCLATH
MOVLB Move Literal to BSR

MOVWI

Move W to INDFn
RESET  Software Reset
SUBWFB Subtract W from f with Borrow

In relazione alle nuove istruzione va rilevato che l' indirizzamento dei banchi non avviene più con RP1:0, ma con un registro apposito BSR e l' istruzione MOVLB.

L''istruzione BRW rende decisamente più semplici le classiche tabelle RETLW: 

constants
    BRW         ;Add Index in W to program counter
                ; to
select data
    RETLW DATA0 ;Index0 data
    RETLW DATA1 ;Index1 data
    RETLW DATA2 
    RETLW DATA3

my_function
                 ;… LOTS OF CODE…
    MOVLW DATA_INDEX
   call  constants
;… THE CONSTANT IS IN W

Altra facilitazione, mediata dai PIC18F, è il salvataggio automatico del contesto alla chiamata interrupt.

Altro fattore innovativo è dato dall' accesso ai registri LATx, similmente ai PIC18F, il che consente di eliminare il problema dell' R-M-W che affliggeva Base-line e Mid-range.

Inoltre, i chip sono dotati di un elevato numero di nuove periferiche.


Le periferiche degli Enhanced Mid-Range

Le periferiche base sono quelle già ben collaudate, anche in più moduli per chip:

  • Moduli di comunicazione EUSART e MSSP multipli

  • CCP/ECCP

  • ADC e DAC

  • Timer multipli

  • PWM multipli con timer indipendenti

  • Driver LCD fino a 96 segmenti

  • Comparatori

e, oltre a questi moduli standard i chip integrano alcune periferiche nuove:

  • CLC - Configurable Logic Cell

  • CWG - Complementary Wave form generator

  • COG - Complementary Output Generator

  • NCO - Numerically Controlled Oscillator

  • PSMC - Programmable Switch Mode Controller

  • TI - Temperature Indicator

  • DSM - Digital Signal Modulator

  • T1G - Timer1 Gate

  • SR - Set Reset latch

Alla lista di queste periferiche, la cui implementazione è per ora limitata a poche famiglie di chip, possiamo aggiungere anche periferiche già implementate da tempo maggiore, ma ancora ampiamente sconosciute a gran parte degli utilizzatori, ovvero:

  • CTMUCharge Time Measurement Unit

  • FVR - Fixed Voltage Reference

  • IVR - Internal Voltage Regulator

La pagina degli Enhanced Mid range di Microchip permette di avere una lista completa dei dispositivi della famiglia e delle loro caratteristiche

Vediamo di dare una breve panoramica orientativa su queste funzioni.


CLC - Configurable Logic Cell

In varie situazioni è possibile che si renda necessario, o che sia utile, aggiungere un qualche genere di logica booleana esternamente al microcontroller.
Così, capita di avere la necessità di condizionare l' ingresso di un contatore allo stato di alcuni input o dell' uscita di moduli di periferica; oppure una uscita va settata solo a seguito dello stato logico di comparatori e ingressi vari o un interrupt va generato in base ad una certa logica.

Questi problemi si risolvono in due modi: aggiungendo porte logiche esterne al microcontroller o utilizzando il software per elaborare le strutture logiche necessarie.
Nel primo caso, si ha un costo ed una complicazione circuitale aggiuntivi. Nel secondo si ha la necessità di utilizzare cicli macchina per eseguire la logica; e questo, oltre a consumare risorse del processore, richiede un certo tempo per l'esecuzione, sopratutto se la logica non è elementare.

Per aiutare l' utente a risolvere queste situazioni, Microchip ha deciso di implementare un modulo detto Configurable Logic Cell (CLC) che contiene:

  • una serie di funzioni booleane (AND, OR, XOR, NOT, NAND, NOR, XNOR)
  • delle funzioni di flip flop (D, JK, D latch, SR latch)
Un particolare non secondario è che gli ingressi della funzioni possono essere sia alcuni pin sia l' uscita di altri moduli.

Egualmente, le uscite delle funzioni possono essere indirizzate ad alcuni pin oppure ad un ingresso di un altro modulo.

Inoltre il modulo è una sorgente di interrupt.

Data la programmabilità di ogni parte, che renderebbe molto laborioso il lavoro dell' utente, Microchip offre una CLC Configuration GUI con che semplice e rende immediata la configurazione della cella logica.

A lato, una schermata del CLC Configuration GUI, scaricabile gratuitamente dal sito di Microchip.

Si nota la serie di caselle dove è possibile impostare le sorgenti di ingresso, di uscita e le caratteristiche della logica.

Il vantaggio in alcune applicazioni è evidente:

  • viene esclusa la necessità di "glue logic" esterna, con risparmio di costo e spazio
  • da' la possibilità di controllare da software la logica
  • riduce il volume del codice e libera risorse per la CPU rispetto ad una soluzione in cui la logica combinatoria viene eseguita dal programma e non dall' hardware dedicato.
  • la logica è eseguita in hardware e quindi ha tempi di risposta praticamente immediati

Dove CLC è utile? In tutti casi dove è richiesto:

  • condizionamento logico dei segnali di ingresso e di uscita
  • condizionamento logico di sorgenti di interrupt
  • modulazione di dati
  • sequenziatori di eventi
  • codifica (ad esempio Manchester e IrDA)
  • alimentatori switch mode
  • regolatori boost con feedback
  • fast pulse detector
  • quadrature encoder

Nella realizzazione, ad esempio, di uno shifted data modulator, dove l' ingresso della logica è l' uscita PR2 del CCP controllato da Timer2 e l' uscita della logica è resa sul pin CLC2OUT.

Le possibilità di programmazione della logica sono varie:  ad esempio, per il modulo CLC del PIC10F320, queste sono le funzioni impostabili:

Va notato che CLC non vuole né ha lo scopo di sostituire una logica complessa come quella ottenibile da macro cell array, come gli FCPGA
Le funzioni di CLC sono relativamente limitate e intese, come detto, a sostituire con una esecuzione hardware veloce quanto sarebbe stato altrimenti fatto dal software.

Al momento questa funzione è disponibile su PIC10F32x e PIC1xF150x.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:


COMPLEMENTARY WAVE FORM GENERATOR (CWG)
COMPLEMENTARY OUTPUT GENERATOR (COG)

Nelle applicazioni di controllo motori, SMPS, carica batterie, PFC, amplificatori classe D, gestione di lampade fluorescenti, è indispensabile disporre di generatori di onda complementari, in cui siano programmabili i vari parametri di non sovrapposizione.

Una applicazione tipica è quella relativa al comando di half-bridge per il controllo di un motore. 

Il modulo CWG provvede alla dead band programmabile e all' auto shut-down, comandando i gate dei due MOSFET a partire dal segnale di uscita del modulo PWM. 

Si tratta, dunque, essenzialmente di una estensione del modulo ECCP/PWM.

Un buck converter per alimentare illuminazione a LED può essere realizzato semplicemente con l' ausilio di questi moduli.

In combinazione con la sorgente di riferimento interna (FVR) e un comparatore si implementa facilmente la limitazione della corrente nei LED..

L' uscita del modulo è interamente programmabile e l' ingresso può essere dipendente dall' uscita dei comparatori o dal modulo CCP/PWM.

Il modulo consente:

  1. filtraggio dei transienti indesiderati

  2. controllo di fase per il ritardo in uscita

  3. tempo di salita

  4. e tempo di discesa programmabili in modo indipendente

Al momento questa funzione è disponibile su PIC10F32x, 12F752, 1xF150x.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:


PROGRAMMABLE SWITCH MODE CONTROLLER (PSMC)

Sempre in relazione con una gestione avanzata delle uscite PWM, è stato introdotto questo modulo PSMC che può:
  • gestire diverse sorgenti di clock (sistema, esterno, indipendente a 64 MHz) 
  • dipende da sorgenti diverse, pin esterni o comparatori
  • gestisce PWM a 16 bit
  • dispone di polarity control, auto sht-down e auto restart
  • comanda uscite push/pull, pulse skipping, 3-phase, a duty cycle fisso e per motori a spazzole con inversione di direzione

Il modulo prevede:

  1. filtraggio dei transienti indesiderati

  2. controllo di fase per il ritardo in uscita

  3. tempo di salita

  4. e tempo di discesa programmabili in modo indipendente

Ovviamente anche qui le applicazioni riguardano il mondo del PWM avanzato su motori, sia trifase che BLDC, in continua o a induzione, regolazioni lampade e LED, PFC, SMPS, DC/DC converter, monitor per batterie, carica batterie, sensori, condizionamento di segnali, ecc.
Ecco, ad esempio, un buck converter per illuminazione a LED con controllo della corrente.

Il clock di ingresso deriva da un oscillatore a 64 MHz, mentre attraverso l' uso del DAC e dei comparatori si implementa facilmente la limitazione della corrente.

Attualmente il modulo PSMC è disponibile sui PIC16F178x.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:


NUMERICALLY CONTROLLED OSCILLATOR (NCO)

Si tratta di attribuire all' oscillatore la possibilità di un controllo lineare della frequenza.
NCO è un temporizzatore che usa l'overflow della somma di un valore di somma per dividere la frequenza di ingresso. Il vantaggio del metodo di somma su un semplice timer incrementale è che la risoluzione della divisione non varia col valore del divisore. NCO diventa molto utile per applicazioni che richiedono accuratezza di frequenza e fine risoluzione ad un duty cycle fisso.

Il controllo può avvenire con una risoluzione a 20 bit, su una sorgente indipendente a 16 MHz.
Con 16 bit di controllo numerico è possibile una uscita a 500 kHz con 15 Hz per step.
Inoltre il modulo NCO consente di avere un duty cycle fisso al 50% e una pulse frequency modulation (PFM).

Anche qui le applicazioni sono varie, dal controllo di illuminazione a LED o fluorescente, alimentatori SMPS, controllo di motori, amplificatori classe D, misura a ultrasuoni, ecc.
Ad esempio, ecco l' applicazione del modulo NCO per il controllo lineare dell' accensione e della luminosità di una lampada fluorescente:

Al momento questa funzione è disponibile su PIC10F32x, 1xF150x.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:


TEMPERATURE INDICATOR

Per la sicurezza dell' applicazione, è buona cosa tenere sotto controllo la temperatura raggiunta dal package del microcontroller, sopratutto quando lavora in ambienti o applicazioni critiche (ma non solo, come vediamo più avanti).
A questo scopo Microchip ha integrato un modo di misura della temperatura del microcontroller, in un range da -40 a +85 C (range commerciale).

Il modulo è disabilitabile per ridurre il consumo e programmabile per diverse modalità di funzionamento.

L' uscita del sensore termometrico è collegata direttamente ad un ingresso interno dell' ADC e non sottrae pin alle misure esterne. 

Il sensore di temperatura è integrato nel die di silicio e quindi misura la sua temperatura, generando una tensione proporzionale e che può anche essere considerata la temperatura dell' apparecchiatura.
Il circuito si presta bene ad essere usato come un rilevatore di soglia di temperatura o come un indicatore di temperatura più accurato, in quanto calibrabile: una calibratura di one-point permette al circuito di indicare la temperatura che circonda da vicino il chip. Una calibratura di a due punti permette al circuito una misura più accurata.

Il circuito di senso di temperatura è integrato col modulo di Referenza (FVR) di Tensione Fisso (ved. più avanti).

Il circuito è disabilitabile per annullarne il consumo di corrente. 

Il circuito opera in un range alto o basso. Il range alto è selezionato chiudendo il TSRING e offre una tensione più ampia, adatta per decidere un livello, ma occorre una Vdd sufficientemente alta. 
Il range basso genera una tensione più bassa, ma richiede anche una Vdd minore.

L' uscita del modulo è diretta ad un ingresso interno dell' ADC e quindi non consuma pin esterni di misura analogica.

Una interessante applicazione è quella di linearizzare l' oscillatore del clock di un RTC.

La frequenza del cristallo varia con la temperatura secondo una curva fornita dal costruttore (linea blu).

Misurando la temperatura e correggendo la frequenza attraverso una lookup table o altro algoritmo è possibile ridurre la deriva dell' oscillatore (linea viola) rispetto alla temperatura, ottenendo errori nella misura del tempo inferiori a pochi secondi/mese.

Attualmente il modulo Temperature Indicator è disponibile sui PIC16F178x. PIC10F32X, PIC16F72X, PIC1XF15XX, PIC16(L)F19XX, PIC16F182X, PIC16F178X, PIC18FXXK22.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:


DATA SIGNAL MODULATOR (DSM)

Nella trasmissione dei dati è sovente necessario modulare la portante. Questo modulo consente di creare bit pattern personalizzati o standard, come quelli usati nelle telecomunicazioni.

Il segnale di ingresso può essere modulato da:
  • un pin esterno
  • il clock di riferimento
  • l' uscita PWM
  • l' uscita UART/SPI/I2C
  • i comparatori
  • un bit di un registro

Le applicazioni tipiche riguardano comunicazioni IrDA o modem con:

  • ASK - Amplitude shift keyng
  • FSK - Frequency Shift keying
  • PSK - Phase Shift Keying
  • stream IrDA

come pure un qualsiasi genere di modulazione custom creata dall' utente.

Attualmente il modulo DSM è disponibile sui PIC16F182x/4x.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:

 


TIMER 1 GATE (T1G)

Allo scopo di misurare la durata di un impulso in ingresso in modo semplice, è stato introdotto un gate per il timer 1.  Il gate avvia e arresta il TMR1, senza la necessità di aggiungere una porta logica esterna al microcontroller.
Gate possibili sono:

  • l' uscita dei comparatori
  • l' uscita del TMR0
  • un pin esterno

mentre il clock è derivabile dall' oscillatore interno o dal Timer1 clock.

E' possibile l' acquisizione e l' attivazione dell' interrupt :
  1. rising-to-rising edge
  2. falling-to-falling edge
  3. falling-to-rising edge
  4. rising-to-falling edge
  5. interrupt al completamento

Con questo sistema è possibile misurare la durata di impulsi esterni o interni senza l'aggiunta di gate esterni.

 

Le applicazioni tipiche sono: la misura di frequenza, periodo e tempo, conversioni ADC delta sigma, decodifica PWM, current sharing in SMPS, ecc.

Attualmente il modulo T1G è disponibile sui PIC12F15XX, PIC16F61X Family, PIC16F690 Family, PIC16F72X,
PIC16F18XX, PIC16F88X, PIC16F19XX, PIC18FXXK22.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:

 


SET RESET LATCH (SR)

La sua funzione è analoga a quella del ben noto 555, nel senso che può eseguire le operazioni possibili a questo componente

E' internamente collegato ai comparatori e dispone di selezioni multiple per il set/reset:
  • uscite dei comparatori
  • pin esterno
  • clock programmabile
  • controllo da software

Inoltre l' uscita del latch può essere interna o su pin esterno.

La funzione SR è integrata con il modulo CLC.

Con questo modulo si possono implementare forme d'onda e oscillatori senza l' agginta di componenti esterni

Attualmente il modulo SR è disponibile sui PIC16F61X, PIC16F690 Family, PIC16F18XX, PIC16F88X, PIC16F19XX,  PIC18FXXK22, PIC18F1XK50.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip:


Charge Time Measurement Unit (CTMU)

Questo modulo è presente da tempo in tutte le famiglie di PIC. La sua funzione essenziale è quella di fornire una interfaccia con sistemi di tastiera a sfioramento.
La sostituzione del classico tasto meccanico con sistemi capacitivi consente di migliorare l' estetica dei prodotti, aumentarne l' affidabilità e la durata (niente parti meccaniche in movimento), semplificare e rendere più economica la realizzazione.

Un condensatore è semplicemente composto da due superfici conduttive elettricamente isolate e può essere realizzato semplicemente con tracce sul circuito stampato.
Il sensore di tocco capacitivo è un'area di rame del circuito stampato, accoppiata capacitivamente al piano di massa con una capacità parassita. Un materiale isolante sottile (vetro, plastica) è usato per la superficie di tocco dell' utente. 

Il contatto di un  dito sul sensore ne aumenta la capacità: misurando la differenza di questa capacità senza e con il contatto si potrà determinare il momento in cui l' utente tocca il tasto.

Non solo, sarà possibile anche determinare l' avvicinarsi della mano e predisporre l' apparecchio per l' analisi del futuro tasto premuto.

Le capacità da misurare sono dell' ordine dei pF e le variazioni sono altrettanto piccole, per cui occorre una raffinata tecnica, detta CVD-Capacitive Voltage Divider, che ricorre all' uso del modulo ADC presente sulla maggior parte dei PIC oppure ad un modulo dedicato, detto CTMU-Charge Time Measurement Unit, presente su molti PIC16/18/24/32.

Un microcontroller tipicamente dispone di molti canali CTMU, così che possono essere scandite tastiere a matrice, slide a più canali e le "swiping gesture" a cui ci hanno abituati i prodotti Apple.

Per sviluppare queste applicazioni, Microchip mette a disposizione, oltre ai microcontroller, tools di sviluppo e demo e librerie software.

Per le situazioni in cui il tocco capacitivo "diretto" risulta inapplicabile (ambienti industriali, uso di guanti, presenza di liquidi, necessità di isolamento, ecc.), è stata sviluppata una tecnica detta Metal Over Cap Technology.

L'unica differenza è la realizzazione meccanica. L' utente agisce su una superficie metallica a massa che costituisce una armatura del condensatore, mentre l' altra è costituita dalla piazzola sul circuito stampato.

La distanza tra le due è dell'ordine di 50-150 um e può essere realizzata semplicemente con il collante che unisce superficie esterna e circuito stampato.

La pressione del dito crea una deformazione dell' ordine dei 10 um e la variazione della capacità, che viene trattata come nel caso precedente, con gli stessi metodi e algoritmi.

In breve, il CTMU è una sorgente di corrente costante, con un preciso sistema di controllo digitale.

Il cuore del CTMU è, quindi, una precisa sorgente di corrente, progettata per offrire una riferimento continuo per le misure e il cui livello è programmabile, con la possibilità di aggiustare il valore in incrementi del 2%.

Il valore della corrente è programmabile in un range di più di quattro decadi, da 0.55 uA a 550 uA.

L' uso del CTMU, combinato con il modulo ADC e con i comparatori, consente una vasta gamma di applicazioni:

• Misura di capacità relativa e assoluto
• Misura relativa di Induttanza.
• Misura di resistenza relativa ed assoluta
• Misura di tempo di ad alta risoluzione. 

La configurazione del circuito dipende dal tipo di misurazione che si deve effettuare. Nel caso di misurazione di carica, la corrente e il tempo per cui è applicata al circuito sono fissi. Il valore di tensione letto dall'A/D è proporzionale  alla capacità del circuito. 

L'ammontare della carica misurato in coulomb è definito come corrente  moltiplicata per il tempo durante il quale la corrente fluisce. La carica è definita anche come la capacità in farad (C) moltiplicati per la tensione del circuito (V):

I x t = C x V

Il modulo CTMU fornisce una corrente fissa e conosciuta, mentre il convertitore di A/D è usato per misurare la tensione nell'equazione, lasciando due incognite:: capacità (C) e tempo (t). L'equazione può essere usata calcolare la capacità , dalla relazione:

C = (I x t) / V

usando un tempo fisso durante il quale la sorgente di corrente è applicata al circuito.

Nel caso di misurazione di tempo, la corrente, così come la capacità del circuito, è fissa. In questo caso, la tensione letta dall'A/D è poi funzione dell'ammontare del tempo.  L'equazione  vista sopra può essere usata calcolare il tempo, dal la relazione:

t = (C x V) / I

usando la capacità fissa e nota del circuito.
Se CTMU è usato come un ritardo di tempo, capacità e fonte di corrente, sono fisse e così pure la tensione al comparatore. Il ritardo di un segnale è determinato dal tempo di carica per far scattare il comparatore.

Mentre le funzioni di base sono utili per una ampia varietà di applicazioni fondamentali, esse si possono usare anche come base di funzioni più complesse. Microchip elenca ben 48 diversi ambiti in cui il modulo CTMU può essere utilizzato, tra cui:

  • Misura di temperatura. Termometri e termostati
  • Sorgente corrente continua e variabile
  • Generazione di precisi ritardi di tempo
  • Modulazione PWM
  • Proximity sensor
  • Sensori di livello per liquidi
  • Sensori di pressione e forza
  • Sensori di umidità
  • Misura di velocità dell' aria
  • Misura di distanze
  • Adaptive Control Cruise
  • Misura di frequenza
  • Decoding e encoding DTMF
  • Interfaccia con segnali GPS

Il modulo CTMU è disponibile su un numero molto ampio di PIC, sia a 8 che 16 che 32 bit e anche nei dsPIC.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip. Essendo la periferica già ben collaudata, è disponibile un gran numero di informazioni, applications, tutorial e codice, sia per CTMU che per CVD:


Fixed Voltage Reference -  (FVR)
Internal Voltage Regulator - (IVR)

Il modulo  FVR è una riferimento di tensione stabile, indipendente dalla Vdd, con uscita a 1.024V 2.048V o 4.096V selezionabile.  FVR può essere configurato per provvedere una tensione di riferimento al modulo ADC, evitando la necessità di un elemento di riferimento esterno.

La tensione è inviata all' ADC attraverso un amplificatore indipendente a guadagno programmabile.
L'amplificatore può essere configurato per amplificare la tensione di riferimento 1x, 2x o 4x e produrre i tre possibili livelli di tensione.

Un flag di ready individua il moneto in cui la tensione generata diventa stabile.

Se non necessario, il modulo può essere disabilitato per ridurre il consumo di corrente.

Sempre in relazione al problema di abolire componenti esterni l' IVR - Internal Voltage regulator.
Questo circuito regola una tensione per la logica interna, permettendo che la Vdd e l'I/O operino ad una tensione più alta. Quando Vdd si avvicina alla tensione regolata, IVR traccia automaticamente la tensione di alimentazione.
L'IVR opera in una di tre modi programmabili:

  • alta potenza
  • bassa potenza
  • risparmio energetico in sleep

Alternate Pin Function Control - (APFC)

Facciamo qui un accenno anche all' APFC - Alternate Pin Function Control, ovvero la possibilità di attribuire a diversi pin, alternativamente, la stessa funzione relativa ad una periferica.

Questa opzione, mediata dai PIC a 16/32 bit, in package con molti pin, con il nome di PPS- Peripheral Pin Select, è implementata anche sugli 8 bit ed ha lo scopo di permettere all' utente di rimodellare la distribuzione delle funzioni sui vari pin.

Una sfida notevole in apparecchiature previste per scopi generali è quella di offrire il più grande set possibile di funzioni periferiche, cercando di minimizzare il conflitto tra questo gran numero di possibilità e il limitato numero dei pin disponibili nel package, che diventa drammatico per i package con pochi pin.

I pin di I/O hanno, di base, una funzione generica di ingressi/uscite digitali (GPIO). Siccome il chip di un microcontroller contiene varie funzioni addizionali (moduli) che richiedono segnali di ingresso e di uscita, occorre che i pin siano multiplexati con queste alternative. Queste funzioni dipendono dalle caratteristiche delle periferiche che sono implementate nel chip, ma, difficilmente, un package offre pinout sufficienti a tutti i moduli integrati per un funzionamento contemporaneo.
Ne risulta che solo una parte dei moduli integrati potrà essere in funzione contemporaneamente, in relazione al numero dei pin disponibili. Ed, in effetti, la necessità di disporre in una applicazione di tutte le risorse funzionali di un microcontroller è molto remota e, superate le capacità offerte da un chip, ci si rivolge ad uno di dimensioni maggiori. Ma anche se il pin  disponibili sono 80 o 100, l' attribuzione fissa di una funzione ad ogni pin, nella pratica, risulta spesso un limite che intralcia la progettazione. 

Si può verificare la necessità di avere uno specifico ingresso o uscita dove il progetto iniziale attribuiva un' altra funzione; per evitare che l' unica scelta sia il ridisegnare il layout dell' hardware, Microchip offre l' alternativa di poter, da programma, variare la funzione assegnata a diversi pin.
Aumentando le scelte di pinout disponibili su una specifica apparecchiatura, gli utenti possono adattare meglio il microcontroller alle loro richieste piuttosto che aggiustare la richiesta in funzione di una limitata gamma di possibilità.

In sostanza, determinati pin opereranno, per default, come GPIO o input analogici, ma, attraverso il controllo di registri specifici, potranno essere indirizzati come ingressi o uscite alternative non di un solo, ma di più moduli di periferica integrata; l' utente potrà scegliere a quale pin attribuire una data funzione, ad esempio, di uscita dell' USART o di ingresso di selezione dell' MSSP.

Ad esempio, l' APFC in 16F1827, è gestito da due registri appositi, APFCON0 e APFCON1.
Il loro default al POR è 00h, ovvero le attribuzioni di funzione ai pin sono queste:

Funzione

default al POR
AFCONx=0

APFC
AFCONx=1

RX/DT RB1 RB2
SDO1 RB2 RA6
SS1 RB5 RA5
P2BSEL RB7 RA6
CCP2/P2A RB6 RA7
P1D RB7 RA6
P1C RB6 RA7
CCP1/P1A RB3 RB0
TX/CK RB2 RB5

Si nota come lo stesso pin possa assumere molteplici funzioni, a seconda di quale periferica è abilitata e di come sono configurati i registri di controllo dell' APFC. Ovviamente potrà essere utilizzato per una sola funzione per volta.

Se non attiviamo periferiche interne, APFC e le funzioni alternative non hanno alcun peso e i pin sono dedicati ai loro GPIO generici.
 


Va osservato con attenzione che, in generale, quando una periferica sta funzionando, i pin dedicati ad essa non possono essere usati per altre funzioni, tanto meno come GPIO.

Per altre informazioni, è possibile consultare la relativa documentazione al sito di Microchip, oltre chi i data sheet dei vari microcontroller. Ad esempio:


Per concludere

Queste periferiche sono in sviluppo a partire dai microcontroller indicati, ma, se saranno richieste dagli utenti, è evidente che la loro implementazione avverrà via via su tutti i nuovi dispositivi.
Alcuni link per maggiori informazioni:

Come per le altre famiglie PIC, i tools di sviluppo includono MPLAB® IDE e la il nuovo MPLAB-X, ed una selezione di compilatori C di nuova concezione, tutto disponibile in download dal sito di Microchip, in forma gratuita o versioni lite.
PICkit 3, ICD3 e REAL-ICE sono i sistemi di sviluppo, debug e programmazione più indicati.

Siccome il prodotto"PIC" è in continuo sviluppo, si consiglia di mantenere una certa attenzione al sito di Microchip ed agli annunci relativi ai nuovi prodotti, così da poter essere costantemente informati.
A questo proposito ricordiamo alcuni in dirizzi utili:


 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 10/06/12.