Привет, коллеги! Задача: управлять RGB лентой через ИК-пульт. Объект: ATmega8A Проблема: не управляется, когда всё сразу включено. Т.к. надо 3 ШИМ, то задействованы все таймеры. А при приёме ИК-данных с пульта надо считать импульсы через таймер. Получается мы можем делать, либо ШИМ либо подсчет импульсов, так получается? Атмега8 не подходит?
Заголовок сообщения: Re: Можно ли использовать одновременно ШИМ и внешнее прерыва
Добавлено: Вс янв 08, 2017 16:41:41
Модератор
Карма: 90
Рейтинг сообщений: 1289
Зарегистрирован: Чт мар 18, 2010 23:09:57 Сообщений: 4510 Откуда: Планета Земля
Рейтинг сообщения:0 Медали: 1
Естественно, если таймер занят внутренним тактированием, то он не может работать от внешнего тактирования. Это же логично Также логично, если таймер занят для чего-либо, то использовать его для чего-то другого нереально. Или я что-то не допонимаю...
небольшое уточнение, заняты не все таймеры, а 16-битный и 8-битный, который может работать "Сброс по совпадению". Оставшийся таймер не подходит, т.к. при считывании важны точные измерения.
уверен на 100% - подходит. дело в том, что вашу задачу можно решить даже на attiny13 - см. мой вариант http://simple-devices.ru/prj/9-electr/8 ... te-control позже я модифицировал этот проект для работы с "настоящим" пультом, обычно применяемым для RGB-лент.
просто если вам надо РЕШИТЬ ЗАДАЧУ - это можно легко и просто сделать. но если вам надо ДЕЛАТЬ, КАК ПОЛОЖЕНО - вы можете столкнуться с проблемами, как сейчас.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется... скушно, бабоньки!
Инженеры КОМПЭЛ провели сравнительное тестирование аккумуляторов EVE и Samsung популярного для бытовых и индустриальных применений типоразмера 18650.
Для теста были выбраны аккумуляторы литий-никельмарганцевой системы: по два образца одного наименования каждого производителя – и протестированы на двух значениях тока разряда: 0,5 А и 2,5 А. Испытания проводились в нормальных условиях на электронной нагрузке EBD-USB от ZKEtech, а зарядка осуществлялась от лабораторного источника питания в режиме CC+CV в соответствии с рекомендациями в даташите на определенную модель.
Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре.
Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.
Использовать целый аппаратный таймер для одного канала такой вещи как светодиод - ИМХО расточительство, хотя если много каналов не надо, то это ваше право... Имея всего ОДИН таймер, можно сделать количество каналов программной ШИМ, ограниченное только: 1) разрешающей способностью 2) частотой ШИМ 3) общей загруженностью контроллера А остальные таймеры можно использовать как угодно, хоть для ИК. Например не проблема сделать 8 каналов с разрешающей способностью 8 бит и частотой от 100Гц при тактовой 8МГц и при этом занять менее 20% вычислительной способности ядра. Последнее что я делал было на меге48 с 21х16 каналами (т.е 336, хотя всего 4 разряда ШИМ) и оно еще по UART принимало картинку 21х16 пикселей со скоростью почти 20 кадров в секунду.
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
У меня есть пример на ассемблере. Программный шим. 32 светодиода. Мк занят на 100 %. Так что не торопитесь утверждать, что шимить и параллельно выполнять еще много чего раз плюнуть.
У меня есть пример на ассемблере. Программный шим. 32 светодиода. Мк занят на 100 %
а частота ШИМа-то какая? я делал на Си 32 канала ШИМ - при частоте порядка 60Гц еще мноооого времени оставалось...
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется... скушно, бабоньки!
Ага, и еще тактовая МК сколько? У меня тоже есть примерчик: 48 каналов, 8 бит, 120Гц, тут да 100% загрузка, но там тактовая 8МГц и вывод не на прямую на ноги контроллера, а по SPI (и ни одного таймера или прерывания кстати не задействовано, тупо все в цикле). Ну а вообще, конечно надо задачу полностью знать, а то может у топикстартера там контроллер "логарифмы тангенсов" считает от чисел, которые ему с ик-пульта присылают, тогда конечно програмной ШИМ не отделаться...
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
В итоговом варианте задача выглядеть будет так: контроллер RGB ленты, будет управляться с ИК-пульта, а также управляться через Синезуб. Синезуб планируется пока только на прием, хотя и надо предусмотреть возможность отправки какой-нибудь инфы))) Поэтому и выбран был изначально вариант в аппаратным ШИМ. До этого так плотно таймеры не использовал, а тут они сразу все и понадобились, даже получается не хватает... Сейчас пока другие задачи возникли, с этим проектом продолжу чуть позже и обязательно попробую советы выше.
В итоговом варианте задача выглядеть будет так: контроллер RGB ленты, будет управляться с ИК-пульта, а также управляться через Синезуб.
atmega8 - за глаза хватит! можно даже о atmega48 задуматься.
_________________ если рассматривать человека снизу, покажется, что мозг у него глубоко в жопе при взгляде на многих сверху ничего не меняется... скушно, бабоньки!
Ну там у таймеров регистров сравнения всего 2 штуки, так что 3 канального чисто аппаратно на одном таймере не получится. Можно программно-аппаратно сделать. Настраиваете таймер, в обработчике прерывания инкрементируете 3 переменные и сравниваете их же и по результату сравнения логические уровни на ногах контроллера переключаете. Что-то типа виртуальных таймеров на одном аппаратном.
Настраиваете таймер, в обработчике прерывания инкрементируете 3 переменные и сравниваете их же и по результату сравнения логические уровни на ногах контроллера переключаете. Что-то типа виртуальных таймеров на одном аппаратном.
Ну примерно так и делается, только инктементировать надо не 3 переменных, а одну - программный счетчик, и по результату его сравнения с тремя переменными - дергать ногами RGB. Аппаратный таймер запускается в режиме CTC, так можно легко регулировать частоту программной ШИМ. Если делать 8 разрядов, то частота получится как частота срабатывания CTC/256. При этом на основе этого же таймера можно сделать еще несколько программных делителей с удобными частотами срабатывания, которые потом могут понадобиться в программе, например 1с для встроенных часов или какой-нибудь 50мс для анимации/плавного изменения цвета.
_________________ Неправильно собранная из неисправных деталей схема нуждается в отладке и сразу не работает... (С)
Сейчас этот форум просматривают: Starichok51 и гости: 15
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения