Debugger/Programmer MPLAB ICD 2 [recensione]

In questo articolo si evidenzieranno le caratteristiche del debugger/programmer MPLAB ICD 2, prodotto dalla Microchip, e dell'ambiente di svilupppo MPLAB IDE. Si riporterà poi un esempio di suo utilizzo nel campo della robotica, nello specifico di un rover esapode, progettato per l'esplorazione planetaria. Il suo obiettivo è di ricercare e raggiungere un determinato target, ne l caso specifico una palla rossa, attraverso la visione stereoscopica.

MPLAB ICD 2 è un low-cost real-time debugger e programmer.
Prodotto dalla Microchip, l' in-circuit debugger in esame permette di eseguire il debug di una
gamma di microcontrollori PIC attraverso l'ambiente di sviluppo integrato (IDE) MPLAB®.
MPLAB ICD 2 ha le seguenti caratteristiche:
– In-Circuit Debugging
– Esecuzione del codice in real-time e in single-step
– Uso di breakpoints, registri e possibilità di monitorare e modificare le variabili
– Led di diagnostica (alimentazione, occupato, errore)
– Supporta sistemi target a bassa tensione (da + 2,0 a + 6,0 V)
– Firmware aggiornabile dal PC
– Memoria di lettura/scrittura e stack per il microcontrollore target
– Congelamento delle informazioni in caso di blocco
COLLEGAMENTO TARGET – PC
Il modulo ICD 2 è collegabile dal PC alla scheda target dell'utente consentendo in tempo reale
l'esecuzione diretta del debug In-Circuit del microcontrollore. È disponibile un'ampia gamma di
connettori d'interfaccia che consente di collegare il modulo ICD 2 al connettore femmina IC della
scheda target nei casi in cui non sia disponibile un collegamento ICD modulare adeguato:

- Cavo di interfaccia ICD
- Cavo di interfaccia USB (massima velocità 2Mbit/sec)
- Cavo di interfaccia RS-232
MPLAB ICD 2 è collegato al target tramite il cavo di interfaccia plug a sei poli, come mostrato in
figura.
AMBIENTE DI SVILUPPO MPLAB IDE
L'ICD 2 è pienamente supportato dall'ambiente di sviluppo integrato MPLAB IDE, scaricabile
gratuitamente dal sito della Microchip (link a fine recensione).
Dopo averlo installato, per prima cosa occorre configurarlo, selezionando l'MPLAB ICD 2 come
Device. Il dipositivo può essere selezionato sia come debugger che come pragrammer.

In Settings è

possibile settare i vari parametri necessari. Importante è la tipologia di comunicazione, seriale
RS232 o USB. Nel primo caso il target da programmare o monitorare deve essere necessariamente
alimentato, mentre nel secondo, per tensioni non troppo elevate può essere sufficiente
l'alimentazione ricavata dal PC. Quando provvisto di alimentazione, l'MPLAB ICD 2 può
alimentare lui stesso il target, fino ad un massimo di 200 mA con una tensione di 5 V.
Creare un progetto in MPLAB IDE è molto semplice. Infatti questo software mette a disposizione
il Project Wizard, una creazione del progetto guidata che ti permette di configurare vari aspetti,
come il linguaggio di programmazione, le librerie, script e altro ancora.
Realizzato lo script, non basta che compilarlo
premendo Build All, e "scaricarlo" nel target.
Una volta effettuate queste operazioni, è possibile
entrare nello stato di Run, e far "girare il
programma" nel pic.
Ci sono diversi aspetti interessanti di questo
software, ma sicuramenti i più utili sono l'utilizzo
dei breakpoints, con possibilità di avanzare passo
passo, e la funzione Watch, che permette di
osservare le variabili in tempo reale. Queste
funzioni permettono una veloce identificazione di
errori fatti, e di avere sempre sotto gli occhi i
parametri che ci interessano.
È poi possibile fare l'upload del programma dal PIC, per poi modificarlo o sostituirlo.
Sono anche già disponibili i driver per Windows 7, il che rendono questo software all'avanguardia
anche da questo punto di vista.
HEXAPOD ROVER
SCOPO
Personalmente ho utilizzato questo dispositivo per programmare un rover esapode. Le funzioni di
questo robottino sono state quelle di localizzare e raggiungere un target predefinito.
PASSI
L'implementazione dei "passi" ha richiesto
un'attenzione molto particolare: si è visto che il
migliore passo implementabile per un esapode è
quello utilizzato dagli insetti.
Un singolo passo,
avanti o indietro, è composto sostanzialmente di
quattro azioni, indicate in figura 2.2 con le lettere
a, b, c e d. Durante la prima azione un tripode,
formato da due zampe sullo stesso lato del rover
ed una centrale sul lato opposto, è mantenuto a
terra, mentre le rimanenti tre zampe vengono
sollevate e mosse avanti (2.2 a). Nella seconda
azione il tripode rimasto a terra viene mosso
all'indietro, causando uno spostamento in avanti
del rover (2.2 b). Nella terza azione il tripode che
era sollevato viene abbassato a terra, mentre
quello che era precedentemente a terra viene
sollevato (2.2 c).
Nella quarta ed ultima azione il tripode a terra viene mosso all'indietro, generando in questo modo
un secondo movimento in avanti del rover, mentre il secondo tripode viene mosso in avanti per
raggiungere la posizione iniziale (2.2 d). Per un movimento all'indietro, le singole azioni vengono
invertite.
Durante questa sequenza, un lato del rover è alternativamente sostenuto da una zampa soltanto,
caricata da metà del peso del robot, per la simmetria longitudinale: metà del peso si scarica infatti
sul lato destro, e metà si scarica sul lato sinistro. Questo non rappresenta un problema, dal momento
che nella configurazione a zampe totalmente estese (rover alzato da terra) i motori generano forza a
sufficienza con un buon margine di sicurezza.
TELECAMERE E METODOLOGIA
Per far questo ho dotato il rover di due
telecamerine, montate su un supporto avente due
gradi di libertà, una rotazione longitudinale e una
rotazione verticale.
Le telecamere che ho utilizzato sono due CAM VGA 100, di dimensioni ridotte (28 x 20 mm) e con
una alimentazione pari a 3.3 V.
Per individuare l'obiettivo, nel mio caso una palla rossa, il rover compie una panoramica
dell'ambiente che lo circonda attraverso delle foto jpg (7 foto coprono 180°), e ricerca la palla in
base al colore (individuazione dei pixel in un certo range RGB) e alla forma (funzione edge
detector, e funzione di Canny).
Un esempio dei risultati utillando i metodi sopracitati sono i seguenti:
Una volta individuata, si calcola la distanza da essa tramite la triangolazione delle due foto
acquisite, e la direzione in base alla posizione del braccetto meccanico. Fatto questo, si dirige verso
il target, ricalcolando ogni 5 passi la sua direzione e la sua distanza relativa.
Un esempio del suo modo di operare è visibile nei link a fine recensione.
UTILIZZO DELL' MPLAB ICD2
Come si può immaginare, unitamente alla
costruzione meccanica dell'oggetto, la parte più
corposa del progetto è stata quella software
(implementazione dei passi, acquisizione ed
elaborazione delle immagini, algoritmi di ricerca
del target), ed in questo l'MPLAB ICD 2 mi è
stato molto utile, perchè mi ha permesso di
programmare facilmente il PIC, ed altrettanto
facilmente controllare gli inevitabili errori fatti
attraverso la sua funzione di debugger. Il
linguaggio di programmazione che ho utilizzato è
stato il C, implementato nell'ambiente MPLAB
IDE.
Per programmare i PIC ho utilizzato una semplice
scheda elettronica (vedi figura), in cui è presente
un cristallino da 20 MHz, due condensatori, una
resistenza, un limitatore di tensione LM7805, un
MAX232 per la comunicazione seriale ed il
connettore plug&play. Come PIC ho utilizzato tre
microprocessori della famiglia PIC16F, il
modello 876A: uno per la movimentazione ed il
coordinamento dei sei arti, uno per il supporto
mobile delle telecamere, ed infine uno per la
elaborazione delle immagini.
Per tutta la gestione ho poi utilizzato la scheda di
progettazione Rabbit RCM3700, che è dotata 2
porte seriali RS232 con controllo di flusso, 2
ingressi analogici ad 8 bit, un supporto per
modulo Xbee e XbeePRO, 3 led, 1 pulsante, 5
connettori di espansione, una batteria di backup al
litio per modulo RCM (magari oggetto di una
prossima recensione).
Quindi niente da dire, davvero un ottimo debugger/programmer, facile da usare, comodo ed
indispensabile per chi inizia ad avvicinarsi al mondo affascinante dei PIC.
Alla prossima recensione.
Daniele Ferraresi
Link:
1. MPLAB IDE
http://www.microchip.com/stellent/idcplgIdcService=SS_GET_PAGE&nodeId=1406&dDo
cName=en019469&part=SW007002
2. HEXAPOD ROVER YOUTUBE
http://www.youtube.com/watch?v=Ax_FH54OmDQ
http://www.youtube.com/watch?v=6atDXOoD5Rs

MPLAB ICD 2 è un low-cost real-time debugger e programmer. Prodotto dalla Microchip, l' in-circuit debugger in esame permette di eseguire il debug di unagamma di microcontrollori PIC attraverso l'ambiente di sviluppo integrato (IDE) MPLAB®.MPLAB ICD 2 ha le seguenti caratteristiche:

– In-Circuit Debugging

– Esecuzione del codice in real-time e in single-step

– Uso di breakpoints, registri e possibilità di monitorare e modificare le variabili

– Led di diagnostica (alimentazione, occupato, errore)

– Supporta sistemi target a bassa tensione (da + 2,0 a + 6,0 V)

– Firmware aggiornabile dal PC– Memoria di lettura/scrittura e stack per il microcontrollore target

– Congelamento delle informazioni in caso di blocco

COLLEGAMENTO TARGET– PC

Il modulo ICD 2 è collegabile dal PC alla scheda target dell'utente consentendo in tempo realel'esecuzione diretta del debug In-Circuit del microcontrollore. È disponibile un'ampia gamma diconnettori d'interfaccia che consente di collegare il modulo ICD 2 al connettore femmina IC dellascheda target nei casi in cui non sia disponibile un collegamento ICD modulare adeguato:

- Cavo di interfaccia ICD

- Cavo di interfaccia USB (massima velocità 2Mbit/sec)

- Cavo di interfaccia RS-232

MPLAB ICD 2 è collegato al target tramite il cavo di interfaccia plug a sei poli, come mostrato in figura.

AMBIENTE DI SVILUPPO MPLAB IDE

L'ICD 2 è pienamente supportato dall'ambiente di sviluppo integrato MPLAB IDE, scaricabilegratuitamente dal sito della Microchip (link a fine recensione). Dopo averlo installato, per prima cosa occorre configurarlo, selezionando l'MPLAB ICD 2 comeDevice. Il dipositivo può essere selezionato sia come debugger che come pragrammer. In Settings èpossibile settare i vari parametri necessari. Importante è la tipologia di comunicazione, seriale RS232 o USB. Nel primo caso il target da programmare o monitorare deve essere necessariamente alimentato, mentre nel secondo, per tensioni non troppo elevate può essere sufficientel'alimentazione ricavata dal PC. Quando provvisto di alimentazione, l'MPLAB ICD 2 può alimentare lui stesso il target, fino ad un massimo di 200 mA con una tensione di 5 V. Creare un progetto in MPLAB IDE è molto semplice. Infatti questo software mette a disposizione il Project Wizard, una creazione del progetto guidata che ti permette di configurare vari aspetti, come il linguaggio di programmazione, le librerie, script e altro ancora. Realizzato lo script, non basta che compilarlo premendo Build All, e "scaricarlo" nel target. Una volta effettuate queste operazioni, è possibile entrare nello stato di Run, e far "girare il programma" nel pic. Ci sono diversi aspetti interessanti di questo software, ma sicuramenti i più utili sono l'utilizzodei breakpoints, con possibilità di avanzare passopasso, e la funzione Watch, che permette di osservare le variabili in tempo reale. Queste funzioni permettono una veloce identificazione di errori fatti, e di avere sempre sotto gli occhi i parametri che ci interessano.È poi possibile fare l'upload del programma dal PIC, per poi modificarlo o sostituirlo. Sono anche già disponibili i driver per Windows 7, il che rendono questo software all'avanguardia anche da questo punto di vista.

HEXAPOD ROVER

SCOPO

Personalmente ho utilizzato questo dispositivo per programmare un rover esapode. Le funzioni diquesto robottino sono state quelle di localizzare e raggiungere un target predefinito.

Debugger/Programmer MPLAB ICD 2: PASSI

L'implementazione dei "passi" ha richiestoun'attenzione molto particolare: si è visto che ilmigliore passo implementabile per un esapode èquello utilizzato dagli insetti. Un singolo passo,avanti o indietro, è composto sostanzialmente diquattro azioni, indicate in figura con le letterea, b, c e d.

Durante la prima azione un tripode,formato da due zampe sullo stesso lato del rovered una centrale sul lato opposto, è mantenuto aterra, mentre le rimanenti tre zampe vengonosollevate e mosse avanti (a). Nella secondaazione il tripode rimasto a terra viene mossoall'indietro, causando uno spostamento in avantidel rover (b). Nella terza azione il tripode cheera sollevato viene abbassato a terra, mentrequello che era precedentemente a terra viene sollevato (c).Nella quarta ed ultima azione il tripode a terra viene mosso all'indietro, generando in questo modoun secondo movimento in avanti del rover, mentre il secondo tripode viene mosso in avanti perraggiungere la posizione iniziale (d). Per un movimento all'indietro, le singole azioni vengonoinvertite.Durante questa sequenza, un lato del rover è alternativamente sostenuto da una zampa soltanto,caricata da metà del peso del robot, per la simmetria longitudinale: metà del peso si scarica infattisul lato destro, e metà si scarica sul lato sinistro. Questo non rappresenta un problema, dal momentoche nella configurazione a zampe totalmente estese (rover alzato da terra) i motori generano forza asufficienza con un buon margine di sicurezza.

MPLAB ICD 2: Telecamere e metodologia

Per far questo ho dotato il rover di duetelecamerine, montate su un supporto avente duegradi di libertà, una rotazione longitudinale e unarotazione verticale.Le telecamere che ho utilizzato sono due CAM VGA 100, di dimensioni ridotte (28 x 20 mm) e conuna alimentazione pari a 3.3 V.Per individuare l'obiettivo, nel mio caso una palla rossa, il rover compie una panoramicadell'ambiente che lo circonda attraverso delle foto jpg (7 foto coprono 180°), e ricerca la palla inbase al colore (individuazione dei pixel in un certo range RGB) e alla forma (funzione edgedetector, e funzione di Canny).

Un esempio dei risultati utillando i metodi sopracitati sono i seguenti:Una volta individuata, si calcola la distanza da essa tramite la triangolazione delle due fotoacquisite, e la direzione in base alla posizione del braccetto meccanico. Fatto questo, si dirige versoil target, ricalcolando ogni 5 passi la sua direzione e la sua distanza relativa.Un esempio del suo modo di operare è visibile nei link a fine recensione.

UTILIZZO DELL'MPLAB ICD2

Come si può immaginare, unitamente alla costruzione meccanica dell'oggetto, la parte più corposa del progetto è stata quella software (implementazione dei passi, acquisizione edelaborazione delle immagini, algoritmi di ricercadel target), ed in questo l'MPLAB ICD 2 mi èstato molto utile, perchè mi ha permesso diprogrammare facilmente il PIC, ed altrettantofacilmente controllare gli inevitabili errori fattiattraverso la sua funzione di debugger. Il linguaggio di programmazione che ho utilizzato èstato il C, implementato nell'ambiente MPLABIDE.Per programmare i PIC ho utilizzato una semplicescheda elettronica, in cui è presente un cristallino da 20 MHz, due condensatori, unaresistenza, un limitatore di tensione LM7805, un MAX 232 per la comunicazione seriale ed il connettore plug&play. Come PIC ho utilizzato tremicroprocessori della famiglia PIC16F, il modello 876A: uno per la movimentazione ed il coordinamento dei sei arti, uno per il supporto mobile delle telecamere, ed infine uno per la elaborazione delle immagini.Per tutta la gestione ho poi utilizzato la scheda diprogettazione Rabbit RCM3700, che è dotata 2 porte seriali RS232 con controllo di flusso, 2 ingressi analogici ad 8 bit, un supporto permodulo Xbee e XbeePRO, 3 led, 1 pulsante, 5connettori di espansione, una batteria di backup allitio per modulo RCM (magari oggetto di una prossima recensione).

Quindi niente da dire, davvero un ottimo debugger/programmer, facile da usare, comodo ed indispensabile per chi inizia ad avvicinarsi al mondo affascinante dei PIC.

Alla prossima recensione.

Link:

1.MPLAB IDE

2.HEXAPOD ROVER YOUTUBE

Microchip ICD2 in vendita da Farnell.

Scarica subito una copia gratis
Tags:,

Una risposta

  1. Avatar photo Maurizio S. 31 Dicembre 2010

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend