Tutorials - PIC

 

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:


 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 02/10/11.