Tutorial → PIC18 → Assembly
→ Configurare hardware e software

Il PIC18 non ha una tastiera né 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). Nella fotografia è visibile un ICD PICkit 3 collegato, a sinistra, al
PC con un cavetto USB e, a destra, al circuito stampato su cui è presente un
PIC18F26K20 (PICdemo).
Questa pagina presenta alcuni concetti da conoscere per poter iniziare a scrivere il
primo programma con hardware reale e non simulato.
Il collegamento hardware
L'In-Circuit Debugger (ICD) è il dispositivo che permette di
programmare il PIC18.
Il collegamento tra PC e ICD è effettuato via USB.
L'installazione di MPLAB X include tutti i driver necessari ed anche gli
eventuali aggiornamenti del firmware del ICD.
Il collegamento tra ICD e microcontrollore è fatto tramite una specifica
interfaccia. Sono necessari, in genere, 5 fili, come mostrato nello schema
seguente:
- 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 (opzionale) è utilizzato per permettere la programmazione
senza utilizzare la Vpp (se supportata dal programmatore e dal
microcontrollore).
I PIC18 con hardware di debug interno
Alcuni PIC18 (tra cui il PIC18F26K20) includono tutto l'hardware necessario per effettuare il debug; è
quindi sufficiente collegare direttamente il circuito integrato al ICD (nota 1).
Qui sotto, uno schema completo che verrà utilizzato in molti esempi ed
anche per realizzare
il circuito stampato della fotografia di apertura della pagina.
Questo circuito è
adatto per la programmazione, per il debug e per l'uso senza
connessione al PC.
Questo circuito è facilmente realizzabile su breadboard.

I PIC18 senza hardware di debug interno
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.
La creazione di un nuovo progetto
Ciascun programma deve essere incluso in un progetto. La procedura per
creare un progetto è 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 di In-Circuit Debugger da
utilizzare. Se è già
fisicamente collegato, viene identificato automaticamente
- L'assemblatore da utilizzare (in seguito MPASM). Spesso
sono presenti più versioni, potrebbe essere conveniente scegliere quella
più aggiornata
- Il nome del progetto
Di seguito le finestre principali di MPLAB X:
- In alto a sinistra, l'elenco dei file del progetto (nell'esempio
config.asm e main.asm). Progetti semplici sono costituiti da
uno o due file.asm, progetti
più complessi comprendono molti file. Se sono
presenti più progetti, quello in uso (main project, in grassetto) deve essere selezionato con il
tasto destro.
- In alto a destra, il contenuto di un file sorgente (nell'esempio
main.asm)
- In basso a sinistra, la dashboard, che permette di
monitorare l'uso delle risorse nonché di modificare le scelte fatte (per
esempio: il tipo di processore)
- In basso a destra, i messaggi nelle varie fasi di
compilazione, programmazione ed esecuzione. Eventuali errori (qui non
presenti) sono
evidenziati in rosso
- In altro, ovviamente, le varie icone di compilazione e debug

Configuration Bits
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. Un
file completo per PIC18f26k20, usato in tutti gli esempi mostrati in
queste pagine, può essere scaricato cliccando sul
link che trovate a fondo pagina. 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"
I Configuration Bits devono
essere impostati come prima cosa e non sono in genere modificati durante
l'esecuzione del codice. La loro impostazione deve essere descritta all'interno del codice
sorgente attraverso la direttiva CONFIG dell'assemblatore
(nota 2)
da inserire possibilmente in uno specifico file.
Tra
i Configuration Bits che potrebbe essere opportuno conoscere e/o modificare si possono evidenziare i
seguenti (nota 3):
- CONFIG FOSC = INTIO67 ; Oscillator Selection bits (Internal
oscillator block, port function on RA6 and RA7)
- Questo bit imposta la sorgente di clock. Nell'esempio mostrato verrà
utilizzato il generatore di clock interno al PIC18, lasciando inalterate
le funzioni assegnate ai pin RA6 e RA7. Un'alternativa è l'uso di quarzo
esterno, ovviamente se presente
- CONFIG WDTEN = OFF ; Watchdog Timer Enable bit (WDT is
controlled by SWDTEN bit of the WDTCON register)
- Permette di disattivare un "cane da guardia" che controlla
la regolare esecuzione del software. Fino a quando non se ne
comprende il significato, meglio disattivarlo
- CONFIG MCLRE = ON ; MCLR Pin Enable bit (MCLR pin enabled; RE3
input pin disabled)
- Specifica che un piedino dovrà essere utilizzato come reset. Questa
configurazione è necessaria in fase di debug, opzionale durante il
funzionamento normale
- CONFIG LVP = OFF ; Single-Supply ICSP Enable bit (Single-Supply
ICSP disabled)
- Permette di programmare il PIC18 senza usare un piedino dedicato
solo a questo scopo
- CONFIG PBADEN = OFF ; PORTB A/D Enable bit (PORTB<4:0> pins
are configured as digital I/O on Reset)
- Configura all'accensione alcuni pin come ingressi digitali anziché
come ingressi analogici. Questa scelta può essere cambiata durante
l'esecuzione del codice
- 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
- Non corrispondono quindi a nessuna istruzione macchina e quindi non vengono
"eseguiti" dal processo
- Si tratta di esempi relativi al PIC18f26k20, eventualmente da
adattare al PIC18 in uso
Data di creazione di questa pagina: marzo 2016
Ultima modifica: 10 luglio 2017