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

Обсуждаем контроллеры компании Atmel.
Ответить
Аватара пользователя
jordan
Грызет канифоль
Сообщения: 271
Зарегистрирован: Чт апр 01, 2010 14:14:55

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

Сообщение jordan »

У этого камня три аппаратных ШИМа (но вопрос не о количестве) :))

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

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

на всякий даташит страница 102.... http://www.atmel.com/dyn/resources/prod ... oc2486.pdf
Аватара пользователя
alexx82
Открыл глаза
Сообщения: 64
Зарегистрирован: Ср июл 06, 2011 19:11:44
Откуда: В цветущих акациях город
Контактная информация:

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

Сообщение alexx82 »

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

А частота на выходе зависит еще и от TOP'а таймера, который можно изменить с помощью битов WGM.
Аватара пользователя
jordan
Грызет канифоль
Сообщения: 271
Зарегистрирован: Чт апр 01, 2010 14:14:55

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

Сообщение jordan »

при 10Мегагерцовом кварце на меге8 какую частоту можно на ШИМе получить в режиме fast, и вообще как это рассчитать?
Аватара пользователя
alexx82
Открыл глаза
Сообщения: 64
Зарегистрирован: Ср июл 06, 2011 19:11:44
Откуда: В цветущих акациях город
Контактная информация:

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

Сообщение alexx82 »

Тактовая частота таймера/(TOP таймера+1)

Очевидно же :)
Аватара пользователя
Extraneous
Первый раз сказал Мяу!
Сообщения: 30
Зарегистрирован: Вт июн 12, 2007 17:32:56
Откуда: Казахстан
Контактная информация:

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

Сообщение 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Гц.

Спасибо заранее.
Alexeyslav
Друг Кота
Сообщения: 4550
Зарегистрирован: Чт май 05, 2011 21:26:34
Откуда: Украина, Славутич
Контактная информация:

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

Сообщение Alexeyslav »

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

Вернуться в «AVR»