Форум РадиоКот https://radiokot.ru/forum/ |
|
Как сделать трех(++)-канальный фазовый диммер на ATtiny85 ? https://radiokot.ru/forum/viewtopic.php?f=66&t=191731 |
Страница 1 из 1 |
Автор: | Ariadna-on-Line [ Чт янв 11, 2024 12:45:52 ] |
Заголовок сообщения: | Как сделать трех(++)-канальный фазовый диммер на ATtiny85 ? |
Нашел код 2х-канального. Чуть допилил - работает прекрасно. Код на прерываниях компараторов АВ Таймера1. Обнуление таймера - по INT0. Меня всегда тянет впихивать невпихуемое. Места в памяти МК дофига. Решил добавить канал. Тупо скопипастил обработчик прерывания, чуток подпилил под пины МК - но упёрся в отсутствие 3-го компаратора и вектора. Первый раз взялся за прерывания и обломился.)))))))))))) Использовать Таймер0 не хочется, на нем обычно много чего по умолчанию сидит. Мне представляется идея использовать вообще один компаратор. То есть обработчик прерывания начинает с меньшего "угла". Перед завершением - грузит в компаратор следующий "угол", как-то передает номер канала, и по-сути вызывает сам себя. И так хоть 256 раз. Но тут возникают коллизии одинакового угла для нескольких каналов одновременно. Ткните носом - может кто уже реализовал такую идею ? Или есть что проще ? Думаю что идея рабочая, но превратить ее в код у меня мозгов не хватит. С уважением. |
Автор: | Игорь_396 [ Чт янв 11, 2024 22:00:16 ] |
Заголовок сообщения: | Re: Как сделать трех(++)-канальный фазовый диммер на ATtiny8 |
Предполагаю, что можно в прерывании таймера декрементировать три переменные, при обнулении включать соответствующий пин. По INT0 выключать все три пина и рассчитывать те самые три переменные. |
Автор: | Ariadna-on-Line [ Пт янв 12, 2024 21:11:29 ] | ||
Заголовок сообщения: | Re: Как сделать трех(++)-канальный фазовый диммер на ATtiny8 | ||
Код двух-канального диммера в виде, в котором был найден.
|
Автор: | Аlex [ Сб янв 13, 2024 02:58:20 ] |
Заголовок сообщения: | Re: Как сделать трех(++)-канальный фазовый диммер на ATtiny8 |
Для диммера нужно всего лишь 1 внешнее прерывание + 1 таймер. И хоть 1000 каналов делай. Всё будет зависеть от разрешения (кол-во шагов) скважности. Например, для 100 шагов таймер будет крутиться с частотой 10 КГц. Главное, чтобы проц успел обработать все каналы за промежуток времени между тиками таймера. |
Автор: | roman.com [ Сб янв 13, 2024 11:25:34 ] |
Заголовок сообщения: | Re: Как сделать трех(++)-канальный фазовый диммер на ATtiny8 |
для 1000 каналов таймер будет иметь дикий фазовый шум)) на прерываниях компараторов АВ Таймера1 фазовый шум отсутствует. хотя... если писать всё на ассемблере... с точностью до такта процессора... то фазовый шум можно победить)) ![]() |
Автор: | Ariadna-on-Line [ Пт янв 19, 2024 09:50:42 ] |
Заголовок сообщения: | Re: Как сделать трех(++)-канальный фазовый диммер на ATtiny8 |
Для диммера нужно всего лишь 1 внешнее прерывание + 1 таймер. И хоть 1000 каналов делай. Декрементировать в прерывании таймера три переменные. Когда число уменьшилось до 5 (например) - включить соответствующий канал, а при нуле - выключить. Этим сформируются фазы и импульсы открытия симисторов. Блин. Простая идея, а в голову не пришло. Зациклился на прерываниях по компаратору. Надо всего ТРИ канала, так что фазовый шум вряд ли будет виден. Всё будет зависеть от разрешения (кол-во шагов) скважности. Например, для 100 шагов таймер будет крутиться с частотой 10 КГц. Главное, чтобы проц успел обработать все каналы за промежуток времени между тиками таймера. Большое спасибо ! |
Автор: | BOB51 [ Сб янв 20, 2024 13:29:31 ] |
Заголовок сообщения: | Re: Как сделать трех(++)-канальный фазовый диммер на ATtiny8 |
Таймер 0 ардуино АВР платформ можно использовать - только в таком случае он будет генерировать ту же микросекунду, прерывание по которой будет смещено чуток в сторону от "системных часов". Полученный сигнал можно использовать для своих нужд. Основано на "свободном" OCR0A у группы атмега328. Проверено на платках с атмегой328 - в случае других платформ надо смотреть их аппаратную начинку. ![]() |
Страница 1 из 1 | Часовой пояс: UTC + 3 часа |
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group http://www.phpbb.com/ |