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

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

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

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

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

Сообщение viiv »

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

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

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

Сообщение Z_h_e »

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Сообщение ARV »

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

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

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

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

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

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

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

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

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

Сообщение Z_h_e »

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

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

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

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

Сообщение Z_h_e »

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

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

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

Сообщение Z_h_e »

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

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

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

Сообщение Z_h_e »

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

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