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

быстрая ШИМ в AVR

Добавлено: Вт фев 02, 2010 12:36:56
andrei-ka
Товарищи, разъясните пожалуйста новичку почему в режиме быстрой шим у микроконтроллеров серии AVR идет изменение фазы на ножке OC0? Я читал datasheet на Atmega128 на русском но не нашел там ничего
что могло-бы указывать на причину такого поведения. Информация на сайте "Сопряжение ПК с внешними устройсвами" очень поверхностна и не объясняет сути происходящих процессов.
Опишу как я понимаю этот процесс: первое изменение на ножке ОС0 (она же PB4 у ATmega16) происходит
при совпадении значений регистров ОСRn и TCNTn второе при сбросе таймера ТССR0 в нулевое значение т.е.
оба события происходят с одинаковой частотой.
Изображение
Подскажите где моя ошибка пожаааалуйста!!!!

Добавлено: Вт фев 02, 2010 13:56:45
GP1
Какая ошибка? Где?
текст программы где?

Добавлено: Вт фев 02, 2010 15:22:35
andrei-ka
Ошибка в понимании процессов происходящих при быстрой ШИМ. Вот
два рисунка:
Изображение

на верхнем изображена быстрая ШИМ
на нижнем ШИМ с фазовой коррекцией

А вот коментарии к этим изображениям с сайта "Сопряжение ПК с внешними устройствами":

Существуют два режима работы таймера в качестве ШИМ-модулятора. Это Fast PWM (быстрая ШИМ) и Phase correct PWM (ШИМ с фазовой коррекцией). Режим работы определяется содержимым битов WGM (Waveform Generation Mode) в регистре TCCR2. В Datasheetе написано, что для ШИМ с фазовой коррекцией нужно установить в единицу WGM20, а для быстрой ШИМ WGM20 и WGM21. Чем же отличаются эти режимы? В быстром режиме меняется состояние "ножки" OC2 в моменты совпадения счетного регистра TCNT2 и регистра сравнения OCR2 (зеленая стрелка), а также в момент сброса таймера (синяя стрелка).При этом серединка импульса (оранжевая) как бы смещается влево, меняется фаза импульса. В режиме фазовой коррекции такого явления не наблюдается. В этом режиме таймер, досчитав до максимума (до 255), начинает счет в другую сторону. В моменты совпадения регистров TCNT2 и OCR2 меняется состояние ножки OC2. При этом серединка импульса никуда не смещается. Этот режим имеет в два раза меньшую частоту, чем быстрый, но изготовитель утверждает, что он лучше подходит для управления электромоторами (скорее всего, шаговыми). Быстрый режим можно использовать в любых других случаях. Все остальные таймеры работают в ШИМ-режиме аналогично, таймер1 позволяет также менять период ШИМ произвольным образом, но, думаю, нам это ни к чему.

Мне не понятно почему при быстрой ШИМ расходятся фазы

Добавлено: Вт фев 02, 2010 15:53:58
Meteor
В режиме быстрого ШИМа при крайнем значении (0 или 255) будут формироваться короткие выбросы. Этого эффекта нет в режиме ШИМ с фазовой коррекцией. Поэтому это режим рекомендуют для управления двигателями (преимущественно ДПТ). Поясню на примере. Создаем следящий привод. Сигнал ШИМ пропорционален разности требуемого и текущего положений. В идеале при полном совпадении рассогласование равно 0 и управления нет. При быстром ШИМ в этом случае будет импульс или пауза длительностью 1/255 периода, в зависимости от того что активное 1 или 0.

Добавлено: Вт фев 02, 2010 22:51:00
andrei-ka
Спасибо тебе большое Meteor вкурил полностью.

Добавлено: Вт фев 02, 2010 23:43:07
Meteor
Не за что. Сам "попался" на нем когда разрабатывал СУ электропривода. Благо не схему а прошивку поменять пришлось, и ту при настройке (никто не почуял подмены)

Добавлено: Ср фев 03, 2010 14:58:22
andrei-ka
Cкажите, Meteor, а могу я задать вам еще несколько вопросов на эту тему?

Добавлено: Ср фев 03, 2010 18:12:29
Meteor
Ну если Вам не страшно, то конечно можете задать еще вопросы. :)))
Пишите в личку