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
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...
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 ...