~
Progetti ~
- powered
by JavaScript -
Microchip MPLAB ICD...
L'MPLAB-ICD (In-Circuit
Debugger) è uno strumento di sviluppo potente e
a basso costo, che può essere usato per sviluppare codice per i
microcontrollers Microchip della famiglia 16F87x e anche 16Cxx.
Questo strumento è realizzato per i microcontrollers
della famiglia PIC16F87x, dei quali sfrutta la
possibilità di programmazione In-Circuit (comunemente chiamata
ICSP, In-Circuit Serial Programming) e di In-Circuit Debugging.
Quello che vedete è il mio MPLAB-ICD, completamente autocostruito; sul retro è presente un connettore tipo RJ45 per il collegamento con l'Header mentre di fronte si ha un led che mostra lo stato del dispositivo, un connettore per il collegamento al PC attraverso la porta seriale e un connettore per la programmazione In-Circuit dei PIC16F87x.
Le principali caratteristiche dell'MPLAB-ICD sono le seguenti : | |
· Esecuzione in tempo
reale del codice · Single Step · Un breakpoint hardware · Possibilità di osservare le variabili del programma · Funzionamento da 3 a 5.5V · Funzionamento da 32kHz a 20MHz · Comunicazione col PC attraverso la porta seriale, a 19200 o 57600 baud · Compatibile con Windows 3.X, Windows 95/98/Me, Windows NT, e Windows 2000 |
Viene gestito attraverso l'MPLAB IDE dalle finestre visibili qui
sotto e, oltre a funzionare come emulatore in real-time (fino a
20MHz), offre la possibilità di programmare in-circuit i
PIC16F87x attraverso dei collegamenti esterni.
Questa è la finestra principale.
A lato è visibile la finestra delle opzioni.
Viene visualizzata |
Dalla finestra delle opzioni è anche possibile far eseguire un test all'hardware per sapere se tutto sta funzionando correttamente. In questo caso, dopo pochi secondi verrà visualizzata la seguente finestra :
Bello, ma a che serve ?
Credo che un esempio pratico di utilizzo possa rendere meglio l'idea delle potenzialità di questo oggetto.
La User's Guide dell'ICD (che tra l'altro contiene anche gli schemi completi del dispositivo, ma occhio all'errore...) fornita da Microchip è molto chiara e dettagliata, cmq riporto anche qui un esempio di utilizzo pratico, molto conciso, nella speranza che possa tornare utile a qualcuno.
Se l'argomento è di interesse, in seguito amplierò la descrizione dei vari passi e molto probabilmente scriverò del codice di esempio.
Quello che segue è l'hardware minimo necessario al funzionamento di un PIC :
[under construction - lo troverete entro
qualche giorno]
[schema circuito]
Mettete un PIC16F877 nello zoccolo dell' Header e collegate l'Header all'MPLAB-ICD, collegate poi l'MPLAB-ICD al computer usando un cavo pin-to-pin a 9 poli.
Inserite l'Header nello zoccolo del
PIC16F877 presente sul circuito, e solo
successivamente alimentate il circuito.
Tenete presente che L'MPLAB-ICD si alimenta con la stessa
Vcc che alimenta il PIC, che deve essere compresa
fra 3 e 5V, e il suo consumo varia da un minimo
di 35 ad un massimo di 60mA.
A questo punto si può passare al software :
Avviate l'MPLAB-IDE.
Naturalmente, in fase di
installazione, deve essere stato scelto di installare il
supporto dell'MPLAB-ICD.
Cliccando su Project - New
Project e date un nome al progetto :
Fate poi click su OK.
Apparirà una nuova finestra. Cliccate su
Add Node e selezionate il file che volete
debuggare, quindi cliccate ok. Il file sarà
visibile nella lista dei Project Files,
come visibile di seguito.
Se a fianco di Development Mode non
leggete "MPLAB ICD PIC16F877"
cliccate su Change... e poi selezionate
le voci MPLAB-ICD Debugger e PIC16F877.
La finestra vi dovrà apparire come quella che segue :
Quando cliccherete su Ok è possibile che vedrete un
messaggio di errore, poichè non è stata ancora
impostata la porta di comunicazione con l'ICD. Per
risolvere il problema basta cambiare porta, cliccando
sull'apposito menu a tendina, e poi cliccare su Reconnect.
Nota : se in quest'ultima
finestra non è possibile selezionare la voce "MPLAB
ICD Debugger" significa che in fase di installazione
dell'MPLAB-IDE non è stato selezionato il supporto per
l'MPLAB-ICD. In questo caso sarà necessario ripetere
l'installazione.
Se fin qui tutto è andato bene, ora
sullo schermo avrete anche questa nuova finestra :
Ora direi che è necessario fare un po'
d'ordine sullo schermo.
Cliccate su File, poi Open,
e selezionate lo stesso file che avete scelto in
precedenza. Oracliccate su Window - Special
Function Registers per vedere anche gli SFR.
Ora, ridimensionando opportunamente le finestre, dovreste
essere circa in questa situazione :
Ora è necessario compilare il programma (potete farlo premendo F10) e trasferire il programma nella memoria del PIC : per far ciò è sufficiente fare click sul tasto Program sulla finestra dell'ICD.
A questo punto è possibile eseguire le
istruzioni passo a passo premendo il tasto F7 e
vederne l'effetto sui registri, oppure F9 per
fare eseguire il programma al PIC in tempo reale.
Inoltre, se si apportano modifiche al programma, è sufficiente
ricompilare il file, fare di nuovo click sul tasto Program
e ripremere F9 per vederne gli effetti sul
circuito. Comodo, no ?
Prima di cominciare...
In questo esempio non ho considerato le limitazioni dell'MPLAB-ICD.
E' infatti necessario impostare la Configuration Word secondo quanto segue :
Inoltre:
- non è possibile utilizzare i pin RB3, RB6 ed RB7;
- 6 o 7 bytes di RAM sono riservate all'ICD e quindi non
utilizzabili;
- l'indirizzo 0 della Program Memory deve contenere l'istruzione
NOP;
- gli ultimi 256 o 288 bytes della Program Memory sono riservati
all'ICD e quindi non utilizzabili;
- un livello di stack non è disponibile.
La descrizione completa delle funzioni dell'MPLAB-ICD è presente nella sua User's Guide, che si trova su www.microchip.com - Development Tools - MPLAB-ICD.
Build your own ICD !
Come già anticipato, nella User's Guide
dell'MPLAB-ICD è presente anche il suo schema (ma fate
attenzione all'errore !).
E il firmware dell PIC16F876 ? Guardate bene
nella directory di installazione dell'MPLAB-IDE...
Ecco cosa si può fare unendo tutto il materiale e mettendo mano al saldatore :
Quella di sopra è una immagine della parte frontale del mio ICD. L'ho dotato di due connettori DB9, uno per il collegamento al PC e uno per la programmazione In-Circuit dei PIC16F87x.
Questo è l'MPLAB-ICD Header con a bordo il PIC16F877, a differenza dell'Header originale qui trova spazio anche un piccolo condensatore elettrolitico da 10µF (visibile in alto a destra).
Sul lato saldature dell'Header è presente il connettore DIL a 40 poli con pin dorati, che va saldato dal lato componenti. Per questo motivo ho dovuto far fare dei c.s. a doppia faccia con fori metallizzati (e solder LC + LS).
This page is (always) under construction.