Scarica le prime pagine del libro

Transcript

Scarica le prime pagine del libro
I ROMANA LIBRO:Layout 1
11-09-2009
13:08
Pagina 1
Paolo Rognoni
Pillole di
Microcontrollori
PIC
Manuale di progettazione
con esempi pratici in linguaggio C
Titolo:
Microcontrollori PIC
Prima Edizione – Settembre 2009
ISBN: 978-88-902469-2-0
Autore:
Paolo Rognoni
Copyright
© 2009 – INWARE Edizioni s.r.l.
Via Cadorna 27/31
20032 Cormano (MI)
Tel: 02/66504755 Fax: 02/66508225
[email protected] – www.inwaredizioni.it
Stampa:
Prontostampa – Fara Gera d’Adda (BG)
Tutti i diritti sono riservati a norma di legge e a norma delle convenzioni internazionali.
E’ vietata la riproduzione anche parziale di testi e disegni raggolti in quest’opera.
Nomi e marchi citati nel testo sono generalmente depositati o registrati dalle ripspettive case produttrici.
Indice
Prefazioni ..................................................................................................... IX
Introduzione ................................................................................................. XI
1 I microcontrollori ed i sistemi embedded ........................................... 1
I microcontrollori PIC ......................................................................... 2
Struttura interna ................................................................................. 3
Memoria............................................................................................. 6
Porte .................................................................................................. 9
Periferiche ......................................................................................... 9
Timer ................................................................................................. 10
Watchdong timer ............................................................................... 10
Meccanismi di interrupt ..................................................................... 11
Configuration bits .............................................................................. 11
2 Gli strumenti di sviluppo ....................................................................... 13
Il compilatore: mikroC PRO ............................................................... 13
L’ambiente integrato (IDE) di mikroC PRO ....................................... 14
Iniziare con un nuovo progetto .......................................................... 16
Simulatore e debugger software ....................................................... 20
Microchip MPLAB .............................................................................. 22
Integrazione tra mikroC PRO e MPLAB ............................................ 22
L’hardware ......................................................................................... 22
In-Circuit Debugger PICflash 2.......................................................... 22
Microchip ICD2, ICD3, PicKIT2, PicKIT3 .......................................... 23
easyPIC5 di Mikroelektronika ............................................................ 25
Microchip PICDEM2 Plus .................................................................. 25
3 Hello World! ............................................................................................ 27
Registri e configurazioni .................................................................... 27
Hello world! ........................................................................................ 28
Accesso diretto ai singoli bit di un byte ............................................. 30
Debug ................................................................................................ 31
Un altro esempio: Supercar............................................................... 33
Generazione di ritardi fissi e variabili ................................................ 35
Esercizi .............................................................................................. 35
4 Gli Input digitali ...................................................................................... 37
Il temporizzatore ................................................................................ 37
Il PIC temporizzatore ......................................................................... 38
Pull-up interni..................................................................................... 43
In simulazione ................................................................................... 44
iii
Pull-down, pull-up interni o esterni .................................................... 46
Rimbalzi e antiribalzo......................................................................... 47
Oscillatore interno e Master Clear ..................................................... 47
Esercizi .............................................................................................. 48
5 I Timer e gli Interrupt .............................................................................. 49
Mecanismi di interrupt........................................................................ 49
I timer del PIC .................................................................................... 51
Contare il tempo ................................................................................ 53
Interrupt-on-change ........................................................................... 53
MikroC PRO e la risposta all’interrupt ............................................... 54
Il progetto TempoInterrupt ................................................................. 55
Antirimbalzo ....................................................................................... 58
La funzione del temporizzatore ......................................................... 58
In simulazione .................................................................................... 58
Context switch ................................................................................... 59
Latenza dell’interrupt ......................................................................... 60
Esercizio ............................................................................................ 60
6 Gli ingressi analogici .............................................................................. 61
Analog(ic)amente............................................................................... 61
Il convertitore analogico digitale dei PIC ........................................... 61
Configurazione ed avvio del modulo ADC ......................................... 62
Conversione AD con mikroC PRO .................................................... 66
LED analogici..................................................................................... 67
I comparatori ...................................................................................... 70
Come lavorano .................................................................................. 71
Esercizio ............................................................................................ 72
7 Capture Compare PWM .......................................................................... 73
Capture .............................................................................................. 74
Modalità CAPTURE con mikroC PRO ............................................... 75
Compare ............................................................................................ 77
Modalità COMPARE con mikroC PRO .............................................. 78
PWM .................................................................................................. 80
Modalità PWM con mikroC PRO ....................................................... 82
Considerazioni conclusive ................................................................. 85
Esercizi .............................................................................................. 86
8 Il PIC scrive: LCD alfanumerico ............................................................ 87
I Display LCD e il driver HD44780 ..................................................... 88
Interfaccia a 8 bit ............................................................................... 89
Interfaccia a 4 bit ............................................................................... 90
iv
La libreria software di mikroC PRO ................................................... 92
Inizializzazione e configurazione del LCD......................................... 94
Scrittura di una stringa ad una posizione prestabilita ....................... 94
Scrittura di una stringa alla posizione corrente ................................. 94
Scrittura di un carattere ad una posizione prestabilita ...................... 94
Scrittura di un carattere alla posizione corrente ................................ 94
Invio di un comando al display .......................................................... 95
Esempi di funzionamento .................................................................. 96
Hello word.......................................................................................... 97
Numeri, numeri, numeri ..................................................................... 98
Caratteri personalizzati: CGRAM ...................................................... 100
Errori comuni nell’uso dei display LCD ............................................. 101
Esercizi .............................................................................................. 102
9 Il PIC disegna: LCD grafico ................................................................... 103
Display grafici con controller KS0108/KS0107.................................. 103
La libreria software di mikroC PRO ................................................... 105
Inizializzazione e configurazione del LCD......................................... 107
Selezione di un banco (o lato) ........................................................... 107
Posizionamento ad uno quota x all’interno di un banco .................... 107
Scelta di una pagina .......................................................................... 107
Lettura di un dato dalla memoria del display.................................... 107
Scrittura di un dato sulla memoria del display................................... 108
Riempimento dello schermo .............................................................. 108
Tracciare un punto ............................................................................ 108
Tracciare una linea ............................................................................ 108
Tracciare una linea verticale ............................................................. 109
Tracciare una linea orizzonatale ....................................................... 109
Disegnare un rettangolo .................................................................... 109
Disegnare un rettangolo pieno (box) ................................................. 109
Disegnare un cerchio ........................................................................ 110
Impostazione del tipo di carattere (font) ............................................ 110
Scrittura di un carattere ..................................................................... 110
Scrittura di una stringa ...................................................................... 110
Gestione e visualizzazione di immagini bitmap................................. 111
L’editor di immagini bitmap................................................................ 111
Esempio di funzionamento ................................................................ 112
Esercizi .............................................................................................. 115
10 La periferica USART ............................................................................. 117
La periferica USART dei PICmicro .................................................... 117
USART in modalità asincrona ........................................................... 118
Il baud rate......................................................................................... 120
v
Le librerire software di mikroC PRO .................................................. 120
Inizializzazione e configurazione dell’USART ................................... 121
Verifica buffer dati in ricezione .......................................................... 121
Verifica buffer dati in trasmissione..................................................... 122
Lettura di un byte ............................................................................... 122
Lettura di un testo .............................................................................. 122
Scrittura di un byte ............................................................................. 122
Scrittura di un testo ............................................................................ 122
Attivazione del modulo UART............................................................ 123
La comunicazione con il PC .............................................................. 123
Emulazione software dell’UART ........................................................ 125
Inizializzazione e configurazione dell’UART software ....................... 126
Ricezione di un dato .......................................................................... 126
Trasmissione di un dato .................................................................... 126
Uscita da un loop infinito ................................................................... 126
Comunicazione sincrona e asincrona................................................ 127
USART a 9-bit.................................................................................... 127
Esercizi .............................................................................................. 128
11 La periferica MSSP: I2C e SPI ............................................................. 129
Il modo I2C ......................................................................................... 130
Configurazione................................................................................... 130
La libreria I2C hardware di mikroC PRO ............................................ 131
Inizializzazione del bus I2C ................................................................ 132
Avvio della comunicazione ................................................................ 132
Riavvio della comunicazione ............................................................. 132
Verifica bus libero .............................................................................. 133
Lettura di un dato dal bus .................................................................. 133
Scrittura di un dato sul bus ................................................................ 133
Termine della comunicazione ............................................................ 133
Un esempio: la lettura della temperatura .......................................... 133
Il modo SPI ........................................................................................ 136
Configurazione SPI in modalità master ............................................. 138
La libreria SPI hardware di mikroC PRO ........................................... 138
Inizializzazione del bus SPI ............................................................... 139
Inizializzazione avanzata del bus SPI ............................................... 140
Lettura di un dato dal bus .................................................................. 141
Scrittura di un dato sul bus ................................................................ 141
Attivazione del modulo MSSP ........................................................... 141
Un esempio: pilotare un DAC ............................................................ 141
Le librerie di emulazione I2C e SPI .................................................... 144
Emulazione software di I2C................................................................ 145
Inizializzazione del bus I2C ................................................................ 146
vi
Avvio della comunicazione ................................................................ 146
Lettura di un dato dal bus .................................................................. 146
Scrittura di un dato sul bus ................................................................ 146
Termine della comunicazione............................................................ 146
Uscita da un loop infinito ................................................................... 146
Emulazione software di SPI .............................................................. 147
Inizializzazione del bus SPI ............................................................... 147
Lettura di un dato dal bus .................................................................. 147
Scrittura di un dato sul bus ................................................................ 147
Il bus I2C ............................................................................................ 148
Il bus SPI ........................................................................................... 149
Esercizi .............................................................................................. 149
12 USB, Universal Serial Bus .................................................................. 151
La periferica USB dei PIC ................................................................. 151
USB e frequenza di clock .................................................................. 153
La libreria USB di mikroC PRO ......................................................... 155
Abilitazione della comunicazione HID USB....................................... 155
Lettura dati dal bus USB ................................................................... 156
Scrittura dati sul bus USB ................................................................. 156
Disabilitazione della comunicazione HID USB .................................. 156
La comunicazione con il PC .............................................................. 156
Approfondimenti ................................................................................ 159
Esercizi .............................................................................................. 160
13 I PIC in rete: connettività con Ethernet ............................................. 161
Ethernet per PIC ................................................................................ 161
La libreria SPI Ethernet di mikroC PRO ............................................ 163
Inizializzare la comunicazione ethernet ............................................ 165
Abilitazione del traffico ethernet ........................................................ 165
Disabilitazione del traffico ethernet ................................................... 165
Elaborazione di un pacchetto ethernet.............................................. 165
Scrittura di un byte ............................................................................ 166
Scrittura di più byte ............................................................................ 166
Scrittura di più byte di tipo const ....................................................... 166
Scrittura di una stringa ...................................................................... 167
Scrittura di una stringa di tipo const .................................................. 167
Acquisizione di un byte...................................................................... 167
Acquisizione di più byte ..................................................................... 167
Gestione delle richieste TCP/http ...................................................... 167
Gestione delle richieste UDP ............................................................ 168
Acquisizione del numero IP ............................................................... 169
Acquisizione del numero IP del Gatyeway ........................................ 169
vii
Acquisizione del numero IP del server DNS ..................................... 169
Acquisizione del Subnet Mask........................................................... 169
Configurazione dei parametri di rete ................................................. 169
Invio di richieste ARP......................................................................... 170
Invio di richieste UDP ........................................................................ 170
Invio di richieste DNS ........................................................................ 170
Inizializzazione dei parametri DHCP ................................................. 170
Verifica del lease time associato ad DHCP ....................................... 171
Rinnovo del lease time associato al DHCP ....................................... 171
Webserver ......................................................................................... 171
L’hardware ......................................................................................... 171
Le pagine html ................................................................................... 174
Il firmware .......................................................................................... 174
La libreria Ethernet di mikroC PRO ................................................... 176
LAN, WAN o Internet? ....................................................................... 177
Approfondimenti................................................................................. 177
Esercizio ............................................................................................ 178
14 EEPROM interna, memoria FLASH e altre librerie ........................... 179
EEPROM interna e memoria FLASH ................................................ 179
Accesso alla EEPROM ...................................................................... 179
Accesso alla EEPROM con mikroC PRO .......................................... 182
Lettura dati da EEPROM interna ....................................................... 182
Scrittura dati su EEPROM interna ..................................................... 183
Precaricare la EEPROM: EEPROM Editor ........................................ 183
Accesso alla FLASH ROM con mikroC PRO .................................... 184
Lettura di un dato dalla memoria FLASH .......................................... 184
Lettura di n byte dalla memoria FLASH............................................. 184
Scrittura su memoria FLASH ............................................................. 184
Cancellazione della memoria FLASH ................................................ 185
Cancellazione e scrittura dlla memoria FLASH ................................. 185
Le librerie di mikroC PRO .................................................................. 186
Approfondimenti................................................................................. 188
Esercizio ............................................................................................ 190
Appendice A: Tracce per la soluzione degli esercizi ............................ 191
Appendice B: Uno sguardo ai PIC18 ...................................................... 199
Appendice C: Figure e tabelle ................................................................. 203
Appendice D: Bibliografia e Copyright ................................................... 207
viii
PREFAZIONI
Sovente nelle pubblicazioni divulgative di carattere tecnico elettronico, quando
si tratta di presentare nuovi prodotti utilizzabili non solo da esperti, ma anche
da principianti, il lettore si trova di fronte a testi scritti prevalentemente in lingua
inglese. Ciò può comportare difficoltà nell’apprezzare il contenuto, col rischio di
non poter approfondire pienamente quanto il dispositivo in oggetto è in grado di
offrire.
Questo volume, scritto in lingua italiana, consente di ovviare alla difficoltà sopra
citata, dando al lettore la possibilità di apprenderne compiutamente il contenuto
e, di conseguenza, potersi esercitare nei vari progetti proposti con l’assoluta
certezza del miglior risultato, in quanto gli stessi sono stati largamente
sperimentati all’autore.
Il mondo dei microcontrollori è vasto e descriverlo compiutamente o
racchiuderne tutte le potenzialità in un libro è impresa impossibile. In questo
libro l'autore guida, con mano esperta, il lettore nel mondo dei microcontrollori,
con un linguaggio chiaro ed efficace, mettendo in evidenza peculiarità e
passaggi chiave, imprescindibili, in egual misura, per “maneggiare” al meglio
uno strumento dalle potenzialità illimitate quale, appunto, la programmazione
dei microcontrollori.
Il libro si rivela utile sia a chi si accosta per la prima volta ai microcontrollori, sia
al lettore esperto. Il primo troverà nel libro il modo per iniziare nel modo corretto
e accrescere, capitolo dopo capitolo, la conoscenza in maniera graduale e
seguendo uno schema logico, cioè quello che sta alla base della struttura del
libro stesso; il lettore esperto, invece, potrà trovarvi numerosi spunti di
riflessione e approfondimenti. Il libro affronta, in maniera organica e seguendo
una sorta di “continuità” o canovaccio (pur rispettando una certa indipendenza
tra i vari capitoli) molteplici temi e argomenti, con l'intento di spiegare la logica e
le possibili problematiche connesse, i rischi e gli errori più comuni (e anche
quelli meno comuni…). Ha però il pregio di lasciare spazio alla creatività del
lettore, imprescindibile in un questo campo, fornendo una base fondamentale
per sviluppare progetti personali.
Questa opera vuole portare un concreto contributo alla preparazione dei futuri
tecnici, dal punto di vista di un ulteriore sviluppo di quanto il progresso
nell’applicazione dei microcontrollori prospetta nell’immediato futuro.
PIETRO ROGNONI
GIUSEPPE TADDUNI
Prefazioni
ix
Non entrerò in modo particolare nel merito dei contenuti di un manuale che gli
interessati allo sviluppo di applicazioni dei Peripheral Interface Controllers,
dagli hobbysti ai professionisti, troveranno senz'altro prezioso.
Mi preme soprattutto dire due parole sull'autore per mettere in luce come,
anche contenuti tecnico-scientifici, possano essere vissuti come un piacevole
racconto di esperienze che arricchisce i rapporti umani, se, chi li propone,
dimostra per essi una vera passione, oltre ad una magistrale competenza.
È il caso di Paolo, che io ho conosciuto tramite internet. La fantastica
evoluzione e diffusione della rete, rende possibile un modo nuovo di fare
amicizia, che unisce idee, interessi e conoscenze annullando distanze fisiche e
temporali.
Dopo l'iscrizione di Paolo al forum che amministro, alcuni anni fa, è risultata da
subito chiara la sua grande preparazione elettronica e, in particolare, la
profonda conoscenza dei PIC. La cura messa in ogni risposta, unita al rispetto
per le domande di ogni interlocutore, rese evidente il suo desiderio di aiutare chi
entrava nel piccolo grande mondo dei PIC, trasmettendogli, insieme al suo
entusiastico piacere di usarli, l'esperienza acquisita in innumerevoli progetti, sia
ludici che pratici, sempre intellettualmente coinvolgenti.
Un desiderio sfociato ora nella sfida che lo ha portato alla stesura di questo
manuale. Una vera sfida, perché la tecnologia elettronica evolve ad una velocità
impressionante, rendendo rapidamente obsoleti oggetti tecnologici che il più
creativo scrittore di fantascienza, qualche decina d'anni fa, nemmeno riusciva
ad immaginare.
Ma è una sfida che Paolo ha saputo vincere, mettendo in risalto l'essenza di
componenti dalle infinite possibilità, proponendone applicazioni valide ed
attraenti, sempre altamente stimolanti e formative e, soprattutto, indipendenti
dal tempo, come lo sono i contenuti di ogni didattica efficace.
Penso dunque di poter ringraziare Paolo a nome di tutti i lettori che, attraverso
le sue pagine, acquisiranno una solida base hardware e software, necessaria
per sfruttare pienamente le infinite possibilità dei PIC.
ZENO MARTINI
x
Prefazioni