Меняю частоту ЦПУ, перестает работать ШИМ

mmmx
Offline
Зарегистрирован: 04.02.2016

Есть Ардуино нано (Atmega 328p), работает от внешнего кварца 16МГц.

Фьюзами изменяю на внутренний осциллятор 8МГц.

В результате перестает корректно работать ШИМ на пине D3 (он используется библиотекой IRremote, на нем висит ИК-светодиод).

Как можно восстановить ШИМ? Я так понимаю, это связано с таймерами, но попытки подобрать множитель на всех таймерах не помогают:

TCCR0A = TCCR0A & 0b11111000 | 0x05;

То же с TCCR1B, TCCR2B.

Подскажите, весь инет перерыл, не соображу, как сделать!

Penni
Penni аватар
Offline
Зарегистрирован: 18.01.2015

F_CPU 8000000L в boards.txt

mmmx
Offline
Зарегистрирован: 04.02.2016

Как все просто )) Спасибо!

А почему #define F_CPU 8000000UL в скетче не помогает, интересно?

DetSimen
DetSimen аватар
Offline
Зарегистрирован: 25.01.2017

Перед компиляцией среда правит скрытый .h файл

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

mmmx пишет:

А почему #define F_CPU 8000000UL в скетче не помогает, интересно?

Потому, все библиотеки и сама среда берут эту константу не из Вашего скетча, а из того самого bords.txt

У Вас кстати, не только с ШИМ'ом были проблемы. delay стал вдвое тормознее, ну и всё, что связано со временем.

Deamon
Offline
Зарегистрирован: 21.09.2017

вот интересно, зачем менять частоту?

это както уменьшает энергопотребление?

mmmx
Offline
Зарегистрирован: 04.02.2016

ЕвгенийП] </p> <p>[quote=mmmx пишет:

У Вас кстати, не только с ШИМ'ом были проблемы. delay стал вдвое тормознее, ну и всё, что связано со временем.


Да, конечно, я это заметил, но раньше не было необходимости с этим разбираться, спасибо за пояснения!

Делаю ик-пульт/центральный замок, путем сдувания с ардуино нано всего лишнего: осталась только атмега, резистор на ресете и пару светодиодов питания. Ну и isp уже есть на плате. Со стороны юсб разъема плату отпилил, чтоб компактнее была ))

Перед снесением кварца пришлось перейти на внутренний осциллятор, ну и понеслось...
Так что дело в компактности, а не энергопотреблении, хотя и оно тоже уменьшается, как я понимаю