реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> Fast PWM mode, получение чистого 0 или чистой 1 на выходе
ARV
сообщение Dec 2 2012, 15:23
Сообщение #1


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Уважаемые коллеги!

Я тут встал в тупик, то ли заблудился в трех соснах, то ли просто туплю неподецки. Включаем режим Fast PWM для таймера AVR-ки, допустим, 8-битный. пишем в регистр OCR1A ноль - что будет на выходе OC1A? в даташите написано, что при сбросе устанавливается в 1, а при совпадении сброс происходит в следующем цикле счета, т.е. я так понимаю, чистого нуля на выходе получить нельзя? если я пишу 255 в регистр OCR1A - чистая единица на выходе получается, верно? т.е. получить коэффициент заполнения 0% невозможно в принципе? или я не прав?

осциллографа пока временно лишен, поэтому и вопрошаю... протеус показывает, что я прав, но можно ли ему верить? если на самом деле все именно так, как посоветуете побороть проблему? нужно именно нолик стабильный получать в режиме ШИМ.



--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
bob1
сообщение Dec 2 2012, 15:45
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 17-09-06
Пользователь №: 20 471



Можно сделать 0 на выходе. OCR0=0xFF. COMn1=1. COMn0=1
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 2 2012, 15:52
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



но тогда получается, что МАКСИМАЛЬНОМУ значению в OCRx соответствует МИНИМАЛЬНОЕ значение коэффициента заполнения... а ведь вроде как в остальном диапазоне значений OCRx было иначе... что-то я не пойму ничего sad.gif


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 2 2012, 15:58
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ARV @ Dec 2 2012, 17:52) *
но тогда получается, что МАКСИМАЛЬНОМУ значению в OCRx соответствует МИНИМАЛЬНОЕ значение коэффициента заполнения... а ведь вроде как в остальном диапазоне значений OCRx было иначе... что-то я не пойму ничего sad.gif

Может поэтому он и называется инвертированный ШИМ-сигнал.
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 2 2012, 16:15
Сообщение #5


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(_Артём_ @ Dec 2 2012, 19:58) *
Может поэтому он и называется инвертированный ШИМ-сигнал.
может быть, но что делать, если нужен ПРЯМОЙ сигнал с возможностью задать нулевой коэффициент заполнения?!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 2 2012, 16:19
Сообщение #6


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ARV @ Dec 2 2012, 18:15) *
может быть, но что делать, если нужен ПРЯМОЙ сигнал с возможностью задать нулевой коэффициент заполнения?!

Преобразовать никак?
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 2 2012, 17:35
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(ARV @ Dec 2 2012, 20:15) *
... с возможностью задать нулевой коэффициент заполнения?!

Что мешает "отключить" ногу от таймера и выставить на ней нужный уровень ?
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 3 2012, 04:23
Сообщение #8


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(Палыч @ Dec 2 2012, 21:35) *
Что мешает "отключить" ногу от таймера и выставить на ней нужный уровень ?

да принципиально ничто не мешает вообще потавить какой-нибудь DAC, но вопрос все-таки ставится иначе... делается некий регулятор, в нем все просто: вычислили коэффициент заполнения и выставили его в регистр. но если мы вычисляем 0, на самом деле на выходе получается далеко не ноль и регулятор не работает. попытки отслеживать всякие варианты и устанавливать уровни вручную приводят к усложнению и замедлению алгоритма регулятора, джиттеру ШИМ и т.п. неприятностям, поэтому очень хочется от всего этого уйти.


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 3 2012, 05:26
Сообщение #9


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Большого замедления не будет (всего-то 1-2 такта): OCR = 0xFF-PWM;


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 3 2012, 10:44
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



Цитата(demiurg_spb @ Dec 3 2012, 09:26) *
Большого замедления не будет (всего-то 1-2 такта): OCR = 0xFF-PWM;
спасибо, до этого варианта я уже и сам додумался sm.gif я так понимаю, это для режима инверсного выхода?


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
demiurg_spb
сообщение Dec 3 2012, 11:30
Сообщение #11


неотягощённый злом
******

Группа: Свой
Сообщений: 2 746
Регистрация: 31-01-08
Из: Санкт-Петербург
Пользователь №: 34 643



Да.


--------------------
“Будьте внимательны к своим мыслям - они начало поступков” (Лао-Цзы)
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 3 2012, 17:14
Сообщение #12


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



увы, не выходит каменный цветок sad.gif
если делать OCR=255-PWM получается крайне неприятная вещь: было PWM=1, шли короткие иголки ШИМа, потом делаем PWM=0, в итоге отрабатывается один период ШИМа с единицей на выходе, а после этого устанавливается чистый 0. представьте себе работу регулятра в этом случае: уменьшали-уменьшали воздействие, компенсируя ошибку регулирования, и вот в момент, когда ошибка стала равна нулю, воздействие кратковременно становится 100%... само собой, регулятор болтает, как бакен в шторм...

P.S. в отсутствие осциллографа моделирую в протеусе... в реальности это так или нет?!


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
_Артём_
сообщение Dec 3 2012, 17:23
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 128
Регистрация: 21-05-06
Пользователь №: 17 322



Цитата(ARV @ Dec 3 2012, 19:14) *
если делать OCR=255-PWM получается крайне неприятная вещь: было PWM=1, шли короткие иголки ШИМа, потом делаем PWM=0, в итоге отрабатывается один период ШИМа с единицей на выходе, а после этого устанавливается чистый 0. представьте себе работу регулятра в этом случае: уменьшали-уменьшали воздействие, компенсируя ошибку регулирования, и вот в момент, когда ошибка стала равна нулю, воздействие кратковременно становится 100%... само собой, регулятор болтает, как бакен в шторм...

OCR1A - двух байтовый, поэтому может так:
Код
OCR=0x100-PWM;

?
При PWM=0 OCR1A станет равен 0x100 и единицы не будет.
Go to the top of the page
 
+Quote Post
ARV
сообщение Dec 3 2012, 17:55
Сообщение #14


Профессионал
*****

Группа: Свой
Сообщений: 1 143
Регистрация: 30-09-08
Из: Новочеркасск
Пользователь №: 40 581



для 8-битного ШИМ OCR=0xFF дает ноль на выходе. но вот перед тем, как этот ноль появляется, в протеусе я вижу один цикл ШИМа с единичкой на выходе...


--------------------
Я бы взял частями... но мне надо сразу.
Go to the top of the page
 
+Quote Post
Палыч
сообщение Dec 4 2012, 06:36
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(ARV @ Dec 3 2012, 21:55) *
для 8-битного ШИМ OCR=0xFF дает ноль на выходе. но вот перед тем, как этот ноль появляется, в протеусе я вижу один цикл ШИМа с единичкой на выходе...
Верятно, причина в этом:
Цитата
The OCR Register is double buffered when using any of the Pulse Width Modulation
(PWM) modes. For the normal and Clear Timer on Compare (CTC) modes of operation,
the double buffering is disabled. The double buffering synchronizes the update of the
OCR Compare Register to either top or bottom of the counting sequence. The synchronization
prevents the occurrence of odd-length, non-symmetrical PWM pulses, thereby
making the output glitch-free.
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 6th July 2025 - 17:47
Рейтинг@Mail.ru


Страница сгенерированна за 0.01484 секунд с 7
ELECTRONIX ©2004-2016