01-11-2021, 19:11
Проверил в Протеусе, все работает.
ШИМ с ATtiny24
|
01-11-2021, 19:11
Проверил в Протеусе, все работает.
02-11-2021, 00:05
(01-11-2021, 17:54)msmmmm : Было бы логично предположить, что если регистр OCR0A теперь занят под ТОР, то скважность теперь будет регулироваться с помощью OCR0В, ну и выход нужно соответственно настроить. Не вижу я тут логики... И какой выход и как настраивать?... Что-то еще можно добавить к настройкам вывода BP2 ?...
02-11-2021, 00:38
DDRA = 1<<PA7;
TCCR0A = 1<<COM0B1|0<<COM0B0|1<<WGM01|1<<WGM00; TCCR0B = 1<<WGM02|1<<CS00; OCR0A = 150; OCR0B = 100; И все. Генерит, меняется.
02-11-2021, 12:31
Получилось, черт ее дери...
Правда, выход теперь на другой порт, но это не принципиально. Спасибо!!!
02-11-2021, 16:13
...И я не понимаю как это происходит )))))))
03-11-2021, 00:19
(02-11-2021, 16:13)Globus_vrn : И я не понимаю как это происходит )))))))Так оно во всех МК приблизительно одинаково... Если тактовая частота 1МГц, то значение регистра OCR0A - это буквально период ШИМ в мкс. Значение регистра OCR0В - не скважность, а коэффициент заполнения ШИМ. Если настроить счетчик на неинвертирующий выход без предделителя, то при сбросе TCNT0, на выходе установится 1, она там будет до совпадения TCNT0 и OCR0В, в этот момент на выходе установится 0, но счетчик продолжит считать. При совпадении TCNT0 и OCR0А счетчик сбрасывается на 0 и так по циклу. Понятно, что если нужно регулировать коэффициент заполнения (величина, обратная скважности), то достаточно изменять OCR0В в диапазоне 0-OCR0А. А если нужно менять период ШИМ не изменяя скважности, то вместе с OCR0А нужно пропорционально изменять и OCR0В.
03-11-2021, 14:33
(03-11-2021, 00:19)msmmmm : то вместе с OCR0А нужно пропорционально изменять и OCR0В.Пропорции... Вот, кстати, еще один неприятный момент. В STM не было проблем с вычислением числа с плавающей точкой. в Atmel я столкнулся с тем, что это надо ручками писать самостоятельно. Поэтому я пока уменьшаю частоту увеличением OCR0A, а величину заполнения оставляю постоянной. Получается, что скважность с увеличением частоты уменьшается.
04-11-2021, 09:43
04-02-2022, 16:52
В продолжение темы такую задачу нарисовали:
Есть две величины , полученные из АЦП (по одному байту в каждой 0-255). Нужно на двух выводах контроллера организовать ШИМ с одинаковой частотой, но скважностью, соответствующей числу в АЦП. Это вообще реально сделать?
05-02-2022, 00:10
Если не нужно плавно частоту регулировать, выбирай ШИМ с топом 0xFF, настраивай два вывода (ОС0А и ОС0В) и записью в регистры OCR0А и OCR0В регулируй соответственно скважность.
Если нужно плавно настраивать частоту, посмотри режимы таймера1. Там есть с топом ICR1, остальное аналогично таймеру0. Но таймер1 16 битный, со своей спецификой. |
« Предыдущая тема Следующая »
|