Tutorial → PIC18 in C → Configurare hardware e software

Il PIC18 non ha una tastiera ed un monitor; per programmare il
microcontrollore ed effettuare
il debug del codice è quindi necessario utilizzare un normale PC, il software MPLAB X ed un In-Circuit Debugger
(ICD), come
già scritto nella pagina
precedente.
Questa pagina presenta alcuni concetti da conoscere per poter iniziare a scrivere il
primo programma.
L'installazione del software è banale. Unica avvertenza: serve una macchina di
una certa potenza, dato che MPLAB X non è esattamente un software leggero.
Il collegamento hardware
Il collegamento tra PC e ICD è oggi effettuato esclusivamente via USB.
L'installazione di MPLAB X include tutti i driver necessari ed anche gli
aggiornamenti del firmware del ICD.
Il collegamento tra ICD e microcontrollore è fatto tramite una specifica
interfaccia. Sono necessari, in genere, 5 fili:
- Massa e alimentazione, prelevati direttamente dal PC e applicati
(come comoda opzione) al PIC18.
- La tensione di programmazione Vpp (in alternativa alla
programmazione a bassa tensione, se disponibile). Lo stesso segnale è
utilizzato anche come reset
- I due segnali di debug veri e propri: ICSPDAT e ICSPCLK
- Un sesto filo è utilizzato per permettere la programmazione
senza utilizzare la Vpp (se supportata dal programmatore e dal
microcontrollore), Rimane comunque opzionale.
I PIC18 con hardware ICD
Alcuni processori includono tutto l'hardware necessario per effettuare il debug. In questo caso è
sufficiente collegare direttamente il circuito integrato al ICD.
In genere è consigliabile riservare i pin di programmazione/debug solo a
questo uso. Se serve, utilizzando gli accorgimenti descritti nei fogli
tecnici, è però possibile anche il loro uso generico.
Nella foto di apertura è visibile un PIC18F2431 collegato direttamente ad un ICD
3, tramite il connettore nell'angolo basso a sinistra della breadboard. Da
sinistra possiamo vedere:
- Filo grigio: MCLR/Vpp connesso direttamente al pin con lo stesso nome.
E' presente una resistenza di pull-up per poter utilizzare il pin come
reset durante il funzionamento normale.
- Filo rosso: alimentazione positiva (VDD)
- Filo nero: massa (VSS)
- Filo verde: ICSPDAT, connesso a PGD
- Filo arancione: ICSPCLK, connesso a PGC
- LVP non è collegato
- (i rimanenti due pin sono presenti solo per ragioni meccaniche e non
sono collegati a nulla)
Qui sotto, lo schema corrispondente, utilizzato in diversi esempi. Lo stesso circuito è
adatto per la programmazione, per il debug e per l'uso senza
connessione al PC (quest'ultimo previa alimentazione, ovviamente). Sono
presenti anche alcuni LED ed un pulsante.

Un circuito simile, che utilizza un PIC18F2xK20 è
PICdemo.
I PIC18 senza hardware ICD
Alcuni PIC18, soprattutto quelli con un minor numero di pin, non hanno
l'hardware dedicato al debug: in questo casi occorre utilizzare appositi
adattatori, indicati con il termine debug header. In pratica si tratta di
versioni modificate del microcontrollore, con alcuni piedini in più. Il circuito si
inserisce al posto del microcontrollore reale e si comporta allo stesso
modo, permettendo il collegamento al PC.
E' buona norma inserire tra la debug header ed il circuito
uno zoccolo, per evitare di piegare o rompere i pin, piuttosto delicati.
Questo potrebbe causare, in verità non molto spesso, problemi elettrici di funzionamento,
causati dalla maggiore lunghezza dei collegamenti.
I vantaggi dell'uso di debug header:
- possibilità di utilizzare tutti i pin presenti sul
dispositivo anche durante la fase di debug.
- circuito risulta più semplice in quanto già dotato dei condensatori
di disaccoppiamento e dei collegamenti all'ICD
- permette (a volte) di aumentare il numero dei breakpoint hardware
Gli svantaggi:
- costo non bassissimo, intorno ai 50 €, se non acquistato
all'interno di uno starter kit
- ingombro ben diverso da quello del solo integrato
- la debug
header è quasi sempre specifica per un solo modello di PIC18.
Occorre precisare che la debug header serve solo per il debug; se dovete
solo programmare un dispositivo potete farne a meno...
Nella fotografia di apertura è visibile la debug header del PIC18F14K50,
di colore rosso, sulla destra.
La creazione di un nuovo progetto
Ciascun programma deve essere incluso in un progetto.
La procedura è guidata:
- Inizia ovviamente con Create New Project. Le scelte di
default (Microchip embedded e Standalone Project) sono
quelle corrette, almeno all'inizio.
- Occorre quindi scegliere il PIC18 (è facile sbagliare: molte sigle
si assomigliano) e, se richiesto, la debug header
- Quindi viene richiesto il modello In-Circuit Debugger. Se è già
collegato, viene identificato automaticamente
- Il compilatore/assemblatore da utilizzare (in seguito XC8). Spesso
sono presenti più versioni, potrebbe essere conveniente scegliere quella
più aggiornata
- Il nome del progetto
Di seguito le finestre principali:
- L'elenco dei file del progetto. Progetti semplici sono costituiti da
un solo file.c più (facoltativo, ma consigliato) un file.h. Progetti
complessi comprendono molti file. Se sono
presenti più progetti, quello in uso (main project) deve essere selezionato con il
tasto destro.
- Il contenuto di eventuali file, appartenenti o meno al progetto
- La dashboard, che permette di monitorare l'uso delle
risorse nonché di modificare le scelte fatte (dal tipo di processore al
compilatore...)
- I messaggi nelle varie fasi di
compilazione/programmazione/esecuzione. Eventuali errori sono
evidenziati in rosso

I Configuration Bits definiscono alcune opzioni di funzionamento
dell'hardware del
microcontrollore.
Si tratta di aspetti piuttosto tecnici in quanto la loro impostazione
richiede conoscenze
di dettaglio sul funzionamento del PIC18. Tre le possibili strade da
seguire, in funzione delle competenze possedute:
- La strada più semplice: utilizzare un file di
configurazione già predisposto per il PIC18 che si intende usare.
Alcuni file completi, usati in molti degli esempi mostrati in queste
pagine, possono essere scaricati cliccando sul
seguente link. Inutile dire che
è la strada consigliata per chi comincia, sebbene un po' rigida
- La strada intermedia prevede la creazione o la modifica dei
bit di configurazione in modo parzialmente
automatico: Window → PIC Memory Views → Configuration Bits → (modifica
dei Configuration Bits, con riferimento alla descrizione mostrata) → Generate Source
Code → (copia e incolla nel file sorgente)
- Infine è sempre possibile leggere l'apposita sezione dei fogli
tecnici ed impostare i bit di configurazione manualmente. Per esempio a
pagina 300 del data sheet del PIC18f26k20 potete trovare il capitolo "23.1
- Configuration Bits"
L'impostazione dei Configuration Bits deve essere descritta all'interno del codice
sorgente attraverso la direttiva #pragma config,
da inserire possibilmente in uno specifico file.h, da includere nel progetto
(#include "configurationsbits.h") (nota
1)
I bit sono specifici per il singolo PIC18, molti possono essere
all'inizio ignorati, mantenendo le configurazioni standard proposte. Tra
quelli che è opportuno conoscere/modificare possono essere citati, a mero
titolo di esempio:
- #pragma config OSC = xxx
- Imposta la sorgente di clock. Opzioni comuni sono il clock interno
(IRC), un cristallo al quarzo (HC), un gruppo RC esterno, un oscillatore
esterno (EC), molti con alcune varianti. E' inoltre possibile attivare o
meno un PLL interno
- #pragma config WDTEN = ON | OFF
- Permette di attivare o meno un "cane da guardia". Se non se ne
comprende il significato, meglio disattivarlo
- #pragma config MCLRE = ON | OFF
- Specifica se il pin esterno dovrà essere utilizzato come reset o
meno
- #pragma config LVP = ON | OFF
- Permette di programmare il dispositivo usando o meno la
tensione Vpp. Da notare che con alcuni PIC e con alcuni programmatori
questa opzione deve essere OFF
- La scelta di includere i Configuration Bits in un header
file è discutibile. Altre opzioni sono inserirli in un separato file
sorgente (.c) appartenente al progetto oppure (sconsigliato per i
grossi progetti) nel file che contiene il main()
Data di creazione di questa pagina: settembre 2014
Ultima modifica: 30 marzo 2016
Una pagina simile:
Configurare hardware e software (in
Assembly)