PlatformIO ATMega324P util / delay.h не является точным

Я использую PlatformIO и CLion для программирования микроконтроллера ATMega324P. Проект создается с помощью PlatformIO на Mac и открывается в CLion. Я могу успешно собрать программу и запустить ее на ATMega324p. Я успешно запускаю следующий код.

main.cpp

#include <avr/io.h>
#include <util/delay.h>

int main(void)
{
DDRB |= 1 << PINB0;

while (true)
{
PORTB ^= 1 << PINB0;
_delay_ms(100);
}
}

Platformio.ini

[env:mightycore324]
platform = atmelavr
board = mightycore324
framework = arduino
upload_protocol = usbtiny
board_f_cpu = 16000000L

Хотя этот код запускается, задержка кажется явно неточной. Нужно ли что-то делать, чтобы задержка работала правильно?

0

Решение

Ваш MCU, вероятно, работает от своего внутреннего RC генератора. Этот генератор не особенно точен — он определен как 8 МГц, но отдельные части могут работать в диапазоне от 7,3 до 8,1 МГц.

Чтобы получить более точную синхронизацию, вам нужно подключить внешний кристалл и соответственно запрограммировать предохранители часов.

1

Другие решения

Следующие настройки исправили мою проблему.

Platformio.ini

[env:mightycore324]
platform = atmelavr
board = mightycore324
framework = arduino
upload_protocol = usbtiny
board_f_cpu = 800000L
0

По вопросам рекламы [email protected]