Когда меняется частота ШИМ для D9-D10 можно ли использовать delay() как обычно?

ask1
Offline
Зарегистрирован: 16.01.2020

Нашел возможность сделать управление LED-лентов с помощью ШИМ более терпимым для глаз, выбрал такой вариант:

// Пины D9 и D10 - 7.8 кГц 10 бит
TCCR1A = 0b00000011; // 10bit
TCCR1B = 0b00000001; // x1 phase correct

Написано, что это Timer1, а delay, millis  и т.п. работают благодаря Timer0. Правильно ли я понимаю, что все функции, которые опираются на Timer0, будут нормально работать при изменении, которое описано выше?

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

ua6em
ua6em аватар
Offline
Зарегистрирован: 17.08.2016

конечно

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

ask1 пишет:

Когда меняется частота ШИП для D9-D10 можно ли использовать delay() как обычно?

Если только Клапауций не запретил. Уточните.

wdrakula
wdrakula аватар
Offline
Зарегистрирован: 15.03.2016

Ежели ШИП, то думаю - можно! Пусть его. Ежели чо - с Клапауцием договоримся.

ask1
Offline
Зарегистрирован: 16.01.2020

ua6em пишет:

конечно

 

Спасибо. Теперь уверенность есть.

 

Но есть еще вопрос. Если плавно менять значения  в analogWrite, то в какой-то момент  светодиод может "не в тему" моргнуть. Это происходит при значении 255. Почему такое происходит? Как-то можно с этим справиться?

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

ask1 пишет:
то происходит при значении 255. Почему такое происходит? Как-то можно с этим справиться?
Я Вам уже ответил в другой теме - аналограйт при 255 тупо пихает туда HIGH (см. его исходник). Справиться можно - не пользовать analogWrite, а написать руками.

ask1
Offline
Зарегистрирован: 16.01.2020

Это неожиданно, но лечится. Так что, переживем.