__delay_ms()
преобразуется компилятором в инструкции по потере цикла, поэтому, если ваш F_CPU
соответствует текущей скорости процессора, он должен работать как положено.
Я бы искал другие места в вашем коде, которые не работают так, как вы ожидаете.
Полсекундная задержка при включении питания не является хорошим диагностическим тестом c, поскольку он происходит быстро, только один раз, и тогда могут происходить и другие события.
Возможно, вместо этого попробуйте мигать между двумя различными уровнями яркости с задержкой в 500 мс. Визуально это должно быть однозначным.
, если это работает, как ожидалось, тогда, возможно, попробуйте сделать изменение яркости и изменить задержку внутри l oop, чтобы увидеть, работает ли это как ожидалось.
В конце концов вы добьетесь того, что не так, как ожидалось, и тогда вы узнаете, в чем проблема. Еще возможно, что вы не поймете, что происходит, но, по крайней мере, вы сможете задать здесь более конкретный c вопрос и с большей вероятностью получить полезный ответ.
Сообщите в ответ с ваши результаты!