0

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

このコードは実行されますが、遅延は著しく不正確に見えます。遅延が適切に機能していることを確認するために何かする必要がありますか?

4

2 に答える 2

1

MCU はおそらく内部 RC オシレータで動作しています。この発振器は特に正確ではありません。仕様は 8 MHz ですが、個々の部品は 7.3 ~ 8.1 MHz の範囲で動作します。

より正確なタイミングを得るには、外部クリスタルを接続し、それに応じてクロック ヒューズをプログラムする必要があります。

于 2017-10-30T03:37:42.397 に答える