Strumenti di Simulazione per microprocessori PIC

 

INTRODUZIONE

In questo capitolo verranno descritti brevemente il software MPLAB della Microchip che abbiamo impiegato per scrivere/compilare i programmi ed effettuare le simulazioni relative al PIC 16F84, ed il sistema di programmazione da noi realizzato per caricare il programma Assembler nella Program Memory del Microcontrollore.

SCRITTURA E COMPILAZIONE DI UN PROGRAMMA ASSEMBLER

Come per qualsiasi sistema a microprocessore, anche per il PIC è necessario preparare un programma per farlo funzionare. Un programma è costituito da una sequenza di istruzioni, ognuna delle quali identifica univocamente una funzione che il PIC deve svolgere. Ogni istruzione è rappresentata da un codice operativo (in inglese operation code o più brevemente opcode) composto da 14 bit ed è memorizzata in una locazione di memoria dell'area programma. Tale memoria nel PIC16F84 è di tipo EEPROM e dispone di 1024 locazioni ognuna delle quali è in grado di contenere una sola istruzione oppure una coppia di istruzione/dato. Un esempio di opcode in notazione binaria oppure esadecimale è il seguente:

00 0001 0000 0000B = 0100H .

Questi codici, completamente privi di senso per un essere umano, sono gli unici che il PIC è in grado di capire. Per facilitare il compito al programmatore esistono degli strumenti che rendono le istruzioni più comprensibili. Per convenzione si associa, ad ogni opcode, una breve sigla mnemonica, ovvero una sigla che aiuti a ricordare la funzione svolta da ogni istruzione. L'opcode 0100H dell' esempio precedente, effettua l' azzeramento del registro W e ciò viene indicato con l' istruzione CLRW (CLEAR W). Altre sigle mnemoniche consentono di definire tutte le istruzioni che il PIC è in grado di eseguire, ma anche variabili, costanti ed etichette (Label). L'insieme di queste sigle e le regole per ordinarle per formare un programma completo viene chiamato Linguaggio Assembler. Per scrivere un programma occorre conoscere le istruzioni disponibili sul micro che si intende usare (nel nostro caso un PIC), le regole sintattiche per definire variabili, parametri, ecc. e disporre di un editor di testo con cui digitare il programma. Il file di testo così ottenuto viene denominato Source o Sorgente Assembler. Il passo successivo consiste nel tradurre il sorgente nella giusta sequenza di istruzioni in formato binario che il PIC è in grado di capire. Questo tipo di programma si chiama Compilatore Assembler, o Assemblatore. Nella seguente Figura viene schematizzato il flusso di operazioni ed i file generati necessari per ottenere un PIC programmato:

Figura 5.1 Flusso di operazioni per programmare un PIC.

L' estensione del Source è .ASM, e viene memorizzato come file di testo. Può essere usato un editor ASCII qualsiasi, ad esempio NOTEPAD.EXE di Windows 98/2000, EDIT.EXE di MS/DOS, oppure programmi di elaborazione testi più sofisticati quali WORD o WORDPERFECT, avendo però l' accortezza di memorizzare sempre il file prodotto in formato testo e non in formato nativo (per evitare che vengano memorizazati anche i caratteri di controllo della formattazione del testo che il compilatore Assembler non è in grado di trattare). Il passo successivo è la compilazione del Source, ovvero la trasformazione in opcode dei codici mnemonici o istruzioni assembler in esso contenute. Nel nostro caso abbiamo utilizzato un componente di MPLAB, il programma MPASM.EXE, prodotto dalla Microchip. Come è possibile vedere nella Figura 5.1, oltre al source .ASM è necessario fornire al compilatore un secondo file con estensione .INC, che può essere sia quello fornito dalla Microchip contenente alcune definizioni dipendenti dal chip utilizzato, sia uno fatto da noi per scrivere varie definizioni riguardanti il Source stesso. Durante la compilazione l'assemblatore genera una serie di file con il nome identico al source da cui derivano, ma con estensione diversa. Essi sono:

  • .HEX è il file contenete gli opcode da inserire nella memoria programma del PIC;
  • .LST è un file di testo in cui viene riportato l'intero Source e la corrispondente traduzione in opcode. Non è utilizzabile per la programmazione del PIC ma è estremamente utile per verificare i processi di compilazione che ha eseguito l'assemblatore;
  • .ERR contiene la lista degli errori di compilazione riscontrati ed il numero di linee all'interno del Source in cui sono stati rilevati.

Il file .HEX non è in formato binario ma un file codificato in un formato inventato dalla Intel per la descrizione dei file binari in formato ASCII. Senza entrare nel dettaglio ci basta sapere che tale formato è direttamente riconoscibile da qualsiasi programmatore di PIC il quale provvederà a leggere da questo formato gli opcode ed a trasferirli nella memoria del PIC.

 

AMBIENTE DI SVILUPPO MPLAB

Descrizione del Funzionamento

MPLAB è un software di sviluppo integrato (IDE, Integreted Development Enviroment) per microcontrollori PIC delle famiglie PIC16/17 funzionante in Windows. Esso è in grado di facilitare la scrittura, il test e l' ottimizzazione di software per tutti i microcontrollori della Microchip. Include un Text Editor, un Simulatore ed un Project Manager. MPLAB è anche in grado di gestire in modo integrato gli altri sistemi di sviluppo offerti dalla Microchip: PicMaster, PicStartPlus, IcePic, ProMate, MpAsm. Con MPLAB è possibile gestire all'interno di un solo programma tutte le funzioni che prima erano svolte da software specifici, in particolare esso consente di:

  • Scrivere il file Sorgente;
  • Compilare il file Sorgente e segnalare eventuali errori;
  • Testare il Sorgente riga per riga facendo accurate misure di tempo.

Per esplicare queste funzioni l' MPLAB comprende al suo interno:

MPLAB Project Manager. Consente di creare un progetto e lavorare con specifici files. Grazie ad esso è possibile passare dalla creazione del testo al Debug del programma.

MPLAB Editor. Serve per creare il file sorgente o altri file di testo senza uscire da MPLAB.

MPASM Universal PIC 16/17 Microcontroller Assembler. Consente di assemblare il file sorgente senza dover uscire da MPLAB.

MPLAB SIM Software Simulator. Col simulatore è possibile eseguire ogni singola riga di programma sorgente controllandone l'effettiva esecuzione.

MPLAB Emulator. Disponendo anche del supporto Hardware è possibile effettuare delle emulazioni In-Circuit, testando direttamente sul circuito il corretto funzionamento del programma.

Entrati nel programma la prima cosa da fare è creare un progetto di lavoro. Selezionando Project>New Project si aprirà la finestra di dialogo che consente di creare il nuovo progetto. All'inizio, al suo interno non vi è nessun file sorgente. Per generare il file sorgente basterà selezionare File>New Source. Dopo aver scritto il sotware bisognerà mettere il file sorgente all'interno del progetto e ciò può essere fatto selezionando il comando Project>Edit Proejct. A questo punto si potrà compilare il file sorgente premendo il tasto F10, si aprirà la finestra di dialogo dell'assemblatore visualizzando tutte le fasi di compilazione e al termine se l'assembler contiene degli errori verrà aperta una finestra in cui sono evidenziati tutti i massaggi d'errore generati dall'assemblatore. Eliminati tutti gli errori si può passare alla fase di test. Per passare dall'editor al simulatore si dovrà selezionare il comando Options> Development Mode , si aprirà la finestra di dialogo in cui si dovrà selezionare MPLAB_SIM e il tipo di microprocessore che si intende simulare. Per maggiori dettagli è sufficiente riferirsi alla guida on line inclusa con il software stesso.

 

Simulazioni

Il software MPLAB ci è stato di grande utilità soprattutto per quanto riguarda le simulazioni sul microcontrollore. In effetti sarebbe impensabile, semplicemente correggendo gli errori di sintassi del programma, sperare che caricando quest' ultimo nel PIC esso funzioni correttamente secondo le specifiche di progetto.

Sfruttando la modalità di simulazione si può eseguire il programma riga per riga ed osservare come viene modificato il contenuto dei vari registri in gioco costituenti l' SRAM del PIC. Nella Figura 5.2 è illustrato un frangente di simulazione della nostra routine tx_snap.

In essa si nota chiaramente una finestra in cui si possono decidere i piedini del PIC in cui inviare degli stimoli ed il tipo di stimoli (gradino, impulso, ecc.). Abbiamo poi un' altra finestra in cui sono mostrati i registri speciali dell' SRAM, come ad esempio W, Status, Option, Intcon, Tmr0, e ecc., e sulla destra si può osservare il contenuto delle locazioni di memoria tipicamente utilizzate dal programmatore, con accanto indicate anche le Label corrispondenti.

Nella Figura 5.3 è mostrato un' altro caso di simulazione, questa volta del Program Counter, cioè dell' oggetto puntatore che si muove lungo le righe del programma per mandarle in esecuzione.

 

Figura 5.2 Esempio di simulazione con MPLAB.

 

Figura 5.3 Visualizzazione del Program Counter.