У меня вопрос касательно таймеров:
В файле Winavr/avr/include/utils/delay.h есть четыре функции задержки
- Код: Выделить всё • Развернуть
static inline void _delay_loop_1(uint8_t __count) __attribute__((always_inline));
static inline void _delay_loop_2(uint16_t __count) __attribute__((always_inline));
static inline void _delay_us(double __us) __attribute__((always_inline));
static inline void _delay_ms(double __ms) __attribute__((always_inline));
Как видно 3-я и 4-я для мкс и мс задержек соответственно.
Причем они высчитывают количество тиков процессора исходя из константы F_CPU и передают полученное значение в void _delay_loop_1
и void _delay_loop_2 соответственно.
Самое интересное что в пояснении к этим функциям написано следующее:
Для первой:
Delay loop using an 8-bit counter \c __count, so up to 256
iterations are possible. (The value 256 would have to be passed
as 0.) The loop executes three CPU cycles per iteration, not
including the overhead the compiler needs to setup the counter
register.
Thus, at a CPU speed of 1 MHz, delays of up to 768 microseconds
can be achieved.Для второй:
Delay loop using a 16-bit counter \c __count, so up to 65536
iterations are possible. (The value 65536 would have to be
passed as 0.) The loop executes four CPU cycles per iteration,
not including the overhead the compiler requires to setup the
counter register pair.
Thus, at a CPU speed of 1 MHz, delays of up to about 262.1
milliseconds can be achieved.Если я прав но это функции задержек по таймера, но тогда зачем упоминается CPU SPEED
:?: :?: