Real PIC Simulator

Real Pic Simulator è un interessante simulatore di microcontrollori PIC di Microchip di fascia base e media prodotto da Digital Electro Soft che consente la simulazione visuale di applicazioni firmware precedentemente compilate. Il suo impiego consente, in alcuni casi, il test ed il debugging dell’applicazione praticamente a costo zero. Per questo motivo può essere, nel suo àmbito, un ottimo strumento sia di apprendimento sia di ausilio alla progettazione.

In qualunque campo della progettazione elettronica, gli strumenti di simulazione contribuiscono allo sviluppo di applicazioni in maniera rapida, pratica, efficiente e flessibile. L’impiego di tali strumenti consente di evitare, almeno in una fase preliminare del progetto, la realizzazione fisica dell’applicazione con enormi vantaggi sia in termini di tempo di implementazione sia di costi.

La possibilità di prevedere e analizzare con sufficiente accuratezza condizioni di funzionamento ben precise, prima ancora che l’applicazione sia fisicamente realizzata è un vantaggio sotto tutti i punti di vista. Un approccio di questo tipo consente inoltre di ridurre gli step che portano dalla schematizzazione generale e iniziale dell’applicazione alla sua effettiva realizzazione. Ciò consente al progettista di ipotizzare, e quindi analizzare in anticipo, determinate condizioni operative, scoprire e correggere tempestivamente errori di progettazione quando il progetto è ancora in una fase embrionale e spesso di ridurre il numero di passi di prototipazione che portano alla realizzazione finale dell’applicazione. Inoltre gli strumenti di simulazione di solito si sposano perfettamente con la logica modulare che la progettazione elettronica spesso prevede. Quasi mai infatti un’applicazione elettronica è composta unicamente da risorse hardware ma piuttosto dall’insieme di risorse hardware e firmware. Le parti hardware e firmware di un’applicazione elettronica possono a loro volta essere rese modulari e ciascun modulo può essere sviluppato e messo a punto separatamente. Poiché oggi le applicazioni elettroniche anche più semplici, diversamente da quanto accadeva solo uno o due decenni fa, sono caratterizzate quasi sempre dall’integrazione di hardware e firmware, disporre di kit di sviluppo e adeguate demo-board di supporto alla progettazione consente di ridurre enormemente i tempi di sviluppo di un’applicazione a microcontrollore, sia negli aspetti hardware sia in quelli firmware. Un kit di sviluppo infatti, tipicamente mette a disposizione, integrate in un’unica board, risorse hardware e di programmazione. Queste consentono lo sviluppo di almeno una parte del progetto senza la necessità di realizzare appositamente la scheda elettronica di cui il controllore sarà equipaggiato. Questi strumenti snelliscono quindi la progettazione e ne favoriscono la modularità. I molteplici kit di sviluppo per controllori PIC, tra cui ricordiamo – solo per citarne alcuni – le diverse versioni di Easy PIC, ne sono un esempio lampante. Un simulatore come Real Pic Simulator si spinge oltre questa logica, aumentando ulteriormente il livello di astrazione della progettazione della specifica applicazione rispetto alla sua effettiva realizzazione. L’impiego di uno strumento di simulazione di questo tipo, infatti, consente di sostituire completamente il kit di sviluppo con un’interfaccia software che costituisce una vera e propria demo-board virtuale. Real PIC Simulator, realizzato da Digital Electro Soft, presenta queste caratteristiche essendo un software che consente la simulazione firmware di applicazioni per microcontrollori PIC di fascia base e media e di molte delle risorse hardware tipicamente integrate su una scheda di sviluppo. Nel corso degli ultimi anni sul mercato hanno trovato spazio trattazioni e applicazioni firmware basate sui controllori PIC di Microchip. Anche per questo motivo questo articolo può risultare gradito e utile a coloro che utilizzano questo tipo di microcontrollori. Real Pic Simulator può risultare infatti di supporto sia a chi utilizza i microcontrollori PIC di Microchip nella progettazione, sia a chi intende intraprendere lo studio della loro programmazione firmware in maniera semplice ed efficace anche senza disporre di demo-board e kit di sviluppo. Quanto esporremo non intende in nessun modo sostituire le informazioni e le documentazioni ufficiali del software che potete trovare sul sito web del produttore [1] ma si pone più semplicemente l’obiettivo di mostrare al lettore quanto questo strumento possa risultare efficace e di semplice impiego. Il lettore può liberamente scaricare dal sito del produttore la versione trial del software che presenta come principale limitazione il periodo di validità di trenta giorni, in ogni caso sufficiente a sperimentarne direttamente le funzionalità. L’impiego senza limitazione necessita, come si può immaginare, dell’acquisto di una licenza. Per maggiori dettagli si rimanda al sito del produttore riportato in [1].

REAL PIC SIMULATOR

Real Pic Simulator è un simulatore di microcontrollori PIC di Microchip di fascia base e media che consente la simulazione e quindi il test di applicazioni firmware precedentemente sviluppate e compilate praticamente senza disporre di alcuna risorsa hardware. Per una corretta collocazione operativa di Real Pic Simulator è necessario, come per ogni strumento di ausilio alla progettazione di schede a microcontrollore, individuare dapprima quali modelli di controllori esso supporti. Questi ultimi sono raggruppati nella tabella 1, distinti rispettivamente in modelli di fascia base e modelli di fascia media. Tra le caratteristiche del simulatore vi sono la simulazione delle risorse fisiche dei controllori implementati e le funzioni operative di carattere visuale. Le prime sono riassunte, come già detto, in tabella 1 mentre le seconde saranno ampiamente illustrate e discusse nei paragrafi a seguire.

Tabella 1: microcontrollori PIC di Microchip supportati dal software di simulazione Real PIC Simulator [1].

Tabella 1: microcontrollori PIC di Microchip supportati dal software di simulazione Real PIC Simulator [1].

PRINCIPALI CARATTERISTICHE E RISORSE OPERATIVE

La caratteristica operative principale dell’applicativo consiste nella possibilità di simulare l’esecuzione del codice senza disporre fisicamente del controllore e delle risorse hardware esterne che saranno a esso connesse nel progetto fisico reale. Operativamente esso integra:

  • funzioni di Disassembler grazie alle quali è possibile esaminare il codice firmware in formato assembler; lo stesso codice disassemblato può essere esportato (funzione non disponibile nella versione trial);
  • funzioni di Debugger sfruttabili insieme all’esecuzione simulata del codice alla velocità impostata o in modalità passo-passo (step-by-step) o ancora mediante l’impiego di breakpoint come è tipico per un debugger;
  • funzioni di visualizzatore del contenuto della RAM e della EEPROM (memory map);
  • funzioni di Processor viewer che mostrano la configurazione dei pin del microcontrollore.
    L’impiego del simulatore da parte dell’utente è prevalentemente visuale e consente, in questa forma, la simulazione del codice e il monitoraggio degli effetti che si producono sia sulle risorse interne del controllore sia sui componenti hardware virtuali implementati nell’applicazione e connessi virtualmente al controllore stesso.

Questi ultimi costituiscono prevalentemente componenti di ingresso e di uscita tra i più comuni nella realizzazione effettiva delle schede a microcontrollore. Tra le risorse hardware simulate interne ai controllori implementati nel simulatore vi sono timer, memoria RAM ed EEPROM, interrupt-on-change, interrupt su pin int, CCP, ADC, interfaccia UART. Tra i Componenti hardware virtuali esterni al controllore e che è possibile connettervi, troviamo invece:

  • sequenze di LED;
  • terminale UART (software ed hardware) per la simulazione della comunicazione seriale;
  • sorgenti analogiche di segnale attraverso i quali poter sollecitare i pin di ingresso analogici del controllore;
  • pulsanti singolarmente impostabili come normalmente aperti o come normalmente chiusi;
  • display LCD per la visualizzazione di testi;
  • keypad a matrice 4x4;
  • display LED a 7 segmenti;
  • oscilloscopi digitali per l’analisi dello stato dei pin del controllore;
  • LCD Grafico;
  • buzzer (speaker) alla cui attivazione corrisponde l’emissione di un suono da parte della scheda audio e quindi dagli speaker del PC;
  • generatore di funzioni per la generazione di sequenze di stati per i pin di ingresso del controllore;
  • memoria EEPROM pilotabile serialmente su bus I2C (memoria 24C64 da 8KBytes);
  • Real Time Clock DS1307.

Come è facile comprendere, i componenti di ingresso e di uscita che possiamo trovare su una scheda a microcontrollore possono essere tantissimi e ovviamente non è possible in un simulatore contemplarli tutti. Per esempio, esistono infiniti tipi di sensori che possono essere interfacciati a un microcontrollore. Per questo motivo un simulatore di controllori simula più precisamente il comportamento firmware e le risorse hardware di ingresso e uscita più comuni, che risultano presumibilmente sufficienti a testare il funzionamento firmware dell’applicazione (lo stato di un sensore, per esempio, può essere simulato con un livello logico e quindi con un pulsante). È importante sottolineare che quando si parla di componenti hardware virtuali impiegati all’interno del simulatore, questi sottintendono l’impostazione di una determinata configurazione hardware o di una specifica interconnessione pin-to-pin con il controllore che ricalchi la reale composizione hardware e circuitale dell’applicazione. Tali impostazioni costituiscono il legame tra il progetto virtuale e quindi la sua simulazione e la relativa implementazione fisica (scheda a microcontrollore).

DOWNLOAD E INSTALLAZIONE DEL SIMULATORE

È importante sottolineare che Real Pic Simulator è un software non gratuito prodotto da Digital Electro Soft, tuttavia è possibile utilizzarne una copia gratuita per scopi di valutazione avente validità di 30 giorni. Il software, in questa versione può essere scaricato direttamente dal sito del produttore (figura 1).

Figura 1: dal sito web di Digital Electro Soft (http://digitalelectrosoft.com/) è possibile effettuare il download della versione trial di Real PIC Simulator (v. 1.3) caratterizzata da alcune limitazioni rispetto a quella dotata di licenza e da un periodo di validità di 30 giorni [1].

Figura 1: dal sito web di Digital Electro Soft (http://digitalelectrosoft.com/) è possibile effettuare il download della versione trial di Real PIC Simulator (v. 1.3) caratterizzata da alcune limitazioni rispetto a quella dotata di licenza e da un periodo di validità di 30 giorni [1].

Se si desidera utilizzare questo software anche dopo il periodo di valutazione è necessario acquistarne la licenza. Sul sito del produttore potete trovare informazioni più dettagliate a riguardo. Attualmente la versione disponibile è giunta alla 1.3. L’applicazione occupa pochi megabyte sull’hard disk, è di semplice installazione (figura 2), di semplice impiego e può essere installata su piattaforme dotate di limitate risorse. PC a 32 bit basati su Windows 2000 o XP sono più che sufficienti per l’installazione e l’esecuzione delle simulazioni. La versione demo del simulatore non consente di salvare il progetto e il file ASM originato dall’operazione di dissassemblaggio del file “.hex”. L’impiego del software senza limitazioni né funzionali, né di tempo di validità comporta in ogni caso l’acquisto della relativa licenza. Il download della versione demo include il manuale integrato e alcuni progetti di esempio. L’installazione del programma si avvia, si sviluppa e si conclude in pochi e semplici passi guidati come mostrato sinteticamente in figura 2.

Figura 2: passi di installazione di Real Pic Simulator (A: avvio dell’installazione; B: informazioni su licenza e copyright; C: scelta della cartella di installazione; D: impostazione dei componenti da installare; E: installazione in corso; F: fine installazione; G: note sulla licenza; H: validità della versione demo, 30 giorni).

Figura 2: passi di installazione di Real Pic Simulator (A: avvio dell’installazione; B: informazioni su licenza e copyright; C: scelta della cartella di installazione; D: impostazione dei componenti da installare; E: installazione in corso; F: fine installazione; G: note sulla licenza; H: validità della versione demo, 30 giorni).

IMPIEGO DELL’INTERFACCIA DI SIMULAZIONE

Lo scopo principale del simulatore è ridurre tempi e costi di sviluppo delle applicazioni firmware basate su controllori PIC delle fasce baseline e midrange. In questa sezione dell’articolo intendiamo illustrare la struttura dell’interfaccia di simulazione e l’impiego dei componenti virtuali integrati che consentono la simulazione dell’applicazione firmware. All’avvio, l’interfaccia dell’applicativo si presenta come in figura 3.

Figura 3: l’interfaccia utente di Real PIC Simulator all’avvio.

Figura 3: l’interfaccia utente di Real PIC Simulator all’avvio.

La program memory del controllore, cui è possibile accedere attraverso il tab panel “Program Memory” appare vuota in quanto non è stato ancora caricato, sul controllore selezionato, alcun firmware, e analogamente appare vuota l’interfaccia accessibile attraverso il tab panel “Visual”, mentre gli altri tab panel riportano principalmente informazioni relative al controllore selezionato. È interessante osservare che la schermata principale può contenere una sola interfaccia di gestione (corrispondente al relativo tab) oppure due interfacce, come mostrato nell’esempio di figura 4 dove si nota la visualizzazione simultanea della “Program Memory” e dell’area “Visual” che riporta le risorse hardware collegate virtualmente al controllore.

Figura 4: la schermata principale può contenere una sola interfaccia di gestione (corrispondente al relativo tab panel) oppure due interfacce, come mostrato in questo caso (visualizzazione simultanea della “Program Memory” e dell’area “Visual”).

Figura 4: la schermata principale può contenere una sola interfaccia di gestione (corrispondente al relativo tab panel) oppure due interfacce, come mostrato in questo caso (visualizzazione simultanea della “Program Memory” e dell’area “Visual”).

Tutte le funzioni sono accessibili (figura 5) attraverso:

  • i comandi dei menu a tendina;
  • il menu di selezione del controllore;
  • il menu di selezione della velocità di esecuzione (simulation speed e real speed);
  • i comandi della toolbar;
  • i tab panel.

Molte delle funzioni accessibili attraverso i menu a tendina sono accessibili anche attraverso i pulsanti della toolbar.

Figura 5: le funzioni sono accessibili attraverso i menu a tendina, i pulsanti della toolbar e i tab panel.

Figura 5: le funzioni sono accessibili attraverso i menu a tendina, i pulsanti della toolbar e i tab panel.

I MENU A TENDINA

In figura 6 è riportato l’esploso dei menu a tendina. All’interno del menu “File” sono disponibili rispettivamente i comandi di creazione di un nuovo progetto (New), di salvataggio del file ASM (Save ASM) ottenuto automaticamente dal disassemblaggio del “file hex” caricato con il comando “Load HEX” e i comandi di salvataggio e caricamento dei progetti (Save Project, Load Project). A tale proposito è importante ricordare che nella versione demo del programma sono interdette le funzioni “Save Project” e “Save ASM”. All’interno del menu “Run” sono invece disponibili i comandi di esecuzione (Run) e di esecuzione step-by step del firmware e le funzioni di reset della simulazione e di gestione dei breakpoint che possono essere inseriti all’interno del tab panel “Program Memory” attraverso un doppio click in corrispondenza della specifica linea ASM del programma. Il menu “Setting” consente invece scegliere tra rappresentazione decimale e rappresentazione esadecimale per dati e codice.

Figura 6: esploso dei menu a tendina

Figura 6: esploso dei menu a tendina

I PULSANTI DELLA TOOLBAR

In figura 7 è riportato il dettaglio dei pulsanti componenti la toolbar.

  • Load HEX or COD file. Consente il caricamento virtuale del file “.hex” (generato da un precedente processo di compilazione) nella memoria del controllore. All’interno del tab panel “Eeprom” compare automaticamente il contenuto della memoria eeprom del controllore mentre all’interno del tab panel “Program Memory” compare automaticamente il contenuto della memoria di programma in formato assembler (disassemblaggio del file .hex).È importante osservare che la selezione del controllore attraverso il relativo menu a tendina “Processor” deve avvenire prima del caricamento del firmware poiché il modello di controllore scelto non può essere modificato successivamente.
  • Load Consente di caricare un progetto precedentemente salvato. A questa operazione corrisponde il caricamento sia del file “.hex” che della configurazione delle risorse hardware virtuali (tab “Visual”) facenti parti del progetto stesso.
  • Save Consente di salvare il progetto e con esso sia il file “.hex” sia l’impostazione delle risorse hardware virtuali predisposte all’interno del tab panel “Visual” costituente di fatto la board virtuale.
  • Search. Consente di effettuare ricerche all’interno del programma dissassemblato (file .ASM) e reso disponibile all’interno tab panel “Program Memory”.
  • Reset. Ricarica il codice eseguibile “.hex” ed esegue il reset dei componenti visuali, della memoria RAM e delle variabili di simulazione; risulta quindi utile nel caso in cui si voglia rieseguire dall’inizio la simulazione.
  • Step Into (speedkey F7). Consente di eseguire il codice disassemblato in modalità step-by-step, cioè una istruzione assembler alla volta. Il contenuto dei diversi tab panel viene aggiornato alla fine di ogni step. Tale modalità può risultare particolarmente interessante quando si intende esaminare il codice alla ricerca di bachi.
  • Run/Stop (speedkey F9). Consente di avviare / interrompere la simulazione. Il contenuto dei tab-panel viene aggiornato in real-time durante la simulazione.
  • Info. Fornisce informazioni generali sul programma.

La toolbar integra inoltre i seguenti menu a tendina:

  • Processor. Consente all’utente di scegliere il modello di controllore dalla lista di quelli implementati all’interno del simulatore.
  • Simulation speed. Consente di selezionare la frequenza di simulazione intesa come velocità di esecuzione della simulazione e non come velocità effettiva di esecuzione del codice da parte del controllore nell’implementazione reale. Se la frequenza della simulazione è uguale alla frequenza reale (real speed), il codice è eseguito virtualmente (simulato) in tempo reale. La velocità di esecuzione della simulazione può essere tuttavia modificata ed in questo modo rallentata sufficientemente tanto da consentire l’osservazione e l’analisi degli effetti che ne scaturiscono sulle uscite e sulla memoria del controllore oltre che sulle risorse hardware virtuali ad esso connesse.
  • Real Speed. Consente di impostare l’effettiva frequenza di clock del controllore impiegata nell’implementazione hardware dell’applicazione.
Figura 7: esploso dei comandi della Toolbar.

Figura 7: esploso dei comandi della Toolbar.

I TAB PANEL

I tab panel consentono di esplorare e analizzare gli effetti della simulazione del firmware sulle risorse hardware del controllore e sulle risorse hardware virtuali ad esso collegate e gestite all’interno del tab panel “Visual”. Ne analizziamo brevemente le rispettive funzioni.

  • Program Memory (figura 8). Consente di esaminare la memoria di programma il cui contenuto viene visualizzato in formato ASM, il valore del Program Counter e la posizione dei breakpoint inseriti dall’utente per motivi di L’esplorazione del codice è facilitato da due funzioni operative integrate. La prima consente, attraverso un doppio-click su istruzioni “Call” o “Goto“, di saltare direttamente all’indirizzo puntato, mentre la seconda permette, attraverso il tasto backspace, l’operazione opposta cioè di ritorno all’istruzione di partenza. Un click con il tasto destro del mouse su un’istruzione determina l’apertura di un menu di pop-up attraverso il quale è possibile inserire o  eliminare breakpoint e  forzare il  valore del program counter ad assumere il valore corrispondente all’indirizzo della stessa istruzione. Gli stessi breakpoint possono essere inseriti o eliminati attraverso un semplice click sul campo contenente l’indirizzo dell’istruzione.
Figura 8: tab panel “Program Memory” (si notino i breakpoint che appaiono evidenziati in rosso).

Figura 8: tab panel “Program Memory” (si notino i breakpoint che appaiono evidenziati in rosso).

  • EEPROM Memory (figura 9). Consente di ispezionare il contenuto della memoria eeprom del microcontrollore. In figura 10 la tab panel della Memory Map. È possibile modificare in maniera forzata il contenuto di quest’ultima attraverso un doppio click sulla specifica cella di memoria. La finestra di pop-up che compare consente di inserire il nuovo valore da assegnare al byte selezionato. Il contenuto della memoria eeprom, come visualizzato in questo tab panel, non viene aggiornato durante la simulazione ma nel momento in cui questa viene interrotta (evento di stop o step in una esecuzione step-by-step).
Figura 9: tab panel “EEPROM”.

Figura 9: tab panel “EEPROM”.

 

Figura 10: tab panel “Memory Map”.

Figura 10: tab panel “Memory Map”.

  • Tab Variables (figura 11). Mostra il contenuto di alcuni registri della MCU e di variabili legate alla Il contenuto non viene aggiornato durante la simulazione ma in occasione di interruzioni corrispondenti a eventi di stop o ai singoli passi di esecuzioni step-by-step.
Figura 11: tab panel “Variables”.

Figura 11: tab panel “Variables”.

  • Processor (figura 12). Mostra una rappresentazione del microcontrollore, la mappa dei suoi pin e alcune informazioni tecniche specifiche (dimensione della program memory, della memoria RAM, della EEPROM, architettura e risorse fisiche della MCU).
Figura 12: tab panel “Processor”.

Figura 12: tab panel “Processor”.

  • Visual (figura 13). Consente all’utente di interagire con la simulazione poiché riporta, in forma visuale, le risorse hardware interconnesse (virtualmente) con il controllore. La pagina è suddivisa in due distinte aree: la toolbar dei componenti, posizionata nella parte sinistra e la “breadboard virtuale” contenente i componenti hardware virtuali.
Figura 13: tab panel “Visual”.

Figura 13: tab panel “Visual”.

Nel successivo paragrafo forniremo una descrizione più dettagliata dei componenti hardware virtuali disponibili all’interno del tab panel “Visual” e accessibili attraverso la suddetta toolbar.

I COMPONENTI HARDWARE VIRTUALI

In figura 14 è riportata la toolbar dei componenti hardware virtuali disponibili all’interno del tab panel “Visual”. Ciascun componente visuale può essere inserito nella “breadboard virtuale” per rascinamento dalla toolbar dei componenti (figura 14).

Figura 14: toolbar dei componenti hardware virtuali disponibili all’interno del tab panel “Visual”.

Figura 14: toolbar dei componenti hardware virtuali disponibili all’interno del tab panel “Visual”.

Una volta inserito, il componente appare con una barra descrittiva nella parte alta e una opzione di chiusura. I componenti disponibili sono, nell’ordine:

  • Led Simula un array di otto led;
  • Analog Simula un livello di tensione analogico impostabile a piacimento dall’utente;
  • LCD Simula un display LCD (2x16, 2x20, 4x16 oppure 4x40 caratteri);
  • 7 segment Simula un display a 7 segmenti con ingresso di enable;
  • UART Simula un terminale RS232;
  • Push Simula un pulsante che può essere impostato come NA o NC, connesso a VCC o GND;
  • Simula un tastierino numerico a matrice 4x4;
  • Simula un blocco note all’interno del quale inserire testi e note inerenti il progetto;
  • Simula un oscilloscopio virtuale che consente di analizzare il livello digitale dei pin del controllore;
  • Graphic Simula un display LCD grafico Samsung KS107/KS108 compatibile;
  • Simula un Buzzer;
  • Function Simula un generatore di segnali digitali (8 canali disponibili);
  • I2C serial Simula una eeprom 24C64 interfacciabile su bus seriale I2C;
  • DS1307 Real Time Simula un Real Time Clock su I2C.

I componenti possono essere cancellati attraverso un click sul simbolo di chiusura “x” o spostati nell’area di lavoro attraverso l’impiego del tasto destro del mouse. Essi necessitano in generale di una adeguata impostazione in modo da risultare operativi in quanto congruenti con il firmware che si intende simulare. Le opzioni di impostazione sono accessibili agendo con il tasto sinistro del mouse su un punto specifico della title-bar o agendo su specifici pulsanti, tab e menu propri del componente virtuale. Nella figura 15, per esempio, è riportato l’esploso di tutte le impostazioni possibili e/o necessarie per un LCD testuale. Lo stato dei componenti virtuali è aggiornato istante per istante durante la simulazione e mostrato in forma visuale all’interno del tab panel “Visual”.

Figura 15: esploso delle funzioni di impostazione di un LCD Display virtuale.

Figura 15: esploso delle funzioni di impostazione di un LCD Display virtuale.

Come si osserva, è possibile selezionare il colore dell’LCD ed il tipo di LCD (2x16, 2x20,4x16, 4x40). Per il corretto funzionamento, come accade nell’implementazione reale hardware è necessario impostare, per ciascun pin, la relativa connessione al controllore (pin select) o all’alimentazione (“VDD”-1 logic o +5volt, VSS-0 logic, ground, 0 volt) o specificare che quel determinato pin non risulta connesso (opzione “None”). L’LCD può essere utilizzato, come accade nei reali LCD, nella configurazione a 4-bit o ad 8-bit (nel primo caso vengono utilizzate le linee che vanno da D4 a D7). Tra i componenti visuali non possono mancare i LED (figura 16).

Figura 16: esploso delle funzioni di impostazione di una barra di led virtuali.

Figura 16: esploso delle funzioni di impostazione di una barra di led virtuali.

L’applicazione integra infatti delle barre di LED (array di 8 led), singolarmente impostabili. Attraverso il menu di pop-up, accessibile con un click sul singolo LED, si eccede all’’opzione “Active On” che consente di definire quale stato del pin porta in accensione il LED dal momento che questo può, nell’effettiva implementazione fisica, essere connesso al pin del controllore attraverso una resistenza di pull-down (connessione a massa) oppure attraverso una resistenza di pull-up (connessione a VCC). L’opzione “Previous ®” indica che il pin precedente del componente è connesso alla stessa porta del controllore ma su un pin del controllore incrementato di indice se si sceglie l’opzione down e decrementato se si sceglie l’opzione up. Analoga risulta la funzionalità dell’opzione “Next ®”. Si tratta di opzioni particolarmente utili quando si intende utilizzare pin consecutivi di una porta del controllore nella connessione tra questo e un determinato componente visuale. Gli “Analog tracker” (figura 17) consentono invece di simulare un segnale analogico che varia in funzione della posizione nella quale si trascina il cursore a slitta (escursione virtuale: 0 e 1023).

Figura 17: esploso delle funzioni di impostazione di un “Analog Tracker” virtuale.

Figura 17: esploso delle funzioni di impostazione di un “Analog Tracker” virtuale.

Attraverso il menu di pop-up, accessibile con un click sulla barra del titolo, è possibile selezionare il canale analogico. Il numero di canali analogici disponibili dipende dal particolare modello di microcontrollore per cui a ciascun canale analogico corrisponde fisicamente un determinato pin analogico del microcontrollore. Il componente virtuale che simula un display a sette segmenti a un digit (figura 18) può essere invece impostato nelle connessioni virtuali dei suoi pin attraverso un click su ciascuno dei segmenti componenti.

Figura 18: esploso delle funzioni di impostazione di un “Dispaly 7 segmenti” virtuale.

Figura 18: esploso delle funzioni di impostazione di un “Dispaly 7 segmenti” virtuale.

L’utente può impostarne colore dei segmenti e modalità di funzionamento attraverso l’opzione “Mode” (modalità Real time/Sampling). La comunicazione attraverso una UART è piuttosto comune nei controllori Microchip di fascia base e media. Per questo motivo tra i componenti visuali di Real PIC Simulator vi è l’UART Terminal che consente all’utente di analizzare e controllare i dati inviati e ricevuti attraverso un terminale UART. In figura 19 sono riportati tutti i percorsi di impostazione del componente.

Figura 19: esploso delle funzioni di impostazione di un “UART Terminal” virtuale.

Figura 19: esploso delle funzioni di impostazione di un “UART Terminal” virtuale.

L’impostazione “Serial type”à “Hardware” imposta il componente in una modalità che prevede la connessione dei pin RX e TX rispettivamente ai pin RX e TX hardware del terminale UART del controllore. L’impostazione “Serial type”à”Software” prevede invece la connessione dei pin RX e TX ai pin desiderati del controllore per una emulazione software della comunicazione. L’utente può selezionare il formato dei dati ricevuti e dei dati trasmessi scegliendo tra formato HEX e formato ASCII. I dati impostati all’interno dell’apposita casella di testo vengono inviati al microcontrollore attraverso il pulsante “Send”. Se si seleziona una porta seriale del PC (COM1, COM2, etc.), il terminale invia effettivamente i dati ricevuti dal controllore virtuale alla porta seriale del PC e trasmette i dati ricevuti dalla porta seriale del PC alla porta della MCU virtuale. Anche i pulsanti (push-button, figura 20) sono componenti abbastanza comuni per l’interfacciamento di un controllore che consentono di simulare il cambiamento dello stato dei pin di ingresso dello stesso controllore.

Figura 20: esploso delle funzioni di impostazione di un “Push Button” virtuale.

Figura 20: esploso delle funzioni di impostazione di un “Push Button” virtuale.

Alla pressione del pulsante sinistro del mouse corrisponde la simulazione della pressione del pulsante virtuale mentre la pressione del tasto destro del mouse simula un interruttore (dopo una pressione, il ritorno nello stato iniziale è possibile mediante una nuova pressione). Il pin in ingresso al controllore cui il pulsante è collegato, come al solito, viene selezionato dal menu di impostazione del componente. L’opzione “Type” consente di impostare lo stato di default del pulsante (per esempio, “Normal=1 Pressed=0” significa che l’ingresso presenta valore 1 quando non è premuto e 0 quando è premuto). Il keypad 4x4 è anch’esso un componente abbastanza comune nell’interfacciamento di un controllore e per questo viene simulato in Real Pic Simulator attraverso un apposito componente visuale. È possibile scegliere lo stato di default dei pulsanti (pulsante non premuto). Gli ingressi si intendono dotati di resistenze di pull-down in default state e le connessioni possono essere stabilite attraverso un click sui pulsanti disponibili lungo la parte bassa e la parte destra del componente visuale (figura 21).

Figura 21: esploso delle funzioni di impostazione del “keypad 4x4” virtuale.

Figura 21: esploso delle funzioni di impostazione del “keypad 4x4” virtuale.

In ogni progetto è utile inserire note e testi esplicativi. A tale scopo Real PIC Simulator prevede il componente visuale “Note” (lunghezza massima del testo: 255 caratteri, figura 22).

Figura 22: componente “Note”.

Figura 22: componente “Note”.

L’oscilloscopio virtuale consente invece di monitorare i livelli digitali (1/0) sui pin del controllore. Per ciascun canale è possibile selezionare il pin del controllore che si intende monitorare e il colore della traccia. La base dei tempi (time/div) riportata in basso a sinistra rappresenta il tempo compreso tra due tracce verticali e può essere modificata trascinando lo slider e selezionando il moltiplicatore (x1, x10, x100 etc.), entrambi questi ultimi disponibili nella parte bassa del componente (figura 23).

Figura 23: esploso delle funzioni di impostazione dell’oscilloscopio virtuale.

Figura 23: esploso delle funzioni di impostazione dell’oscilloscopio virtuale.

Anche il display grafico (GLCD) è un componente facilmente interfacciabile con un controllore PIC. Il relativo componente virtuale integrato in Real PIC Simulator simula più precisamente un display grafico 128x64 pixel Samsung KS107/KS108 compatibile (figura 24).

Figura 24: esploso delle funzioni di impostazione del “Display grafico” virtuale (128x64 pixel Samsung KS107/KS108 compatibile).

Figura 24: esploso delle funzioni di impostazione del “Display grafico” virtuale (128x64 pixel Samsung KS107/KS108 compatibile).

Accedendo al menu di impostazione l’utente può impostare il colore del display e le interconnessioni con il controllore analogamente a quanto già mostrato per i display di testo. Il formato dei dati è a 8 bit (inviati attraverso i pin D0-D7). Il buzzer virtuale (figura 25) corrisponde fisicamente a un suono emesso dalla scheda audio del PC.

Figura 25: A - esploso delle funzioni di impostazione di un “buzzer” virtuale; B - buzzer interdetto.

Figura 25: A - esploso delle funzioni di impostazione di un “buzzer” virtuale; B - buzzer interdetto.

Il componente viene utilizzato impostando il pin del controllore cui esso è connesso; il suono generato corrisponde alla frequenza PWM su questo pin del controllore e il componente può essere silenziato o abilitato attraverso un click del mouse. Il generatore di funzioni (8 canali massimo) è un altro componente virtuale estremamente utile impiegato per generare segnali di ingresso per il controllore (figura 26).

Figura 26: esploso delle funzioni di impostazione del “Generatore di funzioni” virtuale (8 canali).

Figura 26: esploso delle funzioni di impostazione del “Generatore di funzioni” virtuale (8 canali).

Tra i parametri di impostazione più importanti del componente vi è il “bit time” cioè il tempo per il quale un bit, il cui livello è delimitato da due linee verticali, si manifesta. Esso può essere impostato attraverso la track-bar e l’apposito moltiplicatore (x1, x10, x100 ecc.). L’utente può assegnare e/o modificare il valore del bit attraverso un click del mouse sulla traccia del segnale nel punto temporale desiderato. La traccia del segnale si intende percorsa da sinistra verso destra in maniera ciclica. Altri componenti che sovente troviamo connessi a un controllore sono le memorie eeprom (figura 27).

Figura 27: esploso delle funzioni di impostazione di una eeprom 24C64 interfacciata su bus I2C.

Figura 27: esploso delle funzioni di impostazione di una eeprom 24C64 interfacciata su bus I2C.

Il componente virtuale 24C64 I2C integrato in Real Pic Simulator simula una memoria eeprom 24C64 basata su comunicazione I2C. La memoria eeprom virtuale può essere caricata con un “hex file” accedendo al menu di impostazione (opzione “Load memory content“) dello stesso componente. Il contenuto della memoria può essere azzerato (reset a 0xFF, menu di impostazione, comando “Clear memory”) e ciascun singolo byte della memoria può essere impostato attraverso un semplice doppio click del mouse. Clock e Data line possono essere impostati per la comunicazione I2C mentre “chip address” è l’indirizzo selezionato dall’hardware attraverso le linee A0-A2. Più memorie possono quindi essere connesse allo stesso bus I2C poiché la relativa selezione è gestibile attraverso il “chip address”. Completa l’insieme delle risorse esterne hardware virtuali integrate in Real Pic Simulator il DS1307 Real Time Clock (figura 28) della cui memoria è possibile scrivere/leggere il contenuto attraverso una comunicazione I2C basata sull’impiego della linea “Data” e della linea “clock”.

Figura 28: DS1307 Real Time Clock virtuale.

Figura 28: DS1307 Real Time Clock virtuale.

CONCLUSIONI

Come il lettore avrà avuto modo di riscontrare, Real Pic Simulator è un simulatore di microcontrollori PIC di Microchip di fascia base e media che consente la simulazione visuale di applicazioni firmware precedentemente compilate. Per questo motivo può essere sia un ottimo strumento di apprendimento sia un valido strumento di supporto alla progettazione firmware di questo tipo di controllori. I lettori maggiormente interessati all’argomento possono effettuare dalla Rete il download della versione demo del software, la sua installazione sul proprio PC e l’esame diretto delle sue funzionalità. Il presente articolo è in ogni caso una semplice descrizione generale del simulatore che in nessun modo intende sostituire le informazioni e la documentazione ufficiale del produttore, cui si rimanda per ogni approfondimento.

Scarica subito una copia gratis

5 Commenti

  1. Iacopo Banchini 2 Febbraio 2020
  2. ZOPDAR ZOPDAR 2 Febbraio 2020
  3. Doc77 Doc77 3 Febbraio 2020
  4. Adriano Gandolfo Adriano Gandolfo 3 Febbraio 2020
  5. giulioelettronica giulioelettronica 18 Febbraio 2020

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend