pillole di microcontrollori pic - i love books · paolo rognoni microcontrollori pic manuale di...

10
Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di

Upload: truongminh

Post on 25-Sep-2018

224 views

Category:

Documents


4 download

TRANSCRIPT

Page 1: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

Paolo Rognoni

Microcontrollori PIC

Manuale di progettazione con esempi pratici in linguaggio C

Pillole di

I ROMANA LIBRO:Layout 1 11-09-2009 13:08 Pagina 1

Page 2: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

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.

Page 3: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

iii

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

Page 4: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

iv

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

Page 5: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

v

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

Page 6: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

vi

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

Page 7: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

vii

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

Page 8: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

viii

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

Page 9: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

Prefazioni ix

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

Page 10: Pillole di Microcontrollori PIC - I Love Books · Paolo Rognoni Microcontrollori PIC Manuale di progettazione con esempi pratici in linguaggio C Pillole di I ROMANA LIBRO:Layout 1

x Prefazioni

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