Пожалуйста помогите чайнику с Binary Angle Modulation

Обсуждаем контроллеры компании Atmel.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Привет всем.
Читаю уже третий раз статейку у Ди-Халта про ВАМ и светодиоды. Вот эту.
http://easyelectronics.ru/upravlenie-bo ... ation.html
И вроде все просто, но до меня не доходит... Как это работает???? Туплю жутко. Вот есть у меня, предположим, 8 светодиодов на одной линейке. Как с помощью ВАМ менять яркость в каждом отдельно?
Хочу понять алгоритм, но что-то он в мою голову не влазит.

Спасибо всем, кто потратит на меня время. :beer:
Станислав
Реклама
viiv
Грызет канифоль
Сообщения: 289
Зарегистрирован: Чт ноя 06, 2014 13:09:06

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение viiv »

СКАЗОЧНИК писал(а):Хочу понять алгоритм, но что-то он в мою голову не влазит.
ШИМ понимаете? Есть частота ШИМ, соответственно есть период (чем больше времени в течении периода "светим", тем глазу кажется ярче).
Период ШИМ вибирается таким, чтобы глаз "не замечал" мерцания светодиода.

В уазанной статье "трюк" в следующем (суть та же - чем больше времени в течении периода "светим", тем глазу кажется ярче):
период разбивается на интервалы (1/2 периода, 1/4 периода, 1/8 периода...), в начале каждого интервала "влетаем" в прерывание и устанавливаем
значение "светить"/"не светить" для всех имеющихся каналов (интервал 1/2 периода соответствует старшему биту значения яркости, и.т.д).

Так понятно? Или еще больше запутал?
Реклама
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

Мне кажется тут понятнее.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Спасибо. Почитал и эту статейку... Все равно не доходит.
Вот как я понимаю ШИМ. Там один регистр задается для сравнения, в него записывается число. При том моменте, когда таймер досчитает до него, он либо сбрасывается, либо начинает считать в обратную сторону. Таким образом формируется заполнение. На довольно большой частоте это дает прекрасный эффект плавного регулирования на фильтре типа RC цепочке, либо на большой индуктивной нагрузке, либо на светодиоде, которому почти пофигу с какой скоростью мигать, глаз все равно не увидит.
А ВАМ не могу... Вроде что-то похожее, но в как понять преимущество???? И почему все ограничено единицей в каком-то разряде байта? Почему не 6ю единицами? Хочу ВАМ целиком на порт раскидать, чтобы 7 или 8 бит были регулируемыми, т.е. вывода МК.
Станислав
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение dr.doc »

Единица в разряде байта по сути флаг выполнения того или иного условия. А ШИМ работает несколько иначе: есть 1-байтный таймер, который бегает по кольцу от 0 до 255, перескок на 0 и далее сначала. В регистре сравнения, допустим, число 17. Когда значение кольцевого счетчика меньше либо равно 17 (регистр сравнения) на выводе ШИМ 1 (0). В противном случае - наоборот. Таким образом имеем заполнение времени в 18/256 (не забываем про 0).
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Реклама
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Короче... я тормоз... все равно не доходит.... :dont_know: :kill: :cry: Почему нету кота, который бьется головой о стену????
Хорошо, может начать от противного? Есть PWM, есть BAM, в чем разница???? Пока я такой не вижу. Читал про нее, но понять не смог. Может мне пора завязывать с микроконтроллерами, если я уже элементарного поянять не могу..?!
Станислав
Реклама
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение dr.doc »

Привожу пример. Если не совсем понятно, спрашивайте.
Вложения
Пример.GIF
(7.09 КБ) 423 скачивания
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Вот это я понял... Обе картинки показывают один и тот же коэффициент заполнения. Но у ШИМ он в одном месте весь а у ВАМ он разбросан по байту. И я понял, что могу задать число 10000110 и он будет вызывать прерывания три раза и три раза будет выставлять единицу на любом выводе, какой я захочу. Но в чем преимущества и суть , все равно догнать не могу... :facepalm:
Простите, что я такой дебил...
З.Ы. ПО сути в ВАМ я могу задать любое число от 0 до 255 и оно будет регулировать яркость. Понял я и то, что она не линейна, что старшие разряды почти не регулируют, все равно задам я 200 или 256 - гореть будет одинаково. Это другой вопрос, там я уже поберу яркость.
Понял я что надо это число (байт) записывать в регистр сравнения таймера. И менять состояние вывода МК в тот момент, когда ... :dont_know: А вот тут косяк. Он должен выдавать прерывание на каждую единицу.. Как же тогда сравнение происходит до куда таймер дотикал????
И еще, как все это увеличить на 8 выводов? чтобы каждый независимо, причем одновременно регулировался*?????
Станислав
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение dr.doc »

В компараторе задается сначала больший из интервалов, одновременно выставляется 1 там, где 7-й бит равен 1 (нужный вывод). В прерывании по сравнению забиваем в компаратор второе число и проверяем 6-е биты регистров. 1 - выставляем 1, 0 - сбрасываем. Таким образом имеем 8 прерываний: 128+64+32+16+8+4+2+1. Вот и весь набор из которого состоит период.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Пойду застрелюсь. :?
Простите и спасибо вам за попытку что-то мне объяснить.

З.Ы. И с Новым годом вас!!! :beer:
Станислав
Аватара пользователя
ARV
Ум, честь и совесть. И скромность.
Сообщения: 18544
Зарегистрирован: Чт дек 28, 2006 08:19:56
Откуда: Новочеркасск
Контактная информация:

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение ARV »

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

понятно описание? очевидно, что для 8-битного ШИМ нужно сгенерировать и обработать 256 прерываний, каждое из которых идет через одинаковый (довольно короткий) интервал времени. все это создает довольно большую нагрузку на МК. в частности, сделать более 32 каналов с частотой ШИМ, которая еще не заметна глазу, сделать уже практически невозможно: проанализировать в обработчике 32 переменных за промежуток между прерываниями уже сложно.

в ВАМ любой коэффициент заполнения получается всего при 8 прерываниях, причем только 1 раз между прерываниями будет очень короткий промежуток времени, а остальные будут в 2, 4, 8 и т.д. раз через более длинные интервалы. Таким образом, нагрузка на МК резко снижается.

с BAM-ом есть примеры реализации 256-каналов ШИМа!!! теперь разница понятна?
если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе
при взгляде на многих сверху ничего не меняется...

Мой уютный бложик... заходите!
Аватара пользователя
dr.doc
Это не хвост, это антенна
Сообщения: 1368
Зарегистрирован: Вс мар 28, 2010 12:52:22
Откуда: Беларусь

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение dr.doc »

Праздник ведь. А там все просто: на 1 период ШИМ (ВАМ) получается 8 прерываний длительностью 128+64+32+16+8+4+2+1 интервалов. Именно в таком порядке и происходят прерывания. А уже в них выставляются в соответствии с битами порты.
«Еще я хотел бы, чтобы наши ученые изобрели какой-то новый источник энергии, чтобы мы на коленях не ползали даже перед нашими братьями, умоляя их и выпрашивая тонну нефти или кубометр газа», — рассказал белорусский президент.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

А если у меня на порт... О! Чего-то начало доходить... )))) :))) :facepalm:
Короче, еще вопросы будут, но уже что-то мне стало ясно. Огромное вам, спасибо! Все +100500, в новогоднюю ночь умудрится объяснить... :beer:
Станислав
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

Господа, Коты. Всех с НГ. Оставте вопрос BAM назавтра, сдается мне он сам решится.
СКАЗОЧНИК, с тетрисом воюете?
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

Z_h_e писал(а): с тетрисом воюете?
:))) :))) Не поверите... У меня Новый год наступил еще 4 часа назад...
Вот так и встретил... :facepalm:
Воюю не с тетрисом пока мест... Он еще не вылежался.
Воюю с другой хреновиной, надо сделать буквы (как в рекламе), чтобы переливались... Вот и морочу себе голову. :))) :))) :)))

З.Ы. А для тетриса даже платы пришли, но до сих пор не запаяны лежат... Еще одна проблема, что заказал регистры к ним, а они так и потерялись в пути...
Станислав
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

СКАЗОЧНИК писал(а):Он еще не вылежался.
Мои проекты только на согласовании (со мной же) лежат лет пять - бюрократия и коррупция.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
СКАЗОЧНИК
Идёт направо - песнь заводит, Налево - сказку говорит.
Сообщения: 5000
Зарегистрирован: Чт апр 21, 2011 17:55:50
Откуда: Иркутск

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение СКАЗОЧНИК »

:))) :))) Аналогично! :beer: С праздником вас!
Станислав
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

:beer: :music: :beer:
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Аватара пользователя
YS
Друг Кота
Сообщения: 7518
Зарегистрирован: Вс мар 29, 2009 22:09:05
Контактная информация:

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение YS »

О, отличная тема, я тоже никак не мог въехать в BAM. Давайте я расскажу, как я понял, а вы меня проверите. :)

Итак, период состоит из 256 равных элементарных интервалов. Пускай для определенности это будет 1 мкс. У нас есть N переменных, в которых хранится яркость каналов в двоичном коде.

Как я понял, обрабатывается это так:

1. Происходит прерывание. Проверяем N переменных на предмет того, стоит ли нулевой бит. Если стоит - зажигаем соответствующий канал, если не стоит - тушим. Ждем 1 мкс.

2. Происходит прерывание (через 1 мкс). Проверяем N переменных на предмет того, стоит ли первый бит. Если стоит - зажигаем соответствующий канал, если не стоит - тушим. Ждем 2 мкс.

3. Происходит прерывание (через 2 мкс). Проверяем N переменных на предмет того, стоит ли второй бит. Если стоит - зажигаем соответствующий канал, если не стоит - тушим. Ждем 4 мкс.

...
...


7. Происходит прерывание (через 32 мкс). Проверяем N переменных на предмет того, стоит ли шестой бит. Если стоит - зажигаем соответствующий канал, если не стоит - тушим. Ждем 64 мкс.

8. Происходит прерывание (через 64 мкс). Проверяем N переменных на предмет того, стоит ли седьмой бит. Если стоит - зажигаем соответствующий канал, если не стоит - тушим. Ждем 128 мкс.

После этого начинаем с п. 1.

Верно?
Разница между теорией и практикой на практике гораздо больше, чем в теории.
Аватара пользователя
Z_h_e
Собутыльник Кота
Сообщения: 2708
Зарегистрирован: Сб май 14, 2011 21:16:04
Откуда: г. Чайковский

Re: Пожалуйста помогите чайнику с Binary Angle Modulation

Сообщение Z_h_e »

Кстати, BAM я тоже не знал, по той ссылке что я дал, мне стало понятно. Так что ТС'у респект за тему. Мне кажется YS Ваше объяснение тоже запутано.
-----------------
Хотя может и не так уж и запутано у Вас. Все зависит от "мЫшленья". ТС дал ссылку о семи прерываний. На самом деле возникает одно, но но с разным временным интервалом. В каждом интервале проверяется нужно включать нагрузку или нет, а нагрузок (портов) может быть очень много.
Может я еще запутаннее написал.
Изображение
Добро всегда побеждает зло. Поэтому кто победил - тот и добрый.
Ответить

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