Fórum témák

» Több friss téma
Cikkek » PicKit3 Debug Express - Tananyag kezdőknek I.rész
PicKit3 Debug Express - Tananyag kezdőknek I.rész
Szerző: zimpee, idő: Szept 11, 2011, Olvasva: 32211, Oldal olvasási idő: kb. 4 perc
Lapozás: OK   4 / 4

Ebben a leckében átnézzük kicsit a Config Biteket, és beállításuk módját a forráskódban, továbbá megnézzük, hogyan használhatunk késleltetést egy LED villogtatásához, beépített könyvtárakkal.

A lecke fájljai: ITT.
 
Pontosabban:
 - Már létező projekt megnyitását a File>Open Workspace menüponttal MPLAB IDE-ben.
 - A Configuration Bitek beállítását, mellyel a mikrovezérlőnk különböző funkcióit kapcsolhatjuk be és ki.
 - Az alap MPLAB C fordító könyvtárainak, funkcióinak használatát (A DS51297 jelzésű "MPLAB C18 Compiler Libraries" pdf-ben többet is olvashatunk erről).
 - Késleltetés használatát időzítésre szoftveres loopokkal.
 
A 2. lecke projektjének megnyitása MPLAB IDE-ben:
Ez, és a következő leckék már rendelkeznek projekt és munkaterület fájlokkal. A 2. lecke munkaterületének megnyitásához a File>Open Workspace menüpontot válasszuk ki. Tallózzunk a tananyag mappájába, keressük meg a 02 Blink LED/02 Blink LED.mcw fájlt.
Egy munkaterület megnyitása előtt az MPLAB rákérdez, hogy szeretnénk-e menteni a jelenlegi projektünket. Általában ez egy jó döntés, úgyhogy kattintsunk a "Yes"-re! Ezek után megnyílik a 2. lecke munkaterülete.

Config Bitek:
Ezek az egyfajta "biztosítékok" beállítják a vezérlőnk különböző működési paramétereit, például a belső oszcillátor használatát, alap, vagy kiterjesztett címzési módot, az alacsony feszültségű Resetet, és annak feszültségküszöbét, A WatchDog Timert, és részleteit, illetve a kód védelmét is, sok más beállítás mellett.
Néhány funkciót, mint pl. a WatchDog Timert beállíthatjuk úgy, hogy SFR-en szoftveresen kapcsolhassuk be és ki, miközben fut a programunk. A PIC18F45K20 Config Bitjeinek részletes leírásáért nézd meg az adatlap 23. szekcióját!

A kettes leckében minden Configuration Bitet a 02 Blink LED.c forrásfájl elején fogunk beállítani:

  1. /** C O N F I G U R A T I O N   B I T S ******************************/
  2. #pragma config FOSC = INTIO67, FCMEN = OFF, IESO = OFF  // CONFIG1H
  3. #pragma config PWRT = OFF, BOREN = SBORDIS, BORV = 30 // CONFIG2L
  4. #pragma config WDTEN = OFF, WDTPS = 32768 // CONFIG2H
  5. #pragma config MCLRE = OFF, LPT1OSC = OFF, PBADEN = ON, CCP2MX = PORTC // CONFIG3H
  6. #pragma config STVREN = ON, LVP = OFF, XINST = OFF // CONFIG4L
  7. #pragma config CP0 = OFF, CP1 = OFF, CP2 = OFF, CP3 = OFF // CONFIG5L
  8. #pragma config CPB = OFF, CPD = OFF // CONFIG5H
  9. #pragma config WRT0 = OFF, WRT1 = OFF, WRT2 = OFF, WRT3 = OFF // CONFIG6L
  10. #pragma config WRTB = OFF, WRTC = OFF, WRTD = OFF // CONFIG6H
  11. #pragma config EBTR0 = OFF, EBTR1 = OFF, EBTR2 = OFF, EBTR3 = OFF // CONFIG7L
  12. #pragma config EBTRB = OFF // CONFIG7H


A Konfigurációs Biteket a #pragma config szekcióban állíthatjuk be. Az alkalmazott nevek, attribútumok változhatnak vezérlőnként, attól függően, hogy támogatja-e azt a PICünk, vagy sem. Az elérhető beállítások megtalálhatóak az MPLAB IDE súgófelületén, lássuk, mit is állíthatunk a mi PICünkön:

 - Válasszuk ki a Help>Topics menüpontot!
 - Az "MPLAB IDE Help Topics" ablakban kattintsunk a "Language Tools" kategóriára, és válasszuk a "PIC18 Config Settings"-et. Kattintsunk az Ok-ra.
 - Amikor megnyílik a súgóablak, kattintsunk a "Contents" fülre, és nyissuk ki a "Configuration Settings" részt.
 - Válasszuk ki a PIC18F45K20 mikrovezérlőt, hogy láthassuk, milyen beállításokat adhatunk meg a #pragma config szekcióban!
 

 



Ehhez a leckéhez a következő beállítások fontosak (eltérnek az alapbeállítástól):

FOSC = INTIO67

    Ezzel belső oszcillátor módba állítjuk a PICet, így nincs szükség külső kvarcra. Az alapértelmezett frekvencia 1 MHz, a többi lehetséges értékre a 9. leckében térünk ki. Ezzel a beállítással kiválasztjuk továbbá, hogy az OSC1, OSC2 lábak inkább az RA6, RA7 portlábak legyenek, mivel most nem kell kivezessük az oszcillátort.
   
WDTEN = OFF
    Ezzel kikapcsoljuk a WatchDog Timert, aminek funkciója, hogy periodikusan törölni kell a szoftverünkben, különben újraindítja a mikrovezérlőt.
   
LVP = OFF
    Ezzel kikapcsoljuk a Low Voltage Programming funkciót, és felszabadítjuk a PGM lábat, hogy RB5 I/O láb lehessen (A PICkit3 nem használ LVP módot).
   
Noha minden más beállítást alapértéken hagytunk, ajánlatos mindet megadni a forrásfájl elején, a biztonság kedvéért. Ezzel biztosítjuk, hogy a lefordított .hex fájlunkban található programmemória kép tartalmaz minden szükséges elemet a normális működéshez. Az egyetlen kivétel a DEBUG bit, melyet az MPLAB IDE környezetében állítunk be, attól függően, hogy Debug módban fut-e a vezérlőnk, vagy sem.

Lássuk a forráskódot!

Nyisd meg a 2. lecke forrását (02 Blink LED.c) az MPLAB IDE szerkesztőjében, ha még nem tetted!

  1. /** I N C L U D E S **************************************************/
  2. #include "p18f45k20.h"
  3. #include "delays.h"  
  4.  
  5. /** D E C L A R A T I O N S *******************************************/  
  6. void main (void) {
  7.     TRISD = 0b01111111;
  8.     // PORTD 7-es láb kimenet (0) ;  6:0 láb bemenet (1)      
  9.     while (1)     {
  10.     LATDbits.LATD7 = ~LATDbits.LATD7; // LATD onmaga ellentettje
  11.     Delay1KTCYx(50);    // Delay: 50 x 1000 = 50,000 ciklus; 200ms @ 1MHz
  12.     }
  13. }

Ez a forrás tartalmaz egy-két új elemet, amit nem ismerünk. Rögtön az első ilyen az

  1. "#include "delays.h"

amely az MCC18 egyik beépített header fájlja, és segítségével rávehetjük a programunkat, hogy üres ciklusokat számoljon. Az MPLAB C fordító több ilyen hasznos könyvtárt tartalmaz, mint pl. az stdio, stdlib, és funkciókat, mint a ctype, delays, math vagy string.
Vannak továbbá periféria-kezelő könyvtárak, pl. adc, i2c, pwm, spi, usart, timers, és ezek némelyikének szoftveres emulációja, mint a sw_i2c, sw_uart, vagy az sw_spi.

Ezeket a header fájlokat megtalálod az MCC18/h könyvtárban, a forrásukat az src tartalmazza, a könyvtárak maguk pedig a lib-ben vannak. További részletekért ajánlom az "MPLAB C18 Compiler Libraries" pdf-et (DS51297)!

Van még egy új sorunk, amit nem tárgyaltunk ki, a:

  1. Delay1KTCYx(50);

Ez a függvényhívás a delays könyvtárból való, segítségével szoftveresen késleltetünk 1000 utasításnyi időt (TCY). A függvény paramétere ezt az 1k utasítást szorozza meg. Ebben az esetben ez a szám 50, tehát 50 * 1000 = 50000 utasítást késleltetünk. A PIC18F család végrehajtási sebessége 1/4-e az oszcillátor frekvenciájának, vagyis 4 órajel szükséges egy utasítás végrehajtásához. Jelenleg a belső órajelünk 1 MHz, tehát a végrehajtás 250kHz sebességű, avagy TCY = 4 us utasításonként. Így a teljes késleltetés 50000 * 4 us = 200 ms, ami elég lassú ahhoz, hogy az emberi szem érzékelje a LED ki és bekapcsolását.

A példaprogram ezt a késleltetést egy végtelen while ciklusban hívja meg, amely az RD7 láb értékét mindig ellentettjére változtatja 200 ms késleltetéssel. Így villog a 7-es LEDünk a Demópanelen.

Fordítsuk le és égessük be a példaprogramot a vezérlőnkbe! Ha még nem tettük, adjunk tápot a panelnek az előző leckében tanult módon, különben nem tudunk programozni. Programozás után láthatjuk, hogy 200 ms-onként váltva, villog a LEDünk!

A továbbiakban ennél komplexebb műveleteket is végrehajtunk, 2-3 lecke múlva egy igazi Knight Rider villogó már senkinek nem okozhat gondot!

HÁZI FELADAT: Változtassuk a késleltetés értékét mindkét irányba! Próbáljuk ki, milyen, amikor másodpercenként villog a LED, és állítsuk minél gyorsabbra! Kinek milyen gyors a szeme, milyen frekvenciát lát még villogásnak?


Folytatása következik!


Forrás:
Microchip PICkit™ 3 Debug Express: PIC18F45K20 – MPLAB® C Lessons
 

Következő: »»   4 / 4
Értékeléshez bejelentkezés szükséges!
Bejelentkezés

Belépés

Hirdetés
XDT.hu
Az oldalon sütiket használunk a helyes működéshez. Bővebb információt az adatvédelmi szabályzatban olvashatsz. Megértettem