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:
-
CTMU - Charge
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:
-
filtraggio dei transienti indesiderati
-
controllo di fase per il ritardo in uscita
-
tempo di salita
-
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:
-
filtraggio dei transienti indesiderati
-
controllo di fase per il ritardo in uscita
-
tempo di salita
-
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 :
- rising-to-rising edge
- falling-to-falling edge
- falling-to-rising edge
- rising-to-falling edge
- 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:
|