PlatformIO ATMega324P util / delay.h不准确

时间:2017-10-30 01:53:36

标签: c++ microcontroller atmega platformio

我正在使用PlatformIO和CLion来编程ATMega324P微控制器。该项目在Mac上使用PlatformIO创建,并在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

尽管此代码运行,但延迟似乎明显不准确。我是否已做任何事情以确保延迟正常工作?

2 个答案:

答案 0 :(得分:1)

您的MCU可能正在运行其内部RC振荡器。该振荡器不是特别精确 - 它被指定为8 MHz,但各个部分可以在7.3到8.1 MHz之间运行。

为了获得更精确的时序,您需要连接外部晶振并相应地编程时钟保险丝。

答案 1 :(得分:0)

以下设置解决了我的问题。

<强> Platformio.ini

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