ELEMANIA
PIC16F690 - MPLAB IDE
Un programma di esempio

Per vedere rapidamente e per sommi capi il funzionamento dell'ambiente di sviluppo MPLAB IDE, facciamo riferimento come esempio al programma per la scrittura e la lettura di PORTA sviluppato precedentemente.

Per le istruzioni di installazione e di uso del programma MPLAB IDE, consigliamo anche la lettura di questa semplice guida passo-passo in pdf.

Avvio del programma e creazione di un nuovo progetto

Anzitutto avviamo l'ambiente MPLAB IDE e creiamo un nuovo progetto con Project/Project Wizard.

Le schede seguenti ci guidano rapidamente alla creazione di un nuovo progetto. Come tipo di PIC (device) scegliamo il nostro PIC16F690 (o altro modello utilizzato):

Qualora non fosse già predisposto, configuriamo le opzioni di compilazione come mostrato nella finestra seguente:

Forniamo quindi un nome e una cartella in cui salvare il nuovo progetto:

Possiamo saltare la scheda seguente (poiché non abbiamo al momento file già esistenti da aggiungere al progetto) e arriviamo direttamente alla fine.

Scrittura del programma

Per creare un nuovo file da aggiungere al progetto dobbiamo scegliere File/New. Si apre una finestra nella quale possiamo copiare il nostro programma, per esempio questo:

INCLUDE <P16F690.INC>

__CONFIG _CP_OFF & _CPD_OFF & _BOR_OFF & _PWRTE_ON & _WDT_OFF & _INTRC_OSC_NOCLKOUT & _MCLRE_ON & _FCMEN_OFF & _IESO_OFF

ORG 0 ; indirizzo iniziale in memoria EPROM        BCF 03,5 ; Seleziona il banco 2

BANKSEL ANSEL ; Seleziona il banco 2
CLRF ANSEL ; azzera tutti i bit di ANSEL (digital I/O)

BANKSEL PORTA ; Seleziona il banco zero
MOVLW b'11' ; scrive il valore 11 su W
MOVWF PORTA ; copia il contenuto di W su PORTA
        
BANKSEL TRISA ; Seleziona il banco 1
MOVLW b'111100' ; Salva la costante binaria in W
MOVWF TRISA ; Scrive W su TRISA  (solo a questo punto PORTA viene modificata)

BANKSEL PORTA ; Seleziona il banco zero (contenente PORTA)
MOVF PORTA, W ; Legge il valore presente all'indirizzo 05h (PORTA) e lo salva in W

GOTO $
END

Dobbiamo quindi salvare il programma con File/Save fornendogli un nome significativo e lasciando come estensione .asm (in genere il file viene salvato nella stessa cartella che contiene il progetto).

Infine bisogna aggiungere al progetto il file appena creato. Per fare questo cliccare col tasto destro del mouse su Source e scegliere Add Files e quindi selezionare il file creato prima:

A questo punto il nostro programma dovrebbe apparire con i colori mostrati in figura seguente:

Si osservino i colori diversi che vengono usati dal programma per evidenziare le istruzioni e le direttive (in blu) e i commenti (in verde). Qualora le istruzioni non venissero riconosciute correttamente e quindi i colori non fossero assegnati come detto, controllare le tabulazioni a inizio riga (ogni linea deve cominciare con un TAB): nel processo di Copia e Incolla dal browser infatti le tabulazioni potrebbero essere state copiate in modo non corretto.

Per il significato delle direttive INCLUDE, __CONFIG, ORG e END rimandiamo alla lezione sulla struttura di un programma in assembly.

Compilazione e simulazione

Per compilate il programma bisogna scegliere Project/Build All e scegliere Relocatable. La differenza fra le due modalità di compilazione proposte (Relocatable e Absolute) è che con la modalità Absolute tutti gli indirizzi usati devono essere specificati nel programma e corrispondono agli indirizzi effettivi nella memoria RAM del PIC; con la modalità Relocatable invece è possibile lasciare parte del lavoro di assegnazione degli indirizzi al Linker (un modulo che viene eseguito quando scegliamo Build All). Per programmi semplici come il nostro (costituiti da un solo file sorgente e senza l'utilizzo di direttive di allocazione in memoria dell'assemblatore, come per esempio la RES), le due scelte sono sostanzialmente equivalenti. Tuttavia per lavori più complessi la modalità Relocatable è generalmente preferibile, in quanto produce codice più pulito e più facilmente portabile da un PIC a un altro.

Se non ci sono errori la compilazione termina col messaggio BUILD SUCCEEDED. A questo punto possiamo simulare il programma. Scegliamo prima Debugger/Select Tool e quindi MPLAB SIM:

Andiamo quindi su View e attiviamo la visualizzazione dei registri speciali (Special Function Registers) in modo da poter visualizzare il contenuto dei registri del PIC.

Possiamo dunque avviare la simulazione, usando i tasti rapidi mostrati nella figura seguente:

Maggiori dettagli sui principali comandi del simulatore si possono trovare in questa breve guida in formato Power Point (cortesia prof. Roberto Bianchini).

Esportare il file hex

L'ultima fase dello sviluppo del firmware (cioè del programma per il PIC) consiste nell'esportare il programma compilato in formato esadecimale, per caricarlo successivamente sul PIC stesso. A tale scopo bisogna usare il menu File/Export... e quindi fornire OK alla scheda successiva:

Il salvataggio va fatto indicando quindi un file con estensione .hex

Assicurarsi che sia disattivata l'opzione Calibration Memory (funzione non disponibile per il pic16F690) altrimenti si ottiene un messaggio di errore al momento di caricare il programma sul PIC.

ATTENZIONE: eseguendo il Build del programma viene generato già un file .hex, ma questo è incompleto, in quanto manca dei bit di configurazione. E' consigliabile sovrascriverlo con File/Export in modo da avere un codice corretto per il caricamento sul PIC.

I file creati da MPLAB

Dopo aver creato e compilato un programma in MPLAB ci si accorgerà che sono stati creati numerosi file. Cerchiamo ora di vedere per sommi capi che cosa significano i più importanti di questi file.

1) PROGETTO

Abbiamo anzitutto un file con estensione .mcp (Microchip MPLAB Project) che rappresenta il file di progetto.  Un progetto è in sostanza l'insieme dei file (sorgenti assembly, librerie etc) necessari per compilare un programma. Il file di progetto tiene traccia di tutti questi file e delle loro reciproche associazioni, cioè in sostanza contiene i comandi per compilare un programma.

Cliccando due volte sul nome di un file di progetto, si apre automaticamente l'ambiente MPLAB e vengono caricati i file relativi al progetto stesso.

Per mantenere ordine nei propri programmi, consigliamo di creare un nuovo progetto per ogni nuovo programma sviluppato e una nuova cartella per ogni nuovo progetto. Tutti i file relativi al programma andranno salvati nella cartella stessa.

Consigliamo inoltre di dare alla cartella lo stesso nome del progetto.

2) WORKSPACE

Il workspace (spazio di lavoro) contiene informazioni sul particolare PIC selezionato, sugli strumenti di debug/programmazione attivati, sulle finestre aperte e la loro collocazione. In pratica esso memorizza la configurazione dell'ambiente di sviluppo MPLAB-IDE e corrisponde a un file con estensione .mcw (Microchip MPLAB Workspace):

Cliccando due volte sul file workspace, viene aperto l'ambiente MPLAB e caricato il progetto attivo al momento del salvataggio del workspace stesso. Sebbene MPLAB consenta la gestione di progetti multipli abbinati a un unico workspace, consigliamo per semplicità di usare un workspace per ogni progetto (ciò corrisponde all'opzione di default, perciò non è necessario in effetti fare nulla).

3) FILE ASSEMBLY

I file assembly (estensione .asm) contengono codice nel linguaggio assembly del PIC. Si tratta in sostanza dei file contenenti il programma vero e proprio. Nel caso dei progetti più semplici, il progetto è costituito da un unico file .asm: in questo caso consigliamo di assegnare al file .asm lo stesso nome del progetto e della cartella relativa.

In ogni caso è importante accertarsi che il file asm venga salvato nella stessa cartella contenente il progetto (salvo casi diversi in cui si voglia effettivamente mantenere alcuni file assembly in cartelle separate rispetto a quella del progetto). Osserviamo che occorre esplicitamente indicare in un progetto (attraverso il comando Source/Add Files visto prima) i file sorgenti .asm che fanno parte di un progetto. In altre parole: un progetto appena creato è una "scatola vuota" che non contiene nessun sorgente e che dunque dev'essere "riempita" aggiungendo al progetto tutti i file assembly necessari.

Un file assembly è semplicemente un file di testo che può essere letto e modificato con qualsiasi editor di testo (come per esempio il Blocco Note di Windows). La Microchip fornisce un file assembly di modello (detto file template) per ogni PIC prodotto. Per esempio quello relativo al PIC16F690 si chiama 16F690TEMP.ASMpuò essere scaricato qui.

4) FILE PRODOTTI DALLA COMPILAZIONE

Quando si esegue il comando Build All vengono generati (nella cartella del progetto) tutta una serie di file con varie estensioni (.cof, .err, .lst, .map etc) che contengono i risultati della compilazione stessa. Fra questi uno dei più importanti è il file  con estensione .hex che contiene il codice macchina in binario per la programmazione del PIC.

Come vedremo fra poco, il file .hex viene importato dal programmatore di PIC che si occupa di scriverlo sulla EEPROM del dispositivo.

precedente - successiva

Sito realizzato in base al template offerto da

http://www.graphixmania.it