Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Tiny2313 нужна 1 сек. на таймер 0
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
=GM=
Цитата(defunct @ Jul 13 2007, 09:44) *
ЧИМ + ШИМ

Это как?
prottoss
Цитата(=GM= @ Jul 13 2007, 19:31) *
Это как?
оччччччь просто smile.gif

ШИМ (широтно-импульсная модуляция) aka WGM = 0x01:
Меняется длительность импульса при неизменной частоте - производится при помощи изменения содержимого регистра OCRnx

ЧИМ (частотно-импульсная модуляция) aka WGM = 0x05:
Меняется длительность импульса пропорционально частоте - так же при помощи OCRnx
GetSmart
Цитата(=GM=)
Саша, у меня пара вопросов к вам, не знаю, может новую ветку открыть, ну как получится. Какие сейчас модны (и востребованы) драйверы для светодиодов для панно, ну и цены тоже интересно...Никогда этим не занимался, а тут нашёл интересное (и дешёвое, вроде бы) решение - один чип управляет током 8-16 диодов со средним током до 70 мА на диод и никаких внешних элементов...Что скажете?
MBI5016, MBI5026, MBI5168
=GM=
Цитата(prottoss @ Jul 13 2007, 10:53) *
ШИМ (широтно-импульсная модуляция) aka WGM = 0x01:
Меняется длительность импульса при неизменной частоте - производится при помощи изменения содержимого регистра OCRnx

Здесь вроде бы ясно. А вот здесь непонятно.
Цитата(prottoss @ Jul 13 2007, 10:53) *
ЧИМ (частотно-импульсная модуляция) aka WGM = 0x05: Меняется длительность импульса пропорционально частоте - так же при помощи OCRnx

Мне казалось, что будут генерироваться короткие импульсы неизменной ширины в два такта (может в один), а период будет меняться с помощью OCR0А. Т.е. длительность импульсов неизменна, а частота импульсов меняется. Легко убедиться в этом, если постепенно приближать значение OCR0А к 0xFF, скажем, при OCR0А=0xFЕ импульсы будут шириной 4 такта, а при OCR0А=0xFF импульсы будут шириной 2 такта.
prottoss
Цитата(=GM= @ Jul 13 2007, 23:23) *
Мне казалось...
Я поражаюсь 07.gif Парень убедил всех и меня... В итоге он сам не знает того, в чем он всех победил... crying.gif



Еще раз: PWM = 0x005:

1. Цикл счета есть количество импульсов TCn от OCRnx ...0 + 0 ... OCRnx

2. Фаза сигнала меняется при переходе значения счетчика через 0

3. Меняя значение OCRnx мы, соответсвенно меняем частоту изменения фазы, при этом длительность импульса тоже меняется...
SasaVitebsk
Цитата(=GM= @ Jul 13 2007, 13:31) *
Саша, у меня пара вопросов к вам, не знаю, может новую ветку открыть, ну как получится. Какие сейчас модны (и востребованы) драйверы для светодиодов для панно, ну и цены тоже интересно...Никогда этим не занимался, а тут нашёл интересное (и дешёвое, вроде бы) решение - один чип управляет током 8-16 диодов со средним током до 70 мА на диод и никаких внешних элементов...Что скажете?

Самые распространённые похоже MBI. Они и найболее гуманные по цене. есть на 8 и 16 светодиодов. 70ма это норма для данных корпусов.
Хотя тема сейчас популярная и выпускаются драйвера многими фирмами. Например TI. Вот здесь, к примеру http://www.e-neon.ru/ интересные предложения. Походу какая то новая контора открылась. Есть драйвера на 24 светодиода (8RGB), а также готовые драйвера для полноцветных матриц с динамической индикацией.

Вопрос цены в данном секторе весьма любопытный. Лучше поговорить с EXeGLuMATOR или ещё с кем нибудь из тех кто экранами занят. Я только бегущие строки и табло делаю пока. Экранов даже в проекте нет. Смысл в том, что они берут всё это миллионами и десятками миллионов штук. В связи с этим цена у них раза в два меньше чем у меня. Так я ещё и жду по 3 месяца заказ. Но, в принципе, цены сейчас существенно упали. Если буквально 3 года назад светодиодная моно матрица 8х8 стоила 5$, то теперь 1.5$.

Появились светодиоды 18W. 07.gif Прайс тут обзорный прислали.
=GM=
Цитата(prottoss @ Jul 13 2007, 14:38) *
Я поражаюсь 07.gif Парень убедил всех и меня... В итоге он сам не знает того, в чем он всех победил... crying.gif

Чудак, вы рrottoss. не собирался я никого ни побеждать, ни злить. Истина, как говорится, мне дороже.
По тому делу, которое мы обсуждали раньше. Вы так ничего и не поняли(:-). Говорю последний раз. Представьте себе, при WGM=5 счётчик считает вверх. 0, 1, 2, 249. Следующее значение счетчика будет 250, и оно совпадёт с содержимым OCR0А, которое равно 250 (на самом деле 249, ну да ладно, оставим так). Что произойдёт? А вот что. Направление счёта счетчика сменится на обратное, затем произойдёт обновление регистра OCR0А, в него перепишется ТО ЖЕ САМОЕ ЗНАЧЕНИЕ 250. Со следующего такта счетчик начнёт считать вниз. Когда счётчик дойдёт до 0, возникнет прерывание таймера по переполнению TOV0. Далее весь цикл повторится, надеюсь, теперь вы это поняли?
Ну а прерывания (125 штук в секунду) можно использовать для организации текущего времени.

Теперь по вашему сегодняшнему заявлению.
Цитата(prottoss @ Jul 13 2007, 14:38) *
Еще раз: PWM = 0x005:

prottoss, это уже не смешно, ну не PWM=5, а WGM=5.
Цитата(prottoss @ Jul 13 2007, 14:38) *
1. Цикл счета есть количество импульсов TCn от OCRnx ...0 + 0 ... OCRnx
2. Фаза сигнала меняется при переходе значения счетчика через 0
3. Меняя значение OCRnx мы, соответственно меняем частоту изменения фазы, при этом длительность импульса тоже меняется...

1) Ну хорошо, согласен.
2) О, боги! Ну откуда вы взяли, что фаза OCR0 будет меняться при переходе значения счетчика через 0? Ну хотя бы взгляните на график на рис.32. Где там меняется фаза выходного сигнала?
3) Где по-вашему будет происходить сравнение содержимого счётчика и OCR0? Если в нуле, тогда у вас всегда будет меандр переменной частоты.
prottoss
Цитата(=GM= @ Jul 14 2007, 00:33) *
Ну хотя бы взгляните на график на рис.32.
Это про FAST PWM MODE... smile.gif

Стоит ли дальше продолжать диалог?

RE: Мы сдеся про ФАЗЕ КОРРЕКТ ПВМ МОДЕЕЕ... Аууу...
=GM=
Цитата(prottoss @ Jul 13 2007, 15:45) *
Это про FAST PWM MODE... smile.gif Стоит ли дальше продолжать диалог?
RE: Мы сдеся про ФАЗЕ КОРРЕКТ ПВМ МОДЕЕЕ... Аууу...

Поправлю, график на рис.33.

Хорошо бы вы "здеся" ответили на 2 вопроса по существу.

1) Откуда вы взяли, что фаза OCR0 будет меняться при переходе значения счетчика через ноль? Ну хотя бы взгляните на график на рис.33. Где там меняется фаза выходного сигнала?

2) Где по-вашему будет происходить сравнение содержимого счётчика и OCR0? Если в нуле, тогда у вас всегда будет меандр переменной частоты, зависящей от содержимого OCR0.
defunct
Цитата(=GM= @ Jul 14 2007, 00:38) *
2) Где по-вашему будет происходить сравнение содержимого счётчика и OCR0? Если в нуле, тогда у вас всегда будет меандр переменной частоты, зависящей от содержимого OCR0.

Регистра OCR0 вообще-то 2. OCR0A - задает частоту, OCR0B - "ширину" импульса.
=GM=
Цитата(defunct @ Jul 13 2007, 22:27) *
Регистра OCR0 вообще-то 2. OCR0A - задает частоту, OCR0B - "ширину" импульса

Ерунду говорите, в атмеге2313 два независимых Output Compare Units А и В ассоциированных с таймером0. Регистр OCR0A используется одним блоком, регистр OCR0A - другим. Вот ссылка: Timer/Counter0 is a general purpose 8-bit Timer/Counter module, with two independent Output Compare Units, с.66, документ 2543i.

Отличие двух блоков в том, что для блока А может использоваться фиксированное значение TOP=0xFF в режиме Phase Correct PWM, а для блока В - не может. Естественно, мы говорим о блоке А.
defunct
Цитата(=GM= @ Jul 15 2007, 00:03) *
Ерунду говорите, в атмеге2313 два независимых Output Compare Units А и В ассоциированных с таймером0. Регистр OCR0A используется одним блоком, регистр OCR0A - другим. Вот ссылка: Timer/Counter0 is a general purpose 8-bit Timer/Counter module, with two independent Output Compare Units, с.66, документ 2543i.

Отличие двух блоков в том, что для блока А может использоваться фиксированное значение TOP=0xFF в режиме Phase Correct PWM, а для блока В - не может. Естественно, мы говорим о блоке А.

Сами вы ерунду говорите. Если счетчик (TCNT) начнет считать в обратную сторону при достижении OCR0A, то
- во-первых значения OCR0B >= OCR0A дадут константу на выходе OC0B,
- а во-вторых вывод OC0A нет смысла применять (кроме случая когда нужен строго ЧИМ).

ЧИМ + ШИМ можно получить естесственно только на выводе OC0B.



Если же я действительно говорю ерунду, и если TCNT не начинает считать в обратную сторону при достижении OCR0A, тогда то что вы раньше говорили - насчет TOVF - чушь, т.к. частота следования TOVF будет неизменной.

Так что определитесь уж.
=GM=
To defunct. Кажется понял наконец корень всех затруднений, как всегда, это недоговоренность. Я говорил про блок А (пост #54) и его выход OCR0A, который в режиме WGM=5 даёт строгий ЧИМ - короткие импульсы постоянной длительности с переменным периодом.

А вы начали говорить об использовании блока В, непонятно кстати по какой причине и не указывая этого. Ну здесь я согласен, с выхода блока В можно получить ИЛИ ЧИМ, с заданной длительностью импульса (регистр OCR0B=const) и переменным периодом (регистр OCR0A=var) ИЛИ ШИМ, с переменной скважностью (регистр OCR0B=var) и постоянным периодом (регистр OCR0A=const).

Что касается вот этого,
Цитата(defunct @ Jul 14 2007, 22:39) *
Если же я действительно говорю ерунду, и если TCNT не начинает считать в обратную сторону при достижении OCR0A, тогда то что вы раньше говорили - насчет TOVF - чушь, т.к. частота следования TOVF будет неизменной. Так что определитесь уж.

то не врубаюсь. Могу только подтвердить, что при WGM=5 таймер0 считает в двух направлениях, при достижении нуля устанавливается флаг TOV0. Если не менять содержимое OCR0A, то частота прерываний будет неизменна.
prottoss
Цитата(=GM= @ Jul 15 2007, 18:45) *
то не врубаюсь. Могу только подтвердить, что при WGM=5 таймер0 считает в двух направлениях, при достижении нуля устанавливается флаг TOV0. Если не менять содержимое OCR0A, то частота прерываний будет неизменна.


Так врубитесь же наконец smile.gif При WGM = 1, если менять содержимое OCRnx - частота выходных импульсов OCnx НЕ МЕНЯЕТСЯ и равна частоте входных импульсов TC, деленной на 510 (для 8-и битных счетчиков, два прохода, с инкрементом и декрементом, от 0 и до максимума, т.e. 255), меняется длительность импульсов

При WGM = 5, практически тоже самое, НО, максимум равен НЕ 255, а числу в OCRnA, при этом не зависит, какое число сидит в OCRnB. НО, с помощью OCRnA мы можем менять частоту выходных импульсов, а спомощью OCRnB их ширину

Частота прерываний от TOVF будет в первом случае равна частоте входных импульсов ТС, деленной на 510, во втором, как Вы уже говорили зависит от значения OCRnA, подробнее можете посмотреть в любимом smile.gif даташите
=GM=
Цитата(prottoss @ Jul 15 2007, 12:33) *
При WGM = 1, если менять содержимое OCRnx - частота выходных импульсов OCnx НЕ МЕНЯЕТСЯ и равна частоте входных импульсов TC, деленной на 510 (для 8-и битных счетчиков, два прохода, с инкрементом и декрементом, от 0 и до максимума, т.e. 255), меняется длительность импульсов

При WGM = 5, практически тоже самое, НО, максимум равен НЕ 255, а числу в OCRnA, при этом не зависит, какое число сидит в OCRnB. НО, с помощью OCRnA мы можем менять частоту выходных импульсов, а спомощью OCRnB их ширину

Частота прерываний от TOVF будет в первом случае равна частоте входных импульсов ТС, деленной на 510, во втором, как Вы уже говорили зависит от значения OCRnA, подробнее можете посмотреть в любимом smile.gif даташите

Всё это я вам уже раз десять говорил разными словами, а ВЫ мне говорили, что так не бывает. Теперь вы повторяете мне мои слова. Зачем?

Я вам вопросы по существу задал, а вы их замотали. Вопросы-то простые.

1) Откуда вы взяли, что фаза OCR0А будет меняться при переходе значения счетчика через ноль? Взгляните на график на рис.33. Где там меняется фаза выходного сигнала?

2) Где на временной шкале, по-вашему, будет происходить сравнение содержимого счётчика и OCR0А?

3) какова форма выходного сигнала на выходе ОС0А в режиме WGM=5?


Не врубаюсь я вот в эти фразы

defunct...если TCNT не начинает считать в обратную сторону при достижении OCR0A, тогда то что вы раньше говорили - насчет TOVF - чушь, т.к. частота следования TOVF будет неизменной. Так что определитесь уж

Слова все знакомые, но ничегошеньки не понимаю, смысл какой-то мутный

- ...если TCNT не начинает считать в обратную сторону при достижении OCR0A
Почему не начинает? Начинает, читайте все мои посты. Зачем вы об этом вообще говорите?

- тогда то что вы раньше говорили - насчет TOVF - чушь
Какую чушь я раньше говорил о TOVF? Что вы тут плетёте?

- т.к. частота следования TOVF будет неизменной
Будет неизменной, 125 Гц для оговоренных выше условий, подтверждаю. Ну и что? Что вы всем этим хотите сказать?

-Так что определитесь уж
С чем определиться? Постарайтесь яснее выразить свои мысли.
defunct
Цитата(=GM= @ Jul 15 2007, 16:34) *
Слова все знакомые, но ничегошеньки не понимаю, смысл какой-то мутный

Перечитайте плз. несколько раз весь тот пост, не отрывая пол-предложения от всего контекста.
=GM=
Цитата(defunct @ Jul 15 2007, 15:53) *
Перечитайте плз. несколько раз весь тот пост, не отрывая пол-предложения от всего контекста.

Перечитал два раза. Смысл вашего поста всё равно мутный, ничего личного.
defunct
Цитата(=GM= @ Jul 15 2007, 19:43) *
Перечитал два раза. Смысл вашего поста всё равно мутный, ничего личного.

Ок, не мутно не я уже говорил ЧИМ+ШИМ получается на выводе OC0B WGM2..0 = 5:

OCR0A - задает частоту
OCR0B - ширину импульса.
OCR0B должен быть строго меньше OCR0A.

и вы тоже:
Цитата
с выхода блока В можно получить ИЛИ ЧИМ, с заданной длительностью импульса (регистр OCR0B=const) и переменным периодом (регистр OCR0A=var) ИЛИ ШИМ, с переменной скважностью (регистр OCR0B=var) и постоянным периодом (регистр OCR0A=const).


но
Цитата
А вы начали говорить об использовании блока В, непонятно кстати по какой причине и не указывая этого.

Дело в том, что WGM2..0 = 5 в отрыве от блока B нет смысла рассматривать.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.