Strona 1 z 1

Określanie częstotliwości taktowania układu

: sobota 24 paź 2015, 14:53
autor: Antystatyczny
Witam,

Jak wiadomo, by poprawnie działały makra __delay_ms() i __delay_us(), kompilator musi znać częstotliwość pracy wykorzystywanego przez nas układu. O prędkości pracy układu informujemy poprzez zdefiniowanie odpowiedniego makra lub we właściwościach projektu, co de facto również sprowadza się do zdefiniowania makra. Najpierw sposób pierwszy i łatwiejszy, ale obarczony pewną niedogodnością w przypadku pisania wieloplikowego projektu. Celowo pominąłem ustawienia bitów konfiguracyjnych, bo to nie ma dla nas w tej chwili znaczenia.

Kod: Zaznacz cały

#include <xc.h>
#include <stdint.h>
#include <stdbool.h>
#include "mpu_config.h"

#define _XTAL_FREQ 48000000UL

void main(void)
{
    while(true)
    {
       
    }
}


Oprócz plików nagłówkowych i standardowego punktu wejścia widzimy zdefiniowane makro _XTAL_FREQ, które informuje kompilator, że nasz układ taktowany jest sygnałem o częstotliwości 48MHz. Jest to sposób najprostszy i najszybszy, ale jeśli stworzymy sobie kilka plików i w każdym z nich będziemy mieli zdefiniowane takie makro (bo pliki te są np. naszymi libsami pisanymi kiedyś tam... i wtedy było nam potrzebne makro _XTAL_FREQ), kompilator "strzeli fochem" i poinformuje nas, że nastąpiła redefinicja makra _XTAL_FREQ. Ok, w porządku...jest na to sposób:

Kod: Zaznacz cały

#include <xc.h>
#include <stdint.h>
#include <stdbool.h>
#include "mpu_config.h"

#ifndef _XTAL_FREQ
    #define _XTAL_FREQ 48000000UL
#endif


void main(void)
{
    while(true)
    {
       
    }
}


Jak widać zabezpieczyliśmy się przed wielokrotnym definiowaniem makra _XTAL_FREQ poprzez sprawdzenie, czy już jest zdefiniowane. Jeśli tak, kolejna definicja nie zostanie zrealizowana. Niestety i tutaj mogą się pojawić problemy z widocznością tego makra w innych plikach projektu i trzeba będzie kombinować, inkludować jakiś inny plik stworzony specjalnie na jakieś "globalne makra" itp.

Drugim i lepszym sposobem jest ustalenie prędkości pracy układu wprost we właściwościach projektu. W oknie z drzewem projektu klikamy na jego nazwę prawym klawiszem myszy i wybieramy Properties.
Zrzut ekranu 2015-10-24 14.48.04.png


Następnie, w nowym okienku, klikamy w xc compiler. Zerkamy na prawą stronę okna, by w tabelce dostrzec wiersz o nazwie Define macros. Klikamy w wiersz, by otwarło się kolejne okienko.

Zrzut ekranu 2015-10-24 14.49.39.png


Wpisujemy _XTAL_FREQ=48000000UL i od tej pory w całym naszym projekcie będzie dostępne to makro bez żadnych kombinacji alpejskich ;)

Zrzut ekranu 2015-10-24 14.52.26.png


Pozdrawiam!