Sviluppare un progetto con MPLAB®

Un buon ambiente di sviluppo integrato è il segreto del successo nella programmazione dei micro. MPLAB® IDE rappresenta la sala comandi per PIC e dsPIC (MPLAB X è la versione successiva). Si tratta di una applicazione a 32bit  supportata  dal  sistema operativo Windows, semplice da utilizzare. Con un unico software è infatti possibile gestire tutte le fasi, dalla stesura del codice alla programmazione del micro. Nel presente articolo si cercherà di comprendere i vari passi che caratterizzano l’intero ciclo di vita del firmware, realizzato tramite  MPLAB IDE; si andrà dalla progettazione e scelta del dispositivo alla sua programmazione,  passando per le varie fasi di debugging.  Inoltre, saranno descritti i componenti software free messi a disposizione all’interno di questo ambiente di sviluppo e gli add-on hardware relativi alla programmazione. La versione di riferimento è la 7.40, ma i flussi di programmazione potranno essere implementati anche nelle versioni attuali.

INTRODUZIONE

MPLAB®  IDE (Integrated Development Environment) è un ambiente di sviluppo integrato fornito gratuitamente da Microchip, per la programmazione di microcontrollori PIC e di dsPIC.  Questo ambiente di sviluppo funge anche da interfaccia grafica unificata per software e hardware aggiuntivo prodotto  sia da Microchip  stessa che da terze parti. Passare da un tool all’altro è semplice e veloce. Ad esempio, basta un click per decidere di utilizzare il programmatore/debugger ICD 2 (o versioni successive) dopo aver testato il firmware con il simulatore. Senza dubbio si può affermare che una delle armi vincenti di Microchip nell’ambito dei microcontrollori  e DSP è stata proprio l’elevata integrazione di tutti i tools di programmazione. L’altro grande vantaggio offerto dall’ambiente di sviluppo è il simulatore che permette di testare le proprie applicazioni, prima ancora di realizzare il prototipo;  in questo modo  è possibile rendersi conto di eventuali conflitti tra le periferiche on-board e ridurre in tal modo il tempo di progettazione del dispositivo finale. Solo dopo  essersi accertati del corretto funzionamento del firmware (almeno con il simulatore) è possibile utilizzare MPLAB ICD2 per programmare e analizzare l’hardware oppure semplicemente programmare il micro tramite  tools come PICSTART Plus o MPLAB PM3.

CICLO DI SVILUPPO DEL FIRMWARE

Il processo di scrittura di un’applicazione è spesso indicato  con il termine ciclo di sviluppo, poiché è raro che tutti  gli step, dal progetto  all’implementazione,  possano essere eseguiti  correttamente  al primo  colpo.  Molto  più  spesso il  codice è scritto, testato e poi modificato al fine di produrre un’applicazione perfettamente funzionante; la figura 1 riporta una schematizzazione di tale ciclo. Per svolgere tutte queste operazioni sono necessari, tra l’altro: un editor di testi per scrivere il codice, un project manager per organizzare i files, un compilatore o assemblatore per convertire il codice sorgente in codice macchina, un software che simuli il comportamento  del micro o un hardware che effettui il download sul chip. È qui che entra in gioco un ambiente di sviluppo integrato, consentendo ai progettisti  di sistemi embedded di avanzare attraverso il ciclo senza la distrazione di dover cambiare continuamente il tool impiegato. Utilizzando MPLAB, tutte le funzioni sono integrate e quindi il programmatore può concentrarsi esclusivamente sul completamento dell’applicazione.

Figura 1. Ciclo di sviluppo di una applicazione

Figura 1. Ciclo di sviluppo di una applicazione

Installazione ed esecuzione

Per l’installazione del software è possibile seguire due possibili strade:

  1. Installazione da CD-ROM. In questo caso è sufficiente inserire il CD-ROM all’interno del lettore e seguire le istruzioni a video per l’installazione oppure lanciare manualmente menu.exe presente nella root del CD-ROM.
  2. Installazione da Web. La pagina web a cui fare riferimento è la seguente: http://ww1.microchip.com/downloads/en/DeviceDoc/mp740_full.zip. Dopo aver scaricato il file è necessario decomprimerlo e avviare il relativo file di setup.

La schermata  iniziale che si presenta al primo avvio è riportata in figura 2.

Figura 2. Schermata iniziale di MPLAB IDE

Figura 2. Schermata iniziale di MPLAB IDE

Project wizard: creazione del primo  progetto

La creazione e gestione di un progetto passa attraverso le seguenti fasi:

  • Selezione del dispositivo;
  • Selezione del linguaggio di programmazione;
  • Inserimento files del linker;
  • Creazione files di codice;
  • Compilazione;
  • Verifica del codice con il simulatore.

Per agevolare il compito del programmatore, MPLAB fornisce un comoda utility  che consente di automatizzare tutti questi passi, almeno le prime volte che si utilizza il software; successivamente, quando si sarà acquisita una certa familiarità, si può procedere anche in modo manuale. Per mostrare come si procede, si scriverà un semplice programma dimostrativo in linguaggio assembler, con funzione toggle su un pin di output.  Sarà inoltre mostrato come effettuare il download  di tale codice su di una scheda custom oppure sulla PIC DEM Board di Microchip, mediante l’uso di ICD2. Innanzitutto  è necessario selezionare il PIC su cui è basato il progetto,  andando da Configure->Select Device; la figura 3 mostra la schermata relativa. Dalla combo box Device selezionare  PIC18F452.

Figura 3. Selezione del PIC da utilizzare

Figura 3. Selezione del PIC da utilizzare

La presenza di led verdi e rossi nella schermata, indicano rispettivamente la compatibilità  o meno dei programmatori, dei linguaggi e dei debugger per il dispositivo prescelto. In alcuni casi si può trovare il colore giallo, che indica una compatibilità parziale. A questo punto è possibile avviare la procedura automatica per la creazione del progetto e l’inserimento dei  relativi  files, selezionando Project-> Project Wizard… L’utilizzo di un progetto non è strettamente  necessario per  la compilazione  di  un  file,  ma diventa essenziale per progetti  complessi che sono organizzati in più files. Dopo che è stata visualizzata la schermata iniziale bisogna premere il tasto Next. Gli step da seguire sono di seguito descritti:

  1. La prima opzione da selezionare è il dispositivo da utilizzare (è comunque  preferibile impostarlo da Select Device per rendersi conto delle compatibilità con i vari tools). Premere Avanti per continuare.
  2. Il secondo passo consiste nell’impostazione del linguaggio di programmazione da utilizzare. Come già ricordato  MPLAB garantisce la piena compatibilità di compilatori di terze parti, nonché dei suoi C18 e C30. Per l’esempio in questione si utilizzerà però MPASM Assembler (fornito  gratuitamente insieme a MPLAB).  È interessante notare che MPLAB conosce già la locazione dell’assembler e del linker. Premere Avanti per continuare.
  3. A questo punto viene richiesto l’inserimento del nome ed il percorso del progetto. Premere Avanti per  accedere allo  step  successivo, dopo  aver immesso tali informazioni.
  4. È  giunto  il momento  di inserire il file sorgente; essendo un dimostrazione del funzionamento  di MPLAB e non di programmazione, sarà sufficiente selezionare un modello fornito  da MPLAB stesso. Si tratta semplicemente di un file che viene usato per iniziare un progetto, poiché dispone delle sezioni  essenziali  di   cui esso è costituito. Selezionare il file f452tmpo.asm, presente al percorso: C:\xxx\Microchip\MPASM Suite\Template\Object\ (dove xxx indica la cartella di installazione di MPLAB, che di default è Program Files). Premere il pulsante Add per aggiungere il file al progetto  e quindi spuntarlo dalla relativa checkbox. In tal modo verrà creata una copia del file nella cartella di progetto.
  5. Oltre al file del codice è necessario specificare ed inserire il file linker, che contiene informazioni relative all’organizzazione della memoria e ai registri del PIC. Quindi selezionare il file 18f452.lkr dal percorso  C:\Programmi\Microchip\MPASM Suite\LKR\. Nella stessa cartella  si può notare la presenza di un file simile 18f452i.lkr, che però deve essere utilizzato con il programmatore/debugger MPLAB ICD2. Tale file linker riserva una parte dell’area di memoria del PIC al debugger. Poiché si utilizzerà solo il simulatore (almeno in questa prima fase) è sufficiente usare il primo  file. A questo punto  il progetto  presenta due file, come è mostrato in figura 4. Premere Avanti per visualizzare la schermata successiva, in cui vengono riassunte tutte le impostazioni che sono state effettuate. Premendo il tasto Fine si conclude la procedura.
Figura 4. File aggiunti al progetto

Figura 4. File aggiunti al progetto

Il progetto  è dunque stato creato ed i relativi files sono  visibili  dalla  finestra  Project Window,  come riportato in figura 5.

Figura 5. La finestra contenente i files di progetto

Figura 5. La finestra contenente i files di progetto

Da tale finestra è possibile, tramite doppio click, aprire i file all’interno della finestra MPLAB IDE Editor.

Consigli per ottimizzare l’area di lavoro

Una funzione particolarmente utile, quando si lavora con progetti costituiti da file multipli,  è la visualizzazione a tab dei files; questo permette  di  avere in un’unica finestra tutti  i files. Per impostarla bisogna aprire la finestra editor e premere il tasto destro del mouse; selezionare dal menu  contestuale la voce Properties e quindi spuntare la checkbox Use Tabbed Window. Per rendere effettiva questa modifica, MPLAB chiederà di chiudere e riaprire il programma. Come impostazione base, l’ambiente di sviluppo utilizza colori differenti a seconda del tipo di codice (es. commenti, istruzioni assembler, …). È possibile  intervenire su queste impostazioni utilizzando sempre la voce Properties e selezionando il tab relativo al testo. In esso è possibile modificare i colori delle varie parti del testo, facendo click sul pulsante Choose Colors; inoltre, è possibile selezionare il font  utilizzato e la relativa grandezza. Al fine di individuare gli errori e per il debug è possibile far visualizzare il numero di riga, da Properties, tab Editor e spuntando la voce Line Numbers. La figura 6 mostra un’immagine della finestra Properties.

Figura 6. Finestra Properties dell’editor di testo

Figura 6. Finestra Properties dell’editor di testo

La fase di build del progetto

La fase di build consente di mettere insieme tutti  i files del progetto, al fine di generare il codice oggetto. La figura 7 schematizza le varie fasi attraverso cui bisogna passare.

Figura 7. Schema della gestione progetti in MPLAB

Figura 7. Schema della gestione progetti in MPLAB

Lo schema di figura 7 è quello generale. Nel caso in esame si utilizzerà il percorso file sorgente, assemblatore, linker e file oggetto. Per effettuare questa operazione è necessario andare dal  menu  Project->Build All.  Ovviamente,  non  ci saranno errori poiché non è stato ancora aggiunto del codice al modello utilizzato. Però è interessante osservare i risultati dell’elaborazione all’interno della finestra Output (figura 8).

Figura 8. Finestra di output

Figura 8. Finestra di output

La scritta BUILD SUCCEEDED conferma che tutto  il processo è stato eseguito senza errori. Se ci fossero stati errori, questi sarebbero stati elencati nella stessa finestra. In questo caso, sarebbe stato sufficiente fare doppio  click sull’errore per aprire l’editor  sulla riga errata. Supponiamo ora di voler modificare il file sorgente, aggiungendo del codice per far cambiare stato alla linea RB0 del PIC18F452. Si tratta di aggiungere le seguenti linee a partire dalla riga numero 138:

   movlw 0x00
   movwf TRISB; Imposta PORTB come uscita
Loop
  movlw 0x01
  movwf PORTB;  Imposta RB0 alto
  movlw 0x00
  movwf PORTB;  Imposta RB0 basso
  goto Loop

Avendo fatto una modifica al codice è necessario effettuare nuovamente la procedura di build, allo stesso modo descritto sopra (in alternativa si può premere la combinazione di tasti Ctrl+F10).

La fase di test del progetto:  MPLAB SIM

Per testare questo semplice programma con il simulatore  software basta selezionare Debugger->Select Tool->MPLAB SIM. Per iniziare ad eseguire il codice è essenziale effettuare un reset, andando da Debugger->Reset->Processor  Reset o semplicemente premendo il tasto F6. Si vedrà un freccia verde che si posiziona sulla prima istruzione da eseguire, ossia nel caso in esame sulla riga 79 (goto Main). Per avanzare nel programma passo-passo si possono utilizzare le funzioni Step Into e Step Over (tasti F7 e F8). La prima permette di entrare all’interno di sotto procedure, la seconda invece salta eventuali subroutine. Ovviamente, MPLAB permette l’esecuzione del programma alla normale velocità (tasto F9), anche se questa opzione è utilizzata raramente, poiché non consente di osservare le variazioni nei registri e sulle porte  di uscita. Più interessante risulta l’opzione Animate (raggiungibile dal menu Debugger), che rappresenta un incrocio tra il run e lo step into / step over. Animate viene eseguito più  lentamente  della funzione run, ma al contempo permette di vedere le variazioni del valore dei registri nelle finestre SFR  e Watch (descritte nel seguito). Per fermare tale simulazione è sufficiente premere il tasto F5. Per analizzare le variazioni dei registri e delle porte bisogna far riferimento alla funzione Watch, raggiungibile dal menu View. La finestra che si apre non contiene ancora nessuna variabile da monitorare.  Per controllare le variazioni della porta B del PIC è sufficiente selezionare il registro PORTB nell’editor di testi trascinando all’interno della finestra Watch; tale discorso vale per qualunque variabile o struttura (nel caso si utilizzi il compilatore anziché l’assembler); la figura 9 mostra tale finestra, con il registro PORTB ivi inserito.

Figura 9. Finestra di Watch

Figura 9. Finestra di Watch

In realtà, per tutti  i registri SFR (Special Function Register) del PIC esiste un’apposita finestra per  una  visualizzazione completa:  View->Special Function Register. Per una visualizzazione ottimale  di tutte  le finestre aperte basta utilizzare l’opzione Window->Tile Horizontally. Inoltre, ciascuna finestra dispone di un comando  che  consente  loro  di  essere vincolate all’area di lavoro. Tale opzione è accessibile facendo click con il tasto sinistro del mouse sull’angolo in alto a sinistra di  ogni  finestra e selezionando l’opzione Dockable. Se  a questo punto  si avvia il  comando Animate, si potrà osservare la variazione del registro PORTB da 0x00 a 0x01 e viceversa con una velocità (di default) pari a 0.5 secondi. Per l’applicazione in questione, tale velocità è sufficiente. Potrebbe capitare, per progetti  più  complessi, che tale valore sia troppo basso o troppo alto; è possibile variarlo selezionando la scheda Animation/Realtime updates dal menu  Debug->Settings.  Variare il  numero  presente nel campo indicato come Animate Step Time. Per visualizzare i valori delle variabili in RAM è necessario  selezionare File Register dal menu View. All’interno di tale finestra sono anche riportati gli SFR, poiché essi sono mappati in memoria. A prima vista tale finestra potrebbe sembrare confusa, ma è possibile impostare un colore differente per gli SFR. Per fare questo basta fare click, nella finestra  File Registrer, con il tasto destro del mouse su Properties. Un’altra comoda funzionalità di cui deve essere sicuramente dotato un IDE sono i breakpoints. Si tratta di punti di interruzione, in corrispondenza del quale il programma si arresta. Possono essere utilizzati, per esempio, allo scopo di analizzare lo stato delle variabili ad un dato punto  del codice. Per inserirne uno bisogna semplicemente fare doppio  click sulla riga desiderata (si fa notare che il programma si arresta prima  di  eseguire la  riga  in  corrispondenza della quale il breakpoint viene inserito). La presenza di una interruzione viene segnalata mediante un punto  di colore rosso nell’editor,  alla sinistra della riga. Possono essere inseriti più breakpoints all’interno del programma. In questo caso è conveniente utilizzare la funzione Run. Esistono situazioni in cui è utile misurare il tempo trascorso per eseguire un certo numero di istruzioni, magari per sincronizzarsi con dispositivi esterni o per altri motivi. In questo caso risulta molto utile la funzione StopWatch raggiungibile  dal menu Debugger. Con  riferimento  all’esempio di  codice assembly di cui sopra, inserire due breakpoints alle righe movlw 0x00 e movlw 0x01. Aprire la finestra Stopwatch e avviare Run. Il programma si arresta alla prima delle due istruzioni. Nella finestra Stopwatch viene visualizzato il tempo (0.8ms) per eseguire tutte le istruzioni fino a quella attuale. Se si preme il tasto Zero, si azzera il contatore relativo del tempo, mentre quello  assoluto rimane  invariato.  Si può  a questo punto premete ancora il tasto Run. Il risultato è riportato in Figura 10.

Figura 10. Misura del tempo con StopWatch

Figura 10. Misura del tempo con StopWatch

Quando si lavora con progetti particolarmente complessi e che quindi  necessitano di  molta  memoria programma e dati, è essenziale monitorare la percentuale di RAM e ROM residua. Per far questo è sufficiente selezionare View->Memory  Usage Gauge. In fase di debug risulta molto utile, al fine di eliminare eventuali bachi, effettuare il trace tramite View->Simulator Trace.

Segnali esterni con il simulatore

Un limite del simulatore è, spesso, l’impossibilità di simulare interazioni con l’esterno. Questo non è il caso di MPLAB. Tali stimoli possono essere variazioni di livello o impulsi su di uno specifico pin. Oppure una variazione nel valore di un determinato SFR  o locazione di memoria. Fondamentalmente, si individuano due tipi di stimoli esterni:

  1. sincroni: una serie predefinita di segnali ad una porta I/O, ad un registro SFR o GPR;
  2. asincroni: la variazione si verifica in un momento non meglio precisato, tramite la pressione di un bottone all’interno dell’IDE.

Per decidere quando, come e quali stimoli esterni si devono verificare, è necessario utilizzare due strumenti che MPLAB IDE mette a disposizione:

  1. generatore SCL, per la creazione eventi sincroni;
  2. stimulus Controller, che fa riferimento  ad un file ottenuto  con SCL ma serve per generare eventi asincroni.

Uno schema di principio di tali tools è mostrato in figura 11.

Figura 11. Schema del simulatore di stimoli

Figura 11. Schema del simulatore di stimoli

Il blocco di testo indicato con il termine Scenario indica il file che contiene tutte le informazioni relative alla simulazione mediante stimoli esterni. Si supponga di voler inserire uno stimolo asincrono: aprire un  nuovo  scenario selezionando Debugger->Stimulus Controller->New Scenario. Tali sollecitazioni si suddividono in: regolari  (per la maggior parte dei pin/SFR) e message-based (utilizzato principalmente per la UART/USART). La descrizione dei campi presenti nella finestra Stimulus Controller è riportata in tabella 1.

Tabella 1. Campi della finestra Stimulus Controller

Tabella 1. Campi della finestra Stimulus Controller

Ogni riga della finestra Stimulus Controller rappresenta uno stimolo. Dopo averli configurati tutti è possibile salvare il tutto  in un file Scenario per successive modifiche o utilizzo. Si rimanda il lettore al datasheet MPLAB IDE - User’s Guide per l’utilizzo  del generatore SCL, al fine di generare sollecitazioni sincrone.

Programmazione  visuale: il plug-in  MPLAB VDI

Il Visual Device Inizializer, o MPLAB VDI, è un plug-in avanzato che fornisce un modo visuale per impostare il codice di inizializzazione delle periferiche. Il suo utilizzo è relativo ai PIC18x e ai dsPIC. L’elenco completo dei componenti che hanno piena funzionalità con tale strumento è riportato in tabella 2.

Tabella 2. Dispositivi supportati per il VDI

Tabella 2. Dispositivi supportati per il VDI

Utilizzando la versione di MPLAB 7.40, tale tool è già presente all’interno della suite.

Il Visual Device Inizializer è caratterizzato da:

  • interfaccia semplice ed intuitiva, grazie alla possibilità di effettuare il drag&drop;
  • supporto completo alla configurazione del dispositivo;
  • generazione di codice di inizializzazione;
  • perfetta integrazione in MPLAB IDE;
  • accesso a manuali e datasheet;
  • visualizzazione e stampa di reports relativi alla configurazione.

La figura 12 mostra la schermata del VDI, raggiunta tramite  Tools->Visual  Device Inizializer (bisogna evidenziare che tale opzione sarà selezionabile  solo se si utilizza un dispositivo compreso nell’elenco riportato in tabella 1).

Figura 12. Il Visual Device Inizializer

Figura 12. Il Visual Device Inizializer

Esso risulta utile in varie fasi di sviluppo del progetto. Innanzitutto,  durante lo studio di fattibilità  del progetto, in quanto aiuta a capire quale dispositivo utilizzare per soddisfare le specifiche. Durante la fase di implementazione,  per la generazione del codice e durante la fase di documentazione, per la generazione di reports dettagliati. Come si nota dalla figura 12, ogni pin è riportato con un diverso colore. L’elenco completo dei codici dei colori è riassunto in tabella 3.

Tabella 3. Codici dei colori dei pin nel VDI

Tabella 3. Codici dei colori dei pin nel VDI

Per comprendere meglio il funzionamento del VDI, si procederà ora con una semplice configurazione dell’interrupt  esterno del PIC18F452. Il blocco relativo agli interrupt  è già  inserito  all’interno  del  chip  virtuale. Facendo click su di esso si accede ad una schermata che contiene tutte le opzioni relative a questa funzionalità. Impostare le opzioni come riportato in figura 13.

Figura 13. Impostazioni per INT0

Figura 13. Impostazioni per INT0

Premendo il pulsante Ok si noterà che il pin 33 del PIC è colorato in verde, ossia l’interrupt  è stato ben configurato. La stessa operazione dovrà essere ripetuta per ogni periferica che si vuole configurare. Se il blocco non è già presente nel chip virtuale bisogna effettuarne il drag&drop.  Si deve notare che questo modo  di procedere permette  a chi programma  di non conoscere necessariamente in maniera dettagliata il PIC. In questo senso il VDI rappresenta un livello di astrazione rispetto alla normale procedura di programmazione dei micro (la tecnica alla base di questo modo di procedere è un linguaggio di programmazione conosciuto con il nome di XML). Dopo aver concluso le impostazioni delle periferiche è necessario generare il codice. Per far ciò bisogna selezionare Visual Inizializer->Code Generation e quindi salvare il file, per poi aggiungerlo al progetto. Per quanto concerne i reports è possibile visualizzarli e memorizzarli in formato txt, sempre dal menu Visual Inizializer.

VISUALIZZAZIONE GRAFICA DEI DATI: IL PLUG-IN DMCI

Il Data Monitor and Control Interface (DMCI) rappresenta una novità della MPLAB IDE 7.40. Questo plug-in fornisce un controllo dinamico delle variabili. Per utilizzare tale strumento  selezionare Tools->Data Monitor and Control Interface.  È possibile utilizzare 9 controlli  slider, 9 controlli  booleani (ON/OFF) e 4 grafici.   Dopo aver compilato  il codice è possibile abilitare i controlli semplicemente spuntando la checkbox relativa. A questo punto è possibile aprire il menu contestuale, facendo click con il tasto destro del mouse sul controllo stesso. I controlli di tipo slider e on/off vengono utilizzati come input, mentre i controlli graph servono per monitorare lo stato delle variabili. La figura 14 mostra un esempio di controllo slider attivato.

Figura 14. Esempio di controllo slider attivato

Figura 14. Esempio di controllo slider attivato

INSTALLAZIONE ED USO DI  MPLAB ICD2

Il programmatore/debug  è uno strumento molto versatile che consente di programmare, ma soprattutto  effettuare il debug del codice. Esso rappresenta il simulatore hardware, per usare una analogia con quello software già analizzato (figura 15).

Figura 15. MPLAB ICD2

Figura 15. MPLAB ICD2

La procedura di installazione è descritta in dettaglio nella guida all’installazione dei driver, raggiungibile da Help->Driver Installation e selezionando poi installazione di ICD2. È importante  sottolineare che non bisogna collegare il cavo USB dell’ICD2 alla relativa porta, prima che questo venga richiesto. Dopo aver concluso la procedura di installazione è possibile utilizzare il dispositivo. Per selezionarlo andare da Debugger->Select  Tools->MPLAB ICD2. Come ricordato in precedenza, quando si usa ICD2 bisogna usare il file linker che termina con ‘i’; perciò bisogna portarsi nella finestra di gestione del progetto, fare click con il tasto destro del mouse e selezionare Remove, per rimuovere il file linker impostato in precedenza (18f452.lkr). Ripetere la stessa operazione selezionando Add ed aggiungere il file 18f452i.lkr. Se  invece si desidera programmare  il  dispositivo è necessario portarsi  sul  menu  Programmer->Select Programmer->MPLAB  ICD2. Avendo effettuato  questa operazione, MPLAB mostra  una  barra  di  strumenti (MPLAB  ICD2 Program Toolbar) che contiene  tutti  i comandi necessari alla programmazione del dispositivo. Con la stessa procedura è possibile installare ed utilizzare altri strumenti di programmazione ed emulazione, come ICE2000 o ICE4000.

 

Scarica subito una copia gratis

2 Commenti

  1. Avatar photo Ivan.Pascolo 10 Maggio 2017
  2. Avatar photo Maurizio Di Paolo Emilio 11 Maggio 2017

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend