A PIC32MX130F064B mikrovezérlő különböző órajelforrásokkal és PLL beállítási lehetőségekkel rendelkezik. A mikrovezérlő oszcillátorának a diagramjának a rajza látható az első ábrán. Rendelkezik a mikrovezérlő külső (kettő, POSC, SOSC) és belső (FRC, LPRC) órajelforrással.
1. ábra A PIC32MX130F064B órajelblokk
Láthatjuk, hogy ez a blokkvázlat nagyon bonyolult, nem könnyű bitszinten programozni. A különböző konfigurációs bitek az OSCCON regiszterben találhatók (2. ábra).
2. ábra A PIC32MX130F064B OSCCON regisztere (link)
Ennek a regiszternek a tartalmát módosíthatjuk közvetlenül a regiszterbe való írással, vagy pedig egyéb megoldással, ha szeretnénk az órajelünk frekvenciáját módosítani.
A következő példák ezekre mutatnak megoldásokat, tehát megkerüljük azt, hogy az OSCCON regiszterbe közvetlenül írjunk.
Fordítsuk le a következő programot, amely a B port 0. bitjén lévő LED-et (LD1) villogtatja. Hogy lássuk a LED-nek a villogását, egy "Keses()" függvényt hívunk meg a while(1) végtelen ciklusban. (Ezt a programot fogjuk később különbözőképpen módosítani.)
#include <p32xxxx.h>
main()
{
DDPCONbits.JTAGEN = 0;
TRISB = 0x0000;
LATB = 0x0000;
while(1)
{
LATBbits.LATB0 = ~LATBbits.LATB0;
Keses(50000);
}
}
void Keses(unsigned int Hatar)
{
int i;
for(i = 0; i <= Hatar; i++)
{}
}
Először tiltjuk a JTAG-et, majd beállítjuk a "B" portot kimenetre, amelyet azután törlünk. A "B" port törlése után bekerül a vezérlés a végtelen ciklusba, majd a szoftveres késleltetés után mindig negáljuk a "B" port 0. kimenetét.
Használjuk a "#pragma config"-okat, hogy az órajelmodulnak a különböző lehetőségeit beállítsuk. Ezekről a beállítási lehetőségekről részletesebben olvashatunk a hlpPIC32MXConfigSet.chm file-ban, amely a fordító könyvtárában található.
#include <p32xxxx.h>
#pragma config FPLLMUL = MUL_20 // 20-szoros szorzás
#pragma config FPLLIDIV = DIV_2 // 2-es osztás
#pragma config FPLLODIV = DIV_2 // 2-es osztás
#pragma config POSCMOD = OFF // az elsődleges órajelforrás tiltva
#pragma config FPBDIV = DIV_8 // SysCLK / 8
#pragma config FNOSC = FRC // FRC-t használjuk
#pragma config FWDTEN = OFF
void Keses(unsigned int Hatar);
main()
{
DDPCONbits.JTAGEN = 0;
TRISB = 0x0000;
LATB = 0x0000;
while(1)
{
LATBbits.LATB0 = ~LATBbits.LATB0;
Keses(250000);
}
}
void Keses(unsigned int Hatar)
{
int i;
for(i = 0; i <= Hatar; i++);
}
Elhagyva a "#pragma config" megoldást, használhatjuk az OSCConfig() függvényt és az mOSCSetPBDIV() makrót is az órajel tulajdonságainak a beállítására. Ezeknek a leírása szintén megtalálható a fordító könyvtárában (Microchip-PIC32MX-Peripheral-Library.chm).
Ahhoz, hogy ezt a függvényt és makrót használni tudjuk, a plib.h file-t hozzá kell adnunk (#include <plib.h>) a programunkhoz.
#include <p32xxxx.h>
#include <plib.h>
void Keses(unsigned int Hatar);
main()
{
DDPCONbits.JTAGEN = 0;
OSCConfig(OSC_FRC_DIV16,0,0,OSC_FRC_POST_8);
// SYSCLK/4
mOSCSetPBDIV(OSC_PB_DIV_4);
TRISB = 0x0000;
LATB = 0x0000;
while(1)
{
LATBbits.LATB0 = ~LATBbits.LATB0;
Keses(10000);
}
}
void Keses(unsigned int Hatar)
{
int i;
for(i = 0; i <= Hatar; i++);
}
Október közepén elindítjuk az Atmel 8 bites mikrovezérlőkről szóló sorozatunkat. Ehhez használnunk kell természetesen egy fejlesztőkörnyezetet is. Több ilyen is létezik, például a WinAVR, vagy az Atmel Studio. Mi az Atmel Studio-t fogjuk használni, e. . . .
A PIC18F mikrovezérlők ma is népszerű a fejlesztők körében. Noha 8 bites architektúráról beszélünk, számos érdekes és hasznos alkalmazás megvalósítható vele. Elég csak az USB-re, vagy akár az Ethernetre gondolnunk. Ezért a Szerkesztőség egy sorozat k. . . .
A Microchip által javasolt fejlesztőkörnyezet az MPLABX, amely felváltja az MPlab-ot. Használata nehézkesnek tűnhet, ezért megnézzük ennek az IDE környezetnek a használatát, készítünk egy egyszerű projektet, amely egy PIC32 mikrovezérlőre épül.. . . .