AVR Studio + avr-gcc: как в Makefile задавать и препроцессором проверять тактовую частоту |
|
Написал microsin
|
12.02.2010 |
Обычно это делается через макроопределение F_CPU, в котором задается тактовая частота в герцах.
Это макроопределение передается компилятору через опцию -D, например:
CFLAGS += -Wall -gdwarf-2 -DF_CPU=16000000UL -fsigned-char
В этом примере частота задана 16 МГц. В исходных текстах можно препроцессором проверять тактовую частоту, и в зависимости от этого формировать нужный код. Например:
//константа для TCNT0
#if F_CPU == 16000000
#define TCNT0_10MS (256-156) // 100 раз в секунду
#define TCNT0_1MS (256-16) // 1000 в секунду
#elif FCPU == 11059200
#define TCNT0_10MS (256-108) // 100 раз в секунду
#define TCNT0_1MS (256-11) // 1000 в секунду
#elif FCPU == 14745600
#define TCNT0_10MS (256-144) // 100 раз в секунду
#define TCNT0_1MS (256-14) // 1000 в секунду
#elif FCPU == 18432000
#define TCNT0_10MS (256-180) // 100 раз в секунду
#define TCNT0_1MS (256-18) // 1000 в секунду
#else
#error "Unsupported F_CPU value!"
#endif
|