Страница 1 из 1

Глупый вопрос по ШИМ Atmega8

Добавлено: Вс сен 11, 2011 10:51:18
jordan
У этого камня три аппаратных ШИМа (но вопрос не о количестве) :))

Вопрос в следующем, частота на входе и выходе ШИМа, поступает с прет делителя(Prescaler), и может быть изменена битами CS22, CS21, CS20?

или там не так как то?

на всякий даташит страница 102.... http://www.atmel.com/dyn/resources/prod ... oc2486.pdf

Re: Глупый вопрос по ШИМ Atmega8

Добавлено: Вс сен 11, 2011 21:47:15
alexx82
Почти так. Частота на ВХОДЕ таймера определяется битами CS. Только произвольный коэффициент деления выбрать, к сожалению, нельзя.

А частота на выходе зависит еще и от TOP'а таймера, который можно изменить с помощью битов WGM.

Re: Глупый вопрос по ШИМ Atmega8

Добавлено: Вс сен 11, 2011 23:00:08
jordan
при 10Мегагерцовом кварце на меге8 какую частоту можно на ШИМе получить в режиме fast, и вообще как это рассчитать?

Re: Глупый вопрос по ШИМ Atmega8

Добавлено: Вс сен 11, 2011 23:46:07
alexx82
Тактовая частота таймера/(TOP таймера+1)

Очевидно же :)

Re: Глупый вопрос по ШИМ Atmega8

Добавлено: Пн мар 04, 2013 21:18:13
Extraneous
Долго искал, в какую тему написать, решил запостить вопрос сюда.
Atmega8, разбираюсь с ШИМ на таймере 1. По ДШ у него есть куча режимов работы:
Изображение

С обычным Fast PWM (режим 7) я разобрался (сделал изменение яркости светодиода). Теперь интересуют другие режимы.

1) Режим 10. OCR1A/B - регистр сравнения, ICR1 - регистр максимального числа, до которого будет считать счетчик.
Но чем отличается режим 11? (см. таблицу выше). Если в 11 режиме OCR1A используется как TOP, то что используется как регистр сравнения? Тот же вопрос с режимами 8-9, 14-15.

2) OCR1A и ICR1 - шестнадцатибитные регистры, состоят из двух восьмибитных (OCR1AH и OCR1AL), в которые значения нужно записывать по очереди, используя сдвиг >>8. Но почему-то встречаются образцы кода, в которых люди пишут просто OCR1A++ (вот тут например). Причем часто встречается. Это зависит от режима ШИМ, от МК, или от компилятора?

3) Делал ли кто-нибудь управление сервоприводом не через прерывания, а, например, через 8 режим ШИМ? Например, если сделать TOP=1250, поставить предделитель 64, то на 8МГц должна получиться частота ШИМ 8000000/1250*64*2=50Гц.

Спасибо заранее.

Re: Глупый вопрос по ШИМ Atmega8

Добавлено: Ср мар 13, 2013 16:04:48
Alexeyslav
люди пишут просто OCR1A++
А компилятор разворачивает это выражение в целый ворох ассемблерных команд... скорей по этому вопросу имелось в виду что КОНТРОЛЛЕР может оперировать только половинками регистров, а язык программирования все это скрывает позволяя реализовать при помощи подпрограмм вещи вроде "сделать все как нужно" одной командой.
Можно ведь написать TIMER_INIT, а под этим выражением скроется целый алгоритм по инициализации всех таймеров и т.д. это же ЯВУ...