Qualche informazione sul microcontrollore PIC
Il Web contiene un’ampia quantità di informazioni sui microcontrollori e sulla famiglia PIC in
particolare. Accanto ai siti dei produttori hardware e software (in testa a tutti www.microchip.com)
esiste un gran numero di siti semiprofessionali e amatoriali dove vengono presentati corsi per
principianti, esempi applicativi svolti con schemi elettrici, consigli, esperienze personali a livelli
quanto mai vari.
In un Istituto Professionale o Industriale la trattazione e l’uso dei microcontrollori è ormai un
argomento standard; compare nei libri di testo e nelle riviste tecniche; non si può cominciare a
parlare di autronica, di domotica, in generale di controllistica senza tirare in ballo il
microcontrollore.
Quello che segue non è un corso sul PIC, nè una esauriente trattazione. E’ un insieme di indicazioni
come possono essere date a lezione in una classe quarta IPSIA; è uno spunto per cominciare a
discutere con gli studenti. E’ un approccio semplificato puramente didattico.
La forma del testo è quello di Word, ma si può pensare di trasferire il testo in PowerPoint: così
l’esposizione risulta più gradevole con l’uso di adatti strumenti grafici. Usando una presentazione si
perde senz’altro in completezza, perchè le slide di PowerPoint troppo cariche di testo e figure sono
difficilmente digeribili; si acquista in agilità, se gli studenti sono disposti ad usare le slide come
inizio di un lavoro (non come sunto da sunteggiare ancora finché non resta più niente!).
Questo materiale è fornito anche come file.PPT da scaricare (zip 297 kb) per libero uso.
Il microcontrollore
•
•
•
Un microcontrollore (µC) è un dispositivo di elaborazione dati simile al
microprocessore (µP)
Sul µP sono basati tutti i calcolatori dai personal computer ai mainframe
Sul µC sono basati dispositivi per scopi industriali o per applicazioni particolari
(autronica, domotica)
Il µP contiene:
•
•
•
•
•
Una ALU (Arithmetic Logic Unit) dove avvengono i calcoli
diversi registri per la memorizzazione temporanea dei dati e la gestione delle
istruzioni
Un bus interno ad alta velocità
circuiti di controllo e di temporizzazione per coordinare tutte le attività
tre bus (Data Bus, Address Bus, Control Bus) per comunicare col mondo esterno
(dispositivi di memoria, dispositivi di ingresso-uscita)
Il µP ha bisogno per funzionare:
•
•
•
•
Di un’ampia area di memoria esterna sia di lavoro (RAM) che di massa (hard disk
ecc), dato che tratta grandi quantità di dati
Di interfacce verso dispositivi esterni di Input (tastiera, mouse,scanner, hard disk,
floppy, microfoni ..)
Di interfacce verso dispositivi esterni di Output (monitor, stampante, altoparlanti,
hard disk, floppy,modem ..)
Di potenza di alimentazione anche di decine di watt
Il µC invece possiede su un unico chip:
•
•
•
•
•
Una CPU RISC
Una piccola memoria di programma (EPROM-EEPROM)
Una piccola memoria di lavoro RAM (alcuni KB)
Porte di ingresso/uscita
Contatori, timer, convertitore A/D
•
Uart, Pwm, interfacce di comunicazione di vari tipi
Contiene cioè, sia quello che possiede un µP (anche se in quantità molto ridotta), sia parti che il µP
non possiede.
Inoltre ha ingombro minimo e richiede poca potenza di alimentazione
RISC significa:
Reduced Instruction Set Computing
Elaborazione con insieme di istruzioni ridotto.
Le istruzioni perciò:
•
•
sono poche decine
sono eseguite molto velocemente
non serve un clock molto elevato per un efficiente funzionamento (dai 4-8 MHz per i tipi più
semplici, fino a 33-50 MHz per i tipi più evoluti)
Il microcontrollore che si vuole usare qui è il PIC16F84 della Microchip Technology
PIC = Peripheral Interface Controller
(Controllore di periferiche programmabile)
La sua caratteristica più importante sta nella sigla F:
Il programma risiede in una EEPROM FLASH
(Electrically Erasable Programmable Read only Memory)
è modificabile immediatamente anche senza togliere l’integrato dal circuito (modalità: incircuit)
Schema sintetico del PIC
•
•
•
•
•
•
•
Flash Program memory
Program Counter
Instruction Register
RAM File Registers
Address Mux
ALU
W register (accumulator)
•
I/O Ports
Alcune sezioni del µC
•
•
Program Counter: contatore che punta alla successiva istruzione da eseguire tra
quelle contenute nel Program Memory
Instruction Register: registro che contiene le istruzioni eseguibili; le confronta con il
Program Memory e le dà per l’esecuzione alla ALU
•
ALU: esegue calcoli matematici e logici sui dati in ingresso e deposita i risultati di
calcolo nell’Accumulatore
Il PIC16F84
Caratteristiche:
•
•
•
•
•
•
Set di 35 istruzioni a 14 bit, eseguite ognuna in 4 cicli di clock
Bus dati a 8 bit
Clock fino a 20 MHz
Memoria di programma EEPROM: 1024 locazioni da 14 bit
36 registri da 8 bit
15 registri specializzati
•
68 byte di EEPROM dati memorizzabili
Altre caratteristiche:
•
•
•
•
•
•
•
•
•
Stack a 8 livelli (consente il richiamo di subroutine)
13 linee di I/O divise in due porte:
porta A: RA0-RA4 (5 bit) porta B: RB0-RB7 (8 bit)
Le porte forniscono: 25 mA in sink 20 mA in source (RA4 solo sink)
Contatore - temporizzatore programmabile a 8 bit con prescaler a 8 bit
Linee di interrupt sulla porta B
autoreset all’accensione
La possibilità di stare in modo SLEEP (a bassissimo consumo)
Il codice del programma può essere reso inaccessibile alla lettura
•
Un Watch-dog Timer (temporizzatore "cane da guardia") che evita il blocco del
funzionamento
Due punti di forza del microcontrollore sono:
•
•
l’abbondanza di registri
la presenza di porte di Ingresso/Uscita capaci di pilotare carichi esterni
Quindi occorre saper gestire bene registri e porte.
I registri sono celle, locazioni, di memoria dove il µC legge e scrive valori fondamentali per il
funzionamento. Sono celle che hanno un indirizzo esadecimale (h) ; si dice che sono mappati in
memoria.
Ad esempio scrivendo o leggendo nelle locazioni 05h e 06h si scrive o si legge nelle porte A e B.
Se si programma il PIC in linguaggio macchina (Assembler) occorre precisare molti dettagli per i
registri, con istruzioni da mettere all’inizio del programma.
Se si usa un linguaggio ad alto livello (Basic), le istruzioni da aggiungere sono minori. Tuttavia la
mappa di memoria (cioè l’allocazione dei registri) deve sempre essere conosciuta.
La gestione delle porte A e B di IN/OUT
E’ fondamentale saper programmare le porte di ingresso/uscita.
Ognuno dei pin della porta A (05h) può essere impostato in modo indipendente come ingresso o
come uscita in base al contenuto del registro di controllo TRISA (85h): impostando a 1 il bit di
TRISA la porta corrispondente è un ingresso (se è 0 diventa uscita). Lo stesso vale per la porta B
(06h) gestita da TRISB (86h).
Esempio: con TRISB = 00111111, RB6 e RB7 sono linee di uscita (possono comandare un carico),
e le altre linee sono ingressi (possono accettare un segnale esterno).
Pin function
- OSC1/CLKIN: oscillator crystal input
- OSC2/CLKOUT: oscillator crystal output
- MCLR: master clear (reset)
- RA0 ..RA4: 5 linee porta A
- RB0 .. RB7: 8 linee porta B
- Vss: massa
- Vdd: alimentazione positiva
Oscillatore a quarzo per il clock
L’oscillatore del PIC può funzionare in quattro modi:
1.
2.
3.
4.
LP Low Power Crystal 32 KHz .. 200 KHz
XT Crystal/Resonator 100 KHz .. 4 MHz
HS High Speed Crystal/Resonator 8 MHz .. 20 MHz
RC Resistor Capacitor
Si può usare un quarzo o un risonatore ceramico, a varie frequenze, oppure un circuito RC con
scarsa precisione in frequenza.
Occorre scegliere un modo, sia per costruire il circuito, sia per impostare le opzioni del dispositivo
programmatore: l’opzione più comune è XT.
Il software per il PIC - 1° modo
Il programma per il PIC si può scrivere in linguaggio assembly o assembler, usando direttamente le
35 istruzioni riconosciute dal PIC.
Il programma si scrive come un file di testo. Esso viene convertito in codice binario da un
programma chiamato Assemblatore. Il file creato contiene codici esadecimali e ha estensione. HEX
Per trasferire poi il file HEX nella memoria di programma del PIC occorre un dispositivo chiamato
Programmatore.
Si usa un Personal Computer:
•
•
•
per scrivere il testo del programma,con un editor di testi (non Word !)
per convertirlo in codice eseguibile, usando l’Assemblatore
per scriverlo nel PIC, usando un Programmatore.
La casa costruttrice Microchip fornisce un pacchetto integrato chiamato MPLAB. Esso comprende:
•
•
MPLAB Editor: editor di testo per scrivere il testo del programma
MPASM: il compilatore che traduce il testo in codice eseguibile (usando il codice
esadecimale)
Il compilatore MPASM è liberamente usabile. Si scarica dal sito della Microchip e si può usare
indipendentemente dall’editor.
Lavorando in Assembler, la parte più difficile è il debug, cioè l’eliminazione degli errori di
programmazione. Esistono software di simulazione, a pagamento in genere, che consentono di
controllare il funzionamento del programma
Programmazione fisica del PIC
La famiglia PIC16F8X, che comprende il 16F84, il 16F877 ecc., può essere programmata:
•
•
separatamente, con un Programmatore (programmazione out of circuit)
direttamente, mentre si trova già montato nel circuito finale, aggiungendo nello schema del
progetto un adatto connettore in più (programmazione in-circuit)
Dato che il PIC ha una memoria Flash di programma, sono possibili veloci variazioni o
aggiornamenti del codice programma.
Sistema di programmazione out of circuit.
Dopo aver scritto il programma, cioè il codice sorgente, lo si compila con il MPASM: viene creato
un file oggetto con estensione.HEX, il quale deve essere caricato nella memoria di programma del
PIC, inserito in uno zoccolo del programmatore
Per caricare il file.HEX nella memoria programma del PIC occorre:
•
•
•
Un personal computer
Un programmatore
Il software di gestione del programmatore
Il PC: tramite un semplice software di gestione, legge il file.HEX; riconosce l’area di memoria del
PIC dove scaricarlo
Il programmatore: Imposta la tensione di scrittura (+13V) e adatta il segnale in arrivo ai circuiti
interni del PIC
Il PC: Trasferisce i dati nel PIC attraverso il collegamento seriale/parallelo. Dopo la scrittura fatta
dal programmatore, verifica i dati scritti
Programmatore industriale
Un insieme completo e di livello professionale è il PICSTART Plus fornito dalla stessa casa
costruttrice Microchip Inc.
Svantaggio: alto costo
Vantaggio: è aggiornabile agli ultimi modelli Microchip
Esistono molti programmatori industriali di terze parti, a costo minore, o di tipo hobbystico, già
pronti o in kit da costruire.
In genere se sono di basso costo, programmano solo alcuni tipi di PIC e non sono aggiornabili agli
ultimi modelli.
Programmatore di PIC in scatola di montaggio - FT386
Si collega alla porta parallela del PC.
Ha uno zoccolo ZIF (Zero Insertion Force) a 40 pin e accetta diversi tipi di PIC.
Ha costo limitato
Funziona col software free EPIC, il quale legge dal PC il file.HEX creato con l’assemblatore, e lo
scrive nella Flash EEPROM
Programmatore a più zoccoli
Data la varietà di PIC esistenti, il programmatore può anche comprendere diversi zoccoli (a 8 pin,
18 pin, 40 pin), che sono meno costosi ma meno comodi dello zoccolo ZIF
Tipi di PIC da 8 pin a 40 pin
Demoboard
Dopo aver programmato il PIC, si può usare una scheda di valutazione o dimostrativa per
controllare l’esattezza del programma.
Una demoboard contiene alcuni semplici dispositivi di ingresso (pulsanti ad esempio) e di uscita
(led, relè) e si usa in genere per apprendere i fondamenti della programmazione. Esistono
demoboard molto sofisticate e costose (con sensori di temperatura, interfacce di vario tipo, display
alfanumerici e grafici) e altre di costo limitato. Dato che la frequenza di clock è di pochi MHz, i
circuiti con PIC si possono montare, con qualche precauzione, anche su breadboard millefori senza
saldatura.
La demoboard FT215-K in scatola di montaggio contiene:
•
•
•
•
•
•
•
8 led
1 display LCD
1 tastiera a matrice
1 display a 7 segmenti,
2 pulsanti,
2 relè,
1 cicalino piezo
tutti controllabili dal PIC per verificare immediatamente il programma appena memorizzato
La PROTON BOARD contiene interfacce e anche una breadboard per piccoli montaggi senza
saldature
Questi sono alcuni siti dove trovare compilatori in Basic per il PIC, sia a pagamento, sia in versione
demo, con limitazioni.
http://www.picbasic.co.uk
http://www.crownhill.co.uk
http://www.picbasic.it
http://www.melabs.com
http://www.letbasic.com
http://www.microengineeringlabs.com
Nel sito http://www.picbasic.org è presente l’ultima versione del software di programmazione, che
sostituisce tutti i precedenti presentati negli anni passati nel sito, perché ha una caratteristica
innovativa.
L’ambiente integrato PROTON DS
Proton Development Suite
Il sistema più aggiornato disponibile oggi è un ambiente dove è presente:
•
•
•
Un compilatore basic Proton+
Un collegamento verso un Programmatore
Un ambiente di simulazione basato su una Virtual Evaluation Board
•
•
•
Il compilatore (Proton + Compiler versione 2.1.3 della ditta Crownhill) consente di scrivere
programmi in Basic e di tradurli in file.HEX, usando il MPASM della Microchip.
Il Programmatore di default può essere sostituito da uno a piacere.
La board virtuale permette la simulazione a video del circuito: comprende il PIC e alcune
periferiche simulate:
•
•
•
•
•
•
•
•
•
Temperature sensor
PortB Monitor
Alphanumeric LCD display
128x64 graphic LCD display
Serial terminal 9600 Baud
Serial eeprom
16 button Keypad
Oscilloscope
Variable resistor
Uso della Virtual Board
Dopo aver scritto il programma Basic, il comando Compile and Program ha un menù dove si può:
•
•
•
inviare il codice creato al Programmatore di default
installare un nuovo Programmatore (ad esempio EPIC)
inviare il codice al Labcenter Electronics PROTEUS, ossia ad una delle possibili Virtual
Board.
Ognuno dei PIC supportati ha una diversa Virtual Board:
Questa è una parte della Virtual Board per il PIC16F628A (PIC16_18PIN) . E’ presente un PORTB
Monitor con il quale è possibile verificare la correttezza di sequenze programmate di azionamenti di
carichi (led o relè) collegati sulla porta B.
Questa è invece una parte della Virtual Board per PIC16F877 (PIC16_ALCD), comprendente tra
l’altro un display alfanumerico, un tastierino numerico, dei carichi, un oscilloscopio per visualizzare
forme d’onda.
La suite intera ha un costo significativo.
Esiste anche una versione LITE di libero uso, scaricabile dal sito, con importanti limitazioni, che
non impediscono però un uso didattico efficace:
•
•
•
Programmi Basic con massimo 50 linee di codice
La virtual board non è collegabile a piacere
Sono supportati solo 4 tipi di PIC:
1.
2.
3.
4.
12C508 (8 pin .. 12 bit)
12F675 (8 pin .. 14 bit)
16F628A (18 pin .. 14 bit) (sostituisce il 16F84)
16F877 (40 pin .. 14 bit)
Dato che non è più supportato il classico 16F84, occorre un programmatore adatto.
Scarica

Qualche informazione sul microcontrollore PIC