Una introduzione ai
Microcontroller PIC
|
La Memoria
E sarebbe più giusto parale di memorie, in quanto i PIC
integrano tre tipi:
-
memoria programma, in tecnologia FLASH, non volatile,
riprogrammabile
-
memoria RAM, volatile
-
memoria EEPROM, non volatile
Abbiamo visto nella tabella precedente che non tutti i PIC
incorporano le stesse quantità di memoria, ma sicuramente una certa quantità
di memoria programma e RAM sono presenti in tutti i chip.
Per quanto riguarda i termini bit, byte, word, ecc, usati qui,
trovate una trattazione esaustiva in
queste pagine.
La Memoria Programma
La memoria Programma deve avere la caratteristica di poter
essere scritta dal programmatore, dato che contiene il programma che è stato
realizzato, ma non deve "dimenticare" questo programma. Ovvero
i valori binari scritti in ogni cella devono rimanere tali anche se il
processore è senza alimentazione (non volatile) e per il maggior tempo
possibile.
Le "vecchie" serie, indicate con una C (16FC54, 16C84,
16C73, ad esempio) disponevano di memoria programma OTP (One Time PROM ovvero
memoria a sola lettura programmabile una sola volta). In questo caso la
scrittura del programma è possibile una sola volta, in quanto la PROM non è
cancellabile.
|
Per lo sviluppo erano stati realizzati chip con memoria programma in EPROM
e dotati di finestra.
La programmazione avveniva con un apparecchio adeguato e la EPROM poteva
essere cancellata con l' esposizione ad una lampada a raggi UV.
Erano componenti assai costosi e quindi poco apprezzati dagli sperimentatori (e non solo). |
Con il celebre PIC16F84, Microchip introduce la memoria
programma in tecnologia FLASH, con la possibilità di scriverne e cancellarne il
contenuto numerosissime volte e senza l' impiego di sistemi particolari: ora un solo chip può essere utilizzato per
centinaia di esperienze e il firmware può essere upgradato senza dover cambiare
il componente. |
|
Lettura, scrittura, cancellazione possono essere effettuate in
modo molto semplice attraverso una comunicazione seriale del tipo clock+dati,
denominata ICSP (In Circuit
Serial Programming), che impegna tipicamente i pin ICDAT/ICCLK/VPP,
corrispondenti a PB6, PB7 e MCLR nei chip da 29 pin in su.
Da notare che, attraverso la stessa connessione, numerosi PIC
dispongono di un motore interno di debug che permette lo sviluppo on board (ICD
- In Circuit Debug) senza dover togliere il chip dalla scheda e senza richiede
costosi ICE.
|
|
Tra i più noti tools, i Pickit risaltano per il loro costo molto
limitato e la prerogativa di poter funzionare sia come debugger, sia
come programmer. |
La memoria FLASH, che contiene il programma, negli Enhanced,
grazie ad opportune istruzioni, può essere addirittura cancellata e riscritta durante il funzionamento
del programma stesso, permettendo di avere sistemi auto aggiornanti.
Ricordiamo ancora che le celle della memoria Programma hanno una
ampiezza differente a seconda che il core sia a 12, 14 o 16 bit, pur essendo la
memoria dati di ampiezza 8 bit.
La Memoria Dati
Lo scopo della memoria RAM è quello di fornire un appoggio alle operazioni
matematiche e logiche. In questo senso il suo contenuto è valido solo quando
il sistema è in funzione e può essere "perso" quando il sistema è
spento.
|
Si tratta di memoria RAM CMOS (realizzata con MOSFET
complementari Pe N), del tipo volatile,
ovvero in cui il contenuto va perso al momento della mancanza della tensione di
alimentazione.
Le singole celle possono conservare, finchè alimentate, un dato
binario 1 o 0 che vi è stato scritto (1 bit).
Le celle, poi, sono organizzate in matrici, ad esempio di 8 per
costituire un byte (8 bit) oppure a gruppi di 16 (1 word = 16 bit) |
Questa trattazione verterà principalmente sui PIC con dati a 8 bit, che
sono i più comuni nella sperimentazione e nell' istruzione.
Questo non deve far dimenticare che la produzione Microchip è molto più
ampia e ci sono PIC a 16 e 32 bit.
L' ampiezza dei dati a 8 bit fa si che di conseguenza anche l' ALU sia in
grado di trattare quantità a 8 bit e che il registro "accumulatore"
o di lavoro WREG sia a 8 bit.
Così pure a 8 bit sono gli SFR e sempre a 8 bit sono organizzati i port di
I/O, ecc.
La memoria EEPROM
Per varie applicazioni può, però, essere necessario disporre di un' area di memoria
in cui il programma, durante il suo funzionamento, raccoglie dati che non devono
andare persi, come ad esempio i setup fissati dall' utente o dei preset di
produzione.
La strada scelta è quella di inserire nel microcontroller un' area di
memoria EEPROM, che è del tipo non volatile, ma cancellabile
e scrivibile durante il funzionamento del sistema, attraverso sequenze di
istruzioni comuni: la scrittura in EEPROM non richiede il set di istruzioni
esteso degli Enhanced e questo consente di avere questa memoria anche sulle
altre famiglie minori.
Data la destinazione e la relativa complessità di implementazione,
l' area EEPROM è decisamente di ampiezza minore delle precedenti e non è
disponibile in tutti i chip.
Raccogliamo indicativamente in una tabella le caratteristiche di alcuni PIC, giusto per
avere una idea delle risorse di memoria disponibili.
PIC |
Memoria
Programma
[word] |
memoria
RAM
[byte] |
memoria
EEPROM
[byte] |
|
DATI
a 8 bit - Core a 12 bit |
10F200 |
256 |
16 |
- |
10F202 |
512 |
24 |
- |
10F204 |
256 |
16 |
- |
10F206 |
512 |
24 |
- |
|
12F508 |
512 |
25 |
- |
12F509 |
1024 |
41 |
- |
12F510
|
|
|
|
16F505 |
1024 |
72 |
- |
|
16F54 |
512 |
25 |
- |
16F57 |
2048 |
72 |
- |
16F59 |
2048 |
134 |
- |
|
DATI
a 8 bit - Core a 14 bit |
12F629 |
1024 |
64 |
128 |
12F635 |
1024 |
64 |
128 |
12F675 |
1024 |
64 |
128 |
12F683 |
2048 |
128 |
256 |
|
|
|
|
16F84 |
1024 |
68 |
64 |
16F87 |
4k |
368 |
256 |
16F88 |
4k |
368 |
256 |
16F627 |
1024 |
224 |
128 |
16F628 |
2048 |
224 |
128 |
16F630 |
1024 |
64 |
128 |
16F648 |
4k |
224 |
128 |
16F818 |
1024 |
128 |
128 |
16F819 |
2048 |
256 |
256 |
16F870 |
2048 |
128 |
64 |
16F873 |
4k |
192 |
128 |
16F876 |
8k |
368 |
256 |
16F877 |
8k |
368 |
256 |
|
DATI
a 8 bit - Core a 16 bit |
18F242 |
16k |
768 |
256 |
18F442 |
16k |
768 |
256 |
18F452 |
32k |
1536 |
256 |
|
|
|
|
18F1220 |
4k |
256 |
256 |
18F1320 |
8k |
256 |
256 |
18F2220 |
4k |
512 |
256 |
18F2320 |
8k |
512 |
256 |
18F2410 |
16k |
768 |
- |
18F2420 |
16k |
768 |
256 |
18F2455 |
24k |
2k |
256 |
18F2480 |
16k |
768 |
256 |
18F2550 |
32k |
2k |
256 |
18F2610 |
64k |
3968 |
- |
18F2620 |
64k |
3968 |
1k |
18F4420 |
16k |
768 |
256 |
18F4515 |
48k |
3968 |
- |
18F4520 |
32k |
2k |
256 |
18F6310 |
8k |
768 |
- |
18F6620 |
64k |
3840 |
1k |
18F6720 |
128k |
3840 |
1k |
18F8310 |
8k |
768 |
- |
18F8680 |
64k |
3328 |
1k |
18F8720 |
128k |
3840 |
1k |
Questa è solamente una ridottissima panoramica dei PIC a 8 bit: i
modelli disponibili sono molti di più e il sito di Microchip li elenca tutti,
anche in modo parametrico.
La tabella qui sopra è puramente una indicazione dell' esistenza di una ampia
varietà di dotazioni di memoria, fatto che determina il costo del chip e la
sua destinazione di uso.
Argomenti collegati:
|