F_CPU должен отражать установленную тактовую частоту процессора микроконтроллера.Неважно, была ли установлена эта скорость, потому что она использует внешние часы, или это внутренние, или какие значения div установлены.
Итак, значение F_CPU должно быть установлено, чтобы отражать любыетактовая частота процессора настроена на.
В соответствии с таблицей данных для atmega328p, устройство без программирования поставляется с включенным внутренним генератором RC, DIV8, поэтому тактовая частота процессора в этом случае будет 8 МГц / 8 = 1 МГц
Таким образом, если вы установите F_CPU на 8000000, то любой код, который использует F_CPU, думает, что он работает на частоте 8 МГц вместо 1 МГц, которая действительно есть.