Atmega8A, время задержки в delay() не соответствует реальности

sm4511022
Offline
Зарегистрирован: 11.05.2016

Доброго времени суток.

Решил попробовать поработать с чистым микроконтроллером, для этого купил Atmega8A.

Рассчитал по калькулятору фьюзов байты конфигурации чтобы работать от внутренних 1MHz, записал в boards.txt и загрузил с помощью Arduino UNO загрузчик в Atmega8 через Arduino as ISP (в среде Arduino IDE). Затем записал на атмегу стандартный пример blink (только номер пина поменял) и увидел что delay(1000) дает задержку мигания не 1 секунду как в Arduino UNO, а 10 секунд. delay(100) соответствует 1-й секунде. Это баг или фича ? Как исправить это несоответствие ?

Valera19701
Valera19701 аватар
Offline
Зарегистрирован: 18.10.2015

а частота какая стоит при компиляции, f_cpu=1000000L ?

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

неправильно рассчитал фьюзы.

sm4511022
Offline
Зарегистрирован: 11.05.2016

Расчеты делал с помощью этого конструктора http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik

это закидывал в boards.txt

a8_1MHz.name=atmega8 (1 MHz) 
a8_1MHz.upload.protocol=arduino 
a8_1MHz.upload.maximum_size=7680 
a8_1MHz.upload.speed=9600 
a8_1MHz.bootloader.low_fuses=0xa1 
a8_1MHz.bootloader.high_fuses=0xdc 
a8_1MHz.bootloader.path=optiboot 
a8_1MHz.bootloader.file=a8_1MHz_a1_dc.hex 
a8_1MHz.build.mcu=atmega8 
a8_1MHz.build.f_cpu=1000000L 
a8_1MHz.build.core=arduino 
a8_1MHz.build.variant=standard 

hex файл закидывал в C:\Programs\arduino-1.0.5-r2\hardware\arduino\bootloaders\optiboot

Клапауций 232
Offline
Зарегистрирован: 05.04.2016

т.е. тебе с первого раза не доходит?

повторяю - ты неправильно прошил фьюзы.

sm4511022
Offline
Зарегистрирован: 11.05.2016

Похоже я использовал hex файл для 8 MHz, вероятно из за этого и возникала ошибка. Рассчитал с помощью конструктора http://homes-smart.ru/index.php/oborudovanie/arduino/avr-zagruzchik заного для 1 MHz, закинул hex файл и записал код в boards.txt, записал загрузчик и теперь все нормально.