Lezione n° 4 - mrscuole.net

Transcript

Lezione n° 4 - mrscuole.net
Corso introduttivo sui
microcontrollori
A. S. 2007 – 2008
La programmazione dei PIC
Assembler: esempi - applicazioni
Nicola Amoroso
[email protected]
NA – L4
http://www.mrscuole.net/anxapic/
1
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Un programma in assembler è scritto come codice sorgente (un semplice file di
testo) su un normale PC, qualsiasi text-editor (es. notepad, blocco note di MS
Windows, etc…) può essere usato.
Il PIC development system software MPLAB (dowload gratuito su
http://www.microchip.com) contiene un editor di testo per la scrittura di codice.
Le istruzioni sono semplici e facilmente consultabili sul Data-Sheet del
microcontrollore PIC16F877 (Table 13-2); il codice scritto viene salvato con
estensione “*.ASM “ (Es. Led_Blinking.asm).
Il codice sorgente, in assembler, viene quindi “compilato” (convertito in
linguaggio macchina) mediante il compilatore MPASM (Gratuito e compreso in
MPLAB) che converte in binario il codice sorgente (visibile con un editor
esadecimale – Hex editor, come sequenza di numeri esadecimali). L’estensione di
questo file è “*.HEX” (Es. Led_Blanking.hex).
Mediante un opportuno programmatore (opportunamente interfacciato al PC),
questo “codice binario” viene memorizzato nella FLASH PROGRAM MEMORY
del controllore.
NA – L4
http://www.mrscuole.net/anxapic/
2
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
:1000000008308A00C92D0000FF00030E8301A10003
:100010000A08A0008A010408A2007708A300780853
:10002000A4007908A5007A08A6007B08A70083131E
:1000300083128B1E1D280B1936288C308400801EDD
:1000400023288C1A3928220884002308F700240862
:10005000F8002508F9002608FA002708FB00200808
:100060008A00210E8300FF0E7F0E09008A110A12FA
:10007000E4288A110A1287280A108A100A118207B6
:1000800020344D34413441345234533420345334C9
:1000900054344134523454345534503420344D3473
....................
:103F10008A1525308316B0000A128A1183120426EE
:103F20000A168A1501308316B0000A128A1183120C
.....................
:103F6000B12E0A148A140A158207FE2CFE2CFE2C90
:023F7000FE2C25
:02400E00323F3F
:00000001FF
;PIC16F876
NA – L4
Esempio file assembler *************
;Led blinking -> ON/OFF ogni 500 ms
;Led collegato su RB0
;N.A. October 2004
;********************************************
;**************
Esempio di file HEX
PROCESSOR
16F877A ;Direttive preprocessore
RADIX
DEC
INCLUDE
"P16F877A.INC"
ERRORLEVEL
-302
__CONFIG
3FF1H
LED EQU 0
;Bit 1 della porta relativa
ORG 20h
;Registro general purpose
ram RES 2
;Riservo due registri a 8 bit
ORG 00H
;Start reset vector
bcf STATUS,RP1
;Scelgo il Bank 1
bsf STATUS,RP0
;RP1=0 RP0=1
movlw 00111111B
;Bit PORTA come input
movwf TRISA
movlw 11111110B
;Bit1 PORTB in Out
movwf TRISB
;gli altri bit in input
bcf STATUS,RP0
;Torno al Bank0
bsf PORTB,LED
;Accendo il Led
Loop ; Label
call Delay
;Delay 500 ms
btfsc PORTB,LED ;Spengo il led
goto Spegni ;se è acceso
bsf PORTB,LED ;Accendo il led
goto loop ;Jump a Loop
http://www.mrscuole.net/anxapic/
3
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Dopo aver scritto il programma , cioè il codice sorgente, lo si
compila: viene creato un file oggetto con estensione .HEX, il quale
deve essere caricato nella memoria di programma del PIC.
Per caricare il file .HEX nella memoria programma del PIC occorre:
• Un personal computer
• Un programmatore
• Il software di gestione del programmatore
NA – L4
http://www.mrscuole.net/anxapic/
4
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La Demo-Board “AnxaPic3”
Pull-Up [A4-B5-B4-B2-B1-B0]
10
1
2
21
20
3
23
4
5
19
18
6
23
17
7
16
8
15
6
14
13
10
21
NA – L4
20
9
12
11
22
22
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
LCD Display
LCD Contrasto – Luminosità
Cicalino
Alimentazione 9-12 Vcc
Power ON-OFF
ICD2 - PicKit2 Programmer
RS232 Com
EEPROM
Cicalino Pin select
Pull-Up [A4-B5-B4-B2-B1-B0]
I2C Conn
1-Wire Conn
Tastierino 4x4 Conn
Expansion-Replicate PORT
Expansion BUS Conn
RTC Conn
ADC Pot
RB0 Interrupt Sw
Reset Sw
Display Pin Select
I2C Pull-Up
RS232 Rx-Tx En/Dis
[RA0 ADC – LD1] ON/OFF
http://www.mrscuole.net/anxapic/
5
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La Demo-Board AnxaPic3
NA – L4
[Schema elettrico]
http://www.mrscuole.net/anxapic/
6
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
PIC Software
Il sistema integrato “MPLAB IDE” è il mezzo più efficace per lavorare con i
microcontrollori PIC.
MPLAB viene eseguito su un PC, quando il codice è scritto e compilato, il
funzionamento dello stesso può essere “simulato” e “verificato” all’interno di
MPLAB stesso, successivamente il programma può essere memorizzato nella
Flash Memory Program del controllore mediante opportuno programmatore
collegato (USB/RS232C/PARALLEL) con un PC.
Uno degli strumenti più utili e
versatili, per programmare il PIC,
è l’ICD (In Circuit Debugger) Programmer che permette di
programmare oppure effettuare il
Debug (verifica codice step by
step) in modo diretto mediante
l’ausilio
del
collegamento
“USB/RS232C” con un PC e i
PIN RB6 e RB7 del controllore.
NA – L4
http://www.mrscuole.net/anxapic/
7
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Il sistema integrato MPLAB IDE ha un text-editor incluso per
la scrittura del codice; può essere scaricato gratuitamente dal
sito della Microchip [http://www.mcrochip.com]
NA – L4
http://www.mrscuole.net/anxapic/
8
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
MPLAB è un “sistema integrato” che permette di creare e sviluppare un programma
con estrema facilità. Lo si può descrivere come uno ambiente di sviluppo (IDE) per un
determinato linguaggio standard necessario per programmare un Microcontrollore
Microchip. Non occore eseguire funzioni mediante riga di comando ma tale ambiente
di sviluppo è in grado di supportare l’operatore in tutte le fasi, dalla scrittura del
codice fino alla simulazione e anche fino alla fase di emulazione con opportuno hw.
Creazione di un progetto
La preparazione del programma da caricare nel
microcontrollore richiede i seguenti passi:
1. Creare un progetto
2. Scrivere il programma
3. Convertirlo in binario (compilare)
La prima schermata dopo l’apertura di MPLAB
NA – L4
http://www.mrscuole.net/anxapic/
9
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creazione di un progetto: Creare un nuovo progetto
Cliccare su PROJECT e successivamente su
PROJECT WIZARD
NA – L4
sarà aperta la seguente finestra.
Cliccare su NEXT per continuare
http://www.mrscuole.net/anxapic/
10
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creare un nuovo progetto
Occorre adesso scegliere l’appropriato
microcontrollore della famiglia PIC. Nella
seguente
videata
viene
scelto
il
PIC16F84A.
N.B: => Noi lavoreremo sempre con i PIC
16F877/16F877A
Scegliere il microcontrollore appropriato.
Cliccare su NEXT per continuare
NA – L4
http://www.mrscuole.net/anxapic/
11
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creare un nuovo progetto
Il passo successivo consiste nel definire il
linguaggio che si intende utilizzare per la
programmazione. Se useremo il linguaggio
assembler,
occorre
selezionare
l’opzione
“Microchip MPASM Toolsuite”
Selezionare il corretto “language toolsuite”
Cliccare su NEXT per continuare
NA – L4
Indichiamo il nome del progetto e il percorso. Il
nome dovrebbe riflettere lo scopo e il contenuto
del programma
Nome del progetto.
Cliccare su NEXT per continuare
http://www.mrscuole.net/anxapic/
12
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creare un nuovo progetto
si aprirà la finestra “summary” contenente i parametri precedentemente definiti
Cliccare FINISH per creare il progetto
NA – L4
http://www.mrscuole.net/anxapic/
13
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Scrivere il programma: Creare un nuovo file in assembler
Dopo aver creato il progetto mediante il wizard
apparirà la seguente schermata.
Adesso dobbiamo scrivere il programma,
questa operazione richiede ulteriori file da
dover creare/aprire e aggiungere al progetto.
Cliccare su FILE > NEW, si aprirà una
nuova finestra all’interno della working
area di MPLAB (La nuova finestra conterrà
il programma che si dovrà scrivere). Dopo
aver aperto il nuovo file dobbiamo salvarlo
(è buona regola), useremo il solito percorso
in cui è salvato l’intero progetto, ed il nome
del file sarà “Blink.asm", questo è un nome
che ci permetterà di ricordare la natura del
programma (ad esempio lampeggio di un
diodo led collegato sul pin RD3 della porta
D del microcontrollore della DemoBoard
AnxaPIC).
NA – L4
http://www.mrscuole.net/anxapic/
14
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creare un nuovo file in assembler
Per includere un nuovo file al progetto.
Premere il tasto
destro del mouse
sul “source file”
nella finestra di
progetto.
Si apre una nuova ‘browse window’ cerchiamo la
nostra cartella di progetto e selezioniamo il file
".asm", da aggiungere al progetto..
Questo aprirà una
piccola
finestra
con due opzioni.
Scegliamo: "Add
Files"
Inserimento di un nuovo file Assembler nel progetto. I
nomi di file e progetto sono puramente indicativi.
NA – L4
Inserimento di un nuovo file Assembler nel progetto.
N.B. => Nomi puramente indicativi!
http://www.mrscuole.net/anxapic/
15
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creare un nuovo file in assembler
Scriviamo nella finestra di editor il codice “assembler” per il
nostro programma.
La fnestra di progetto dopo
aver aggiunto il file assembler.
NA – L4
; Anxa3 Led Blinking
; BLINK.ASM
; ------------------------------------------------; LED ON-OFF con ritardo di circa 500 ms
; Il led è collegato su RD3
; ------------------------------------------------; Hardware => AnxaPic3 v3.0 rA
; Processor => Pic16F877
; Clock => 10 MHz
; ------------------------------------------------;
(C)N.A. August 2007
;**************************************************
PROCESSOR
16F877
RADIX
DEC
;
INCLUDE
"P16F877.INC"
; --- Setup of PIC config fuses
……………………………………………………..
http://www.mrscuole.net/anxapic/
16
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Creare un nuovo file in assembler
La fnestra di editor può essere personalizzata con numeri di riga e altro => [Edit > Properties …]
NA – L4
http://www.mrscuole.net/anxapic/
17
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Compilare il progetto: Creare un file .hex
Al termine della scrittura del programma nella finestra di
editor, dopo aver verificato la correttezza del codice scritto e
aver salvato il file con estensione “.asm”, siamo pronti a
compilare il progetto, per farlo andiamo su PROJECT ->
BUILD ALL; questo comando traduce il file assembler in un
file eseguibile in formato HEX (esadecimale). Apparirà una
finestra di log nella quale verrà indicato se la compilazione è
andata a buon fine. "BUILD SUCCEEDED" è un messaggio
che indica la corretta compilazione (nessun errore).
In caso di errori è possibile fare doppio click sul messaggio d’errore nella finestra di “Output”
ed automaticamente verrà mostrato il codice assembler esattamente alla linea dove si è incontrato
l’errore.
NA – L4
http://www.mrscuole.net/anxapic/
18
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Il simulatore software MPSIM
l simulatore è una parte dell’ambiente MPLAB il quale permette di avere una visione globale sul
comportamento del nostro programma per un determinato microcontrollore permettendoci di
verificare che il comportamento dello stesso sia corretto.
Mediante il simulatore possiamo monitorare il valore corrente delle variabili utilizzate, dei registri
e lo stato delle porte a livello di pin. Il valore aggiunto dato dal simulatore non è sempre costante
infatti dipende dal programma che stiamo simulando.
Se abbiamo un programma semplice (come questo da noi creato come esempio), la simulazione
non è così importante poichè portare il valore sul pin della porta D non è poi così difficile da
realizzare; diversamente si rivela uno strumento indispensabile nel caso di programmi più
complessi che magari contengano timers, oppure operazioni matematiche. La simulazione, così
come indicato dal nome, “simula l’operare di un microcontrollore”. Il simulatore esegue il
programma linea per linea ed evidenzia i valori dei registri e variabili del microcontrollore.
Dopo aver scritto il programma è buona norma simularlo per controllare di non aver commesso
errori o che quanto realizzato soddisfi i nostri obbiettivi, successivamente si può far girare
l’applicazione in un sistema reale.
La simulazione è un passo importante nella realizzione di un progetto con microcontrollori.
NA – L4
http://www.mrscuole.net/anxapic/
19
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Il simulatore software MPSIM
Per aprire il simulatore
cliccare su:
DEBUGGER > SELECT
TOOL > MPLAB SIM
Appariranno quattro nuove icone sulla destra. Sono
relative alla simulazione con il seguente significato
Una delle principali caratteristiche del simulatore è l’abilità di visualizzare lo stato dei registri
all’interno del microcontrollore. Questi vengono anche chiamati “special function registers”, ovvero
SFR. Possiamo visualizzarli cliccando su VIEW > SPECIAL FUNCTION REGISTERS.
Oltre agli SFR, è utile dare uno sguardo nei file registers. La rispettiva finestr può essere aperta
cliccando su VIEW > FILE REGISTERS.
Inoltre se il programma contiene delle variabili può essere interessante monitorarle. Ciascuna
variabile viene visualizzata in una finestra (Watch Windows) cliccando su VIEW > WATCH.
NA – L4
http://www.mrscuole.net/anxapic/
20
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Il simulatore software MPSIM
NA – L4
http://www.mrscuole.net/anxapic/
21
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Il simulatore software MPSIM
Quando tutte le variabili e registri di nostro interesse sono visibili nella workarea, possiamo iniziare
la simulazione.
La prima cosa da fare è il reset del microcontrollore mediante il comando DEBUGGER >
RESET oppure cliccando sulla icona di reset. Verrà evidenziata una freccia in verde a sinistra
della prima linea del grogramma, e il program counter PCL verrà resettato a zero, questo
può essere visto nella finestra dei registri (Special Functions Registers window).
Possiamo impartire il comando Step Into oppure Step Over, a seconda se si vogliano eseguire o
meno step by step le subroutine. I medesimi comandi possono essere impartiti da tastiera mediante
i tasti F7 o F8.
Nella finestra SFR, Si può osservare come i vari registri cambiano i rispettivi valori al variare delle
righe di codice e di come il registro W immagazzini e trasferisca i rispettivi valori alla porta D (in
questo esempio di Led ON-OFF su RD3).
Durante la simulazione evitare di entrare nelle routine di “delay” in quanto in queste routine i
registri interessati cambiano stato migliaia di volte e solo dopo lungo tempo si riesce ad eseguire
l’intera soubroutine, è sempre utile utilizzare step over (F8) nella fase di simulazione (Spesso le
routine di ritardo vengono disabilitate nella simulazione).
NA – L4
http://www.mrscuole.net/anxapic/
22
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
MPLAB e Proteus VSM
Proteus VSM (Virtual System Modelling – Labcenter Electronics UK) è uno dei sistemi più
avanzati per la simulazione di circuiti digitali-analogici comprendenti microcontrollori; è l’unico,
sino ad oggi, ad avere un larghissimo range di modelli software per microcontrollori.
E’ possibile integrare Proteus VSM all’interno di MPLAB IDE è procedere con la simulazione in
modo più avanzato rispetto a quanto visto con il modulo MPSIM di Microchip.
Per lavorare con MPLAB IDE e Proteus VSM bisogna avere disponibile il software proteusmplabPlugin e installare lo stesso dopo aver installato MPLAB IDE.
Lo schema del circuito da simulare deve essere realizzato al di fuori di MPLAB con il modulo
“Isis” di proteus, non modificare il circuito originale all’interno di MPLAB è sempre buona norma
utilizzare “Isis” per realizzare e modificare gli schemi.
Caricare lo schema nel modulo Proteus in MPLAB mediante gli opportuni menu di Proteus.
Per il software del micro si procede come visto in precedenza: => Progetto -> Compilazione -> file
compilato; siamo a questo punto pronti per la simulazione, bisogna solo associare il file compilato
(.Hex) al microcontrollore dello schema (Vedasi mauale proteus VSM).
NA – L4
http://www.mrscuole.net/anxapic/
23
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
MPLAB e Proteus VSM
Per caricare e aprire il modulo PROTEUS VSM in MPLAB IDE selezionare il
menu: Debugger > Select Tool > Proteus VSM
NA – L4
http://www.mrscuole.net/anxapic/
24
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
MPLAB e Proteus VSM
Il modulo Proteus VSM in MPLAB IDE – Simulazione Visual con microcontrollori PIC
NA – L4
http://www.mrscuole.net/anxapic/
25
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
MPLAB e Proteus VSM
Il modulo Proteus VSM in MPLAB IDE – Simulazione Visual con microcontrollori PIC
NA – L4
http://www.mrscuole.net/anxapic/
26
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Programmare il PIC
Una volta che il programma è stato scritto, compilato e simulato possiamo passare alla
programmazione del PIC.
Innanzitutto bisogna selezionare il
tipo di programmatore di cui
disponiamo tra quelli elencati nel
menu Programmer
> Select
Una volta selezionato il programmatore
comparirà una nuova barra degli
strumenti, la barra degli strumenti del
programmatore:
Programmer
N.B. => L’Hardware necessario
viene installato con l’installazione
di MPLAB nel PC; in questo caso
si sceglie il programmatore
PicStart Plus della Microchip
NA – L4
Prima di eseguire la programmazione è
necessario configurare i bit riguardanti
il tipo di oscillatore e tutte le altre
opzioni attivabili del microcontrollore
(Watchdog timer ecc…)
http://www.mrscuole.net/anxapic/
27
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/
La programmazione dei PIC
Il sistema di sviluppo MPLAB IDE
Programmare il PIC
Per fare questo basta sceglire nel menu
corrispondente, la voce: Configure >
Configuration Bits
N.B. => Spesso la configurazione del
controllore viene “settato” nel programma
che stiamo compilando, ad es. in assembler
vi è la direttiva “__Configure xxxxH. “ che
assolve a questo compito. Il valore
esadecimale
“xxxx”
è
un
numero
corrispondente ai fuses attivati
Comparirà quindi una finestra nella quale potremo
editare le varie voci
N.B. => In questo esempio il valore esadecimale
3F52 è il numero corrispondente alla
configurazione scelta.
La direttiva assembler __Configure sarà in
questo caso: __Configure 0x3F52
N.B. => Sul microcontrollore non finisce la versione salvata del programma compilato ma l’ultima
versione di cui è stato fatto il BUILD, MPLAB IDE darà comunque un messaggio di avvertimento a
riguardo nel caso in cui il programma sia stato modificato e non sia stato fatto il BUILD.
NA – L4
http://www.mrscuole.net/anxapic/
28
http://www.mrscuole.net/anxapic/
http://www.mrscuole.net/anxapic/

Documenti analoghi

MPLAB

MPLAB La prima cosa da fare è il reset del microcontrollore mediante il comando DEBUGGER > RESET oppure cliccando sulla icona di reset. Verrà evidenziata in verde la prima linea del grogramma, e il progr...

Dettagli

Lezione n° 5 - mrscuole.net

Lezione n° 5 - mrscuole.net Un programma in assembler è scritto come codice sorgente (un semplice file di testo) su un normale PC, qualsiasi text-editor (es. notepad, blocco note di MS Windows, etc…) può essere usato. Il PIC ...

Dettagli