Ну а поскольку: Не так дорог подарок, как дорого внимание (с) — попробуем вложиться временем. Представляю вашему вниманию «Сердце v1.0»
Основная идея устройства была придумана коллективно с моей командой еще для «Елки v1.0». Кратко набор функций:
— гравированное поздравление на сердце
— питание от ЗУ телефона (разъем microUSB)
— RGB подсветка с возможностью записи профилей мигания, переключаемых по кнопке
— режим ночника
— встроенная память для записи поздравления. При подключении к ПК определяется как флешка.
Подискутировав/порадовавшись заложенному функционалу мы решили делать — никто тогда не подозревал каких временнЫх затрат потребует сердце…
Железо
Как оказалось — самая простая часть сердца. Первым делом была составлена структурная схема устройства:
Детали брались из тех, что были у нас на складе, а также уже не раз использованы в устройствах. По схеме можно сказать: самый дешевый МК с USB на борту STM32F042F6P6, простой LDO — XC6206P332MR, 32Мбит SPI память W25Q32FVSSIG (на плату заложили 2 шт, но в итоге паяли одну), управляемый RGB светодиод WS2812.
Принципиальная схема:
Минимум деталей и самый главный просчет — надежда на то, что WS2812 будет нормально работать от уровня 3,3В (Славик! Да я сто раз так делал… говорили многие).
Плата была сделана минимальной ширины, с целью максимально спрятать ее под гранью сердца. Цвет белый. Полученный результат на рисунке.
Фейл
Помните я упоминал про робкую надежду на то, что WS2812 будет работать от уровня 3,3В? Так вот не будет!!! Точнее все вроде как работало до начала обмена по USB. При этом начинал сбоить канал Blue. Долго искали проблему в ПО, думая, что не хватает ресурсов процессора, но потом подтянули ногу PB1 к 5В через резистор 1кОм и все заработало четко. При этом уровень лог.1 стал примерно 4,3В. Понимаю, что так делать не хорошо, но выбора не было. На плате получился довольно элегантный «колхоз»:
Софт МК
Для облегчения программирования МК было решено использовать STM HAL Library, поскольку уже почти все есть, надо только добавить логику и соединить все ее модули между собой. В этом нам, от части, помог STM32CubeMX — генерацию большей части кода можно возложить на него. Впрочем тут каждый решает для себя — сгенерированный код все равно придется существенно править, и платить придется размером прошивки — библиотека HAL не из компактных.
Тем не менее, в нашем микроконтроллере доступно 32кб, прошивка займет чуть больше половины, поэтому логично в оставшейся памяти хранить последовательности из трех байт (R-G-B), которые и передавать по очереди на вход светодиода. Нажатие кнопки будет по кругу переключать последовательности, которые записаны во флеш МК.
Здесь мы сталкиваемся с первой проблемой: светодиод WS2812 очень требователен к периоду и длительности импульсов, при том что время импульсов (0.4-0.8мкс) достаточно мало для процессора работающего на 48МГц. Кроме того, надо учесть, что кроме управления светодиодом, наш мк должен будет еще обслуживать общение с ПК по usb и чтение/запись флеш памяти.
К счастью, этот диод довольно популярен и в интернете описано несколько способов реализации его протокола, в том числе и на микроконтроллерах STM. Мы выбрали, пожалуй, один из самых сложных с точки зрения реализации, но и одновременно самый эффективный с точки зрения процессорного времени — DMA + таймер. DMA пишет непосредственно в GPIO порт, таймер управляет каналами DMA. Поскольку DMA пишет во весь порт разом, то использовать другие выводы порта как выход не получится. Именно поэтому для управления светодиодом был выбран вывод PB1. Идеологически все просто, но с реализацией пришлось бы изрядно повозиться, если бы не замечательная библиотека, которую написал Martin Hubacek и выложил на github. После небольшого допиливания под наш МК и выбранный способ хранения RGB последовательностей, мы получаем работающий светодиод.
Флеш память
Представьте, подарили Вам сердечко с персональным поздравлением. Приходите Вы, радостный, домой, подключаете его к компьютеру, а оно, вместо «Люблю!», выдает Вам «Не найден необходимый драйвер устройства» или еще что-нибудь в этом роде. Нехорошо.
Поэтому сердце должно распознаваться как флеш накопитель в любой из распространенных операционных систем, не требуя установки драйверов. Поэтому будем использовать класс usb под названием «Mass storage device», благо STM32 USB Device Library предоставляет нам готовое решение. Стоп! Готовое???? Сейчас посмотрим.
Создаем проект в STM32CubeMX, соединяем методы read/write для spi флэш памяти с соответствующими вызовами в модуле usb mass storage и обнаруживаем сразу две проблемы: флешка не хочет безопасно извлекаться и «захлебывается» при попытке записать на нее что-нибудь больше чем текст «Hello World» в файле README.txt.
Первую проблему решить легко — нужно реализовать отсутствующую обработку SCSI команды StartStopUnit. Вторую решить сложнее. Размер блока файловой системы (естественно, располагая лишь 8мб места, мы будем использовать Fat16) 512 байт. Память умеет стирать только блоками по 4кб. Придется резервировать один из блоков под временное хранилище (занять 4кб оперативной памяти при имеющихся 6кб мы себе позволить не можем). То есть чтобы записать 512 байт, придется скопировать 4кб, стереть 4кб, и скопировать их обратно. Мало того, если файл достаточно большой, операционная система хочет записывать на накопитель по 64кБ за раз, и наш контроллер не способен обслужить такой большой для него объем данных за нужное время, учитывая что используемый флеш накопитель тоже не самый быстрый. В общем, пока контроллер неспешно пишет данные по 256 байт за раз (размер страницы памяти), операционная система (по крайней мере Fedora, на которой все это тестировалось) уже успевает решить, что накопитель пал смертью храбрых.
Знатоки наверняка укажут более элегантное решение проблемы, но «мы пойдем другим путем». Чтение флеш памяти будет по интерфейсу mass storage device и в этом режиме он будет позиционировать себя как Read-Only (заодно сердце можно будет спокойно «вырвать» из компа без всяких «безопасных извлечений», но боясь попортить файловую систему), а записывать его будем через виртуальный com-порт (aka Communication Device Class). Через этот же интерфейс будем записывать в конец памяти МК наши RGB последовательности.
Режим загрузки (mass storage или cdc) будем выбирать при загрузке по нажатой (или нет) кнопке.
Сказано — сделано (как всегда, на эти два слова было потрачено основное количество времени и кофе). Возвращаем read-write в MSC интерфейс, поскольку обнаруживается что в режиме read-only macOs отказывается распознавать флешку, — не беда, тут мы обманем операционную систему и будем возвращать «success» на любой запрос записи, ничего при этом не делая (опять же, решение из разряда «пусть не элегантно, зато дешево и сердито»). Дело за малым — софт для ПК.
Софт ПК
Поскольку настройку и прошивку решено было производить по интерфейсу cdc, просто перетащить файлы мышкой уже нельзя и нужно специальное приложение, которое будет уметь это делать. Его основная задача: предоставить пользователю возможность создать образ диска, накидать туда пользовательские файлы и записать этот образ в флэш память. Также приложение должно предоставлять интерфейс для создания/чтения/записи RGB последовательностей.
Приложение должно быть кросс-платформенное, и тут нам на помощь приходят библиотека Qt для создания графического интерфейса и FatFS от ChaN для создания и управления образом диска. Обмен данными с устройством через com-порт доступен в Qt последних версий «из коробки» (модуль QSerialPort), для операций с образом диска используем QTreeView с item model, наследованной от QabstractItemModel, в которой дополнительно реализованы операции Drag&Drop (что ни говори, «перетащить мышкой» удобно и привычно, если речь идет о файлах/папках). Для создания RGB последовательностей пригодится QListWidget (для отображения последовательности цветов), библиотека QtColorWidgets (автор Mattia Basaglia) для выбора цвета и встроенный в Qt класс QEasingCurve для плавных (или наоборот скачкообразных) переходов между цветами и создания эффекта радуги.
Результат: приложение имеет две вкладки:
1) «Storage» для файлов
2) «LED» для управления RGB последовательностями
Диалог создания RGB последовательности:
Диалог работает в трех режимах:
а) RGB — позволяет задавать переходы между двумя цветами заданными в нотации RGB.
б) HSV — то же самое, но в нотации HSV — перелив получается более привычный для человеческого глаза, в частности режим «HSV» + «Iterate->HUE» позволяет создавать радуги.
в) Custom — этот режим дает возможность задать каждый цвет последовательности вручную. Большие последовательности так не составить, в вот погасить сердце на какое-то время (задав цвет «черный») в этом режиме как раз очень удобно.
Ну и, наконец, определение нашего устройства как флешки в Windows/macOs/Linux(Gnome):
Заключение
И вот после всей проделанной работы и написанного текста я обнаружил, что не сделал ни одной нормальной фото самого сердца. Поэтому прилагаю вариант «как получилось»:
В реальности смотрится прекрасно (особенно при наличие гравировки). Любите своих близких!!!
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Комментарии (73)
GreenStore
13.02.2017 09:51Приобрел похожий, но с возможностью работы от батареек и с пультом дистанционного управления.
Jmann
13.02.2017 10:01+3Я три раза подряд дарил своей любимой самодельные мигающие сердечки (одно повторил и немного переделал. Автор Игорь с сайта chipenable ), то на 8 марта, то на 14 февраля. В итоге она вышла за меня за муж =)
GeMir
13.02.2017 10:11+10Личный опыт показывает, что (цитата) «очередной пылесборник», даже созданный своими руками, не всегда радует больше «банальных» цветов ;)
vladimir_open-dev
13.02.2017 10:16+2У всех по-разному, но я цветы не дарю принципиально — это самый бестолковый подарок.
DrPass
13.02.2017 11:00+11Вот и зря. Дарить надо подарки не согласно вашим принципам, а согласно вкусу того человека, которому подарок предназначается. А подавляющее большинство девушек согласятся, что сделанный руками девайс получить действительно приятно, но электронная мигалка светодиодами в форме сердца — это штука на «посмотреть, улыбнуться и закинуть в ящик». Если и оставит, то только чтобы не обидеть, потому что любит. Девушки, не имеющие отношения к технике, не поймут ни потраченных усилий, ни тонкостей программирования, ни преодолённых проблем, и цветы будут куда приятнее. Уж поверьте, я проходил через это. Если хотите сделать девушке приятное своими руками, это должно быть или полезное, или красивое, а лучше и то, и другое. Сердце из куска акрила — это и не полезно, и не красиво. Эффект не будет стоить потраченных сил.
Кстати, из сделанных своими руками подарков у меня, неожиданно, самым эффектным оказалось трюмо. Я своей супруге как-то смастерил на 8 марта новое трюмо, с освещением со всех сторон, с кучей розеток для косметических гаджетов, и она его постоянно вспоминает, как это здорово.vladimir_open-dev
13.02.2017 11:09Я также как и вы написал свое мнение, основанное на личном опыте. Но я не буду советовать вам, что нужно делать, чтобы сделать девушке приятное своими руками…
nerudo
13.02.2017 12:27+4Неправда, очень толковый подарок. Порадовали человека, а через несколько дней — в утиль и места не знанимают. Еще лучше только что-то съедобное :)
LampTester
13.02.2017 12:40Как ни странно, но на моей памяти действительно радовалась цветам только одна девушка (правда, она потом все равно мне нахамила, чем поставила крест на нашем общении). Так что, видимо, времена меняются.
UJIb9I4AnJIbIrUH
13.02.2017 18:30+1а у меня было так. Первое свидание, всё такое, я заявился с розами. Девушке вроде было приятно, ничего такого я не заметил, она взяла цветы и улыбалась. А через несколько минут у неё нос стал жутко красным и она начала чихать, цветы при этом она всё это время не выпускала из рук. На мой вопрос есть ли у неё аллергия прозвучал утвердительный ответ о_0
LampTester
13.02.2017 21:08Дарите альстромерии — они красивые, но без запаха. :)
UJIb9I4AnJIbIrUH
13.02.2017 21:15-1ну запах и аллергия это вещи не связанные спрпведливости ради. Но за совет спасибо!
sim31r
14.02.2017 00:09-5Замечательный тест на аллергичность. Если бы моя девушка начала чихать от цветов, я бы сразу с ней расстался. Девушка должна быть здоровой, чтобы родить здоровых детей. Тем более если сам склонен к аллергии. На данный момент девушка уже жена, от цветов не чихает и очень им радуется, и дети в количестве 3 штуки растут нормально, тоже не чихают в отличие от меня ))
vladimir_open-dev
14.02.2017 00:11+1По вашей логике девушка должна была с вами расстаться… чтобы родить здоровых детей от кого-то другого. Странная логика. Цель, несомненно, благая, но цинично не находите?
DrPass
14.02.2017 12:06+1Если бы моя девушка начала чихать от цветов, я бы сразу с ней расстался. Девушка должна быть здоровой, чтобы родить здоровых детей.
Так ведь не только девушка должна быть здоровой, но и папа тоже. Зачем вы распространяете свой генетический материал, если он содержит гены подверженности к аллергии?
дети в количестве 3 штуки растут нормально, тоже не чихают в отличие от меня
Рано радоваться. Аллергическая реакция на различные вещества может наступить в любом возрасте. Вы, скорее всего, тоже родились не аллергиком.sim31r
15.02.2017 14:16Зачем вы распространяете свой генетический материал, если он содержит гены подверженности к аллергии?
О да, «ужасный» материал. С учетом того, что в поликлинике у меня и медицинской карточки нет. Сижу по 12 часов за компом с детства, единственное чего не вижу — спутники Юпитера ))
Аллергия мелкая, имеет и положительные стороны, гиперактивный иммунитет мочит любые вирусы и раковые клетки.
Есть материал и лучше, коллеги некоторые, то же самое, только еще и IQ свыше 140, очень быстро соображают, но таких 1 на 1000.
Впрочем всё ерунда, на подходе реализация фильма «Гаттака» все будут идеальными, что заложат еще до зачатия. Уже сейчас сбойные гены могут заменять. На нас новое поколение будет смотреть как на неандертальцев, аллергики, близорукие, «дурачки» с IQ менее 200 и прочие.DrPass
15.02.2017 14:55О да, «ужасный» материал. С учетом того, что в поликлинике у меня и медицинской карточки нет. Сижу по 12 часов за компом с детства, единственное чего не вижу — спутники Юпитера ))
Это смотря сколько вам лет. Если 50, то нормальный материал, можно вас допускать к размножению потомства. Если 30, то надо будет посмотреть на вас в 50, взять анализы, а потом уже принимать решение, как быть с вашей генетической линией.
laughing_Hyena
13.02.2017 10:22+8Который год в преддверии очередного праздника возникает дежавю.
Интересно, «ынжынэрная мысль» дальше мигающих сердечек и цветочков для прекрасного пола продвинется когда-нибудь?vladimir_open-dev
13.02.2017 10:25Если вы осилили текст и поняли об чем устройство, то там мигающее сердечко только с боку… на мой взгляд. Возможно, это тот вариант, когда трудозатраты абсолютно не соответствуют полученному результату, но работа проделана, результат получен.
Jmann
13.02.2017 11:40+2Я когда-то давно, лет 12 назад, дарил маме на 8 марта хендмейд плеер на ATA CD-ROM, схема была на x51 от Atmel + МР3 декодер VS1001, который очень трудно было достать (уже и не помню, но проект был какого-то зарубежного разработчика, я выдернул у него работу с приводом и МР3). Все было красиво упаковано в корпус из фанеры, отшпаклеванный автомобильной шпатлевкой и закрашенный черной матовой краской.
LampTester
13.02.2017 12:35+1«ынжынэрная мысль» дальше мигающих сердечек и цветочков для прекрасного пола продвинется когда-нибудь?
Этого не требуется. :) Просто каждый раз приходят новые люди. Человек увлекается электроникой, доходит до уровня, когда уже что-то может, и у него возникает естесственное желание использовать навыки для того, чтобы любимый человек разделил его восторг. Потом он либо идет дальше и перерастает слишком бурный восторг от мигалок, либо бросает это дело; затем на его место приходят новые энтузиасты, которые доходят до уровня, когда уже могут что-то сделать, и…
Это круговорот жизни. Мне сложно сосчитать, сколько раз на форуме я отвечал на вопросы на тему «мигалка для дамы сердца». Они всегда одинаковые и всегда дышат энтузиазмом. :) И это прекрасно.
Богами вам еще даны
Златые дни, златые ночи,
И томных дев устремлены
На вас внимательные очи.
Играйте, пойте, о друзья!
Утратьте вечер скоротечный;
И вашей радости беспечной
Сквозь слезы улыбнуся я.
Скоротечный вечер, в частности, можно утратить на сборку светодиодного сердечка.
Alexey2005
13.02.2017 19:38-1А всё потому, что у прекрасного пола как правило плоховато с увлечениями. Такое ощущение, что они вообще не способны чем-то всерьёз увлечься, ну так чтобы тратить на некоторое занятие очень много времени и средств, засиживаться за полночь, поддерживать интерес годами и всё в таком же духе.
У каждого мужчины есть устойчивое хобби: рыбалка, электроника, фотография или ещё что-то. И достаточно его примерно узнать (а рассказывают они о нём крайне охотно, с увлечением) — и дело в шляпе, сразу понятно, чего дарить.
А у женщин что же? Почему они настолько поверхностны?LampTester
13.02.2017 21:13-1Они не поверхностны; просто, что бы там ни задвигали феминистки, у женщин от природы другие задачи, что и определяет их характерные особенности.
Vanellope
14.02.2017 04:05У каждого мужчины есть устойчивое хобби:
Футбол, гараж, пиво по вечерам и в сопли по пятницам :)
the_turkale_cat
13.02.2017 10:27+2Смотрю на схему.
Самая первая мысль — «Поставит ли автор транслятор уровней?».
Вторая мысль — «Управляем с UARTа или через SPI?»
И ни одной мысли про подарки и проч.
Совсем я профессионально деформировался.
Celtis
13.02.2017 12:37+1Что, когда и кому дарить — вам тут уже насоветовали…
Влезу-ка и я в калашный ряд, но уже по теме железа.
Скажите, чем была вызвана необходимость использовать прожорливый и сложный в работе WS2812, героически преодолевая(и успешно преодолев, должен признать) все его капризы?
Почему было не взять любой "глупый" RGB в корпусе 5050 и управлять им по ШИМ?vladimir_open-dev
13.02.2017 13:34С ним дешевле получилось и компактнее + у нас опыт работы с ними большой. Прожорливость тут не важна(разве он больше жрет чем дискрет)
3aicheg
14.02.2017 04:42С ним дешевле получилось
Только девушке не надо, наверное, так отвечать, если то же самое спросит.vladimir_open-dev
14.02.2017 09:34А я и не говорил, что мы вкладываемся деньгами… я говорил вкладывемся временем. Хотя если принять, что сердце было только одно, то обошлось мне оно порядка 100т.р.
madf
13.02.2017 13:10+1Помните я упоминал про робкую надежду на то, что WS2812 будет работать от уровня 3,3В? Так вот не будет!!!
У меня без проблем везде и всегда работает, причем не только 2812, но и предыдущие модели. Никаких проблем.
Чот я так и не понял, зачем флешка в этой штуке...
Radmin
13.02.2017 13:16У меня есть версия на этот счёт. Тоже очень хотел отписаться, что успешно питал ленту из 10 диодов от 3,3 вольт.
В начале знакомства с WS2812 так же имел проблемы с запуском на таком напряжении, затем заглянул в даташит и выяснил, что уровень логики и питания не должны отличаться больше, чем на 0,5В. При соблюдении этих условий все проблемы исчезали, и лента начинала исправно работать.Celtis
13.02.2017 14:16уровень логики и питания не должны отличаться больше, чем на 0,5В.
Контрпример из моего опыта: практически всегда питаю 2812 от 5В, но управляю по 3.3В — полет нормальный.
madf
13.02.2017 14:55вообще в статье разговор про "уровень", а не питание)
я питаю их всегда 5В, а управляю 3.3В
т.к. схема цифровая, то никаких проблем не должно быть и не наблюдал
vladimir_open-dev
13.02.2017 13:36Я уже говорил кому-то в одной из статей про ws2812 если у вас работает от 3,3в то ищите проблему. Или напряжение питания ниже 5в или вам пока везет(такое тоже бывает).
Флешка для записи поздравления(не скачанного с инета, а написанного самим дарующим). Я добавил фото семейное и тхт с письмом. Определяется как флешка при подключении к пк. Это неожиданно приятно как показала практика.
Vanellope
13.02.2017 14:42Чот я так и не понял, зачем флешка в этой штуке...
Как флешка на 8 МБ, конечно же!
vladimir_open-dev
14.02.2017 09:47Чудес ведь не бывает — по документации работать не должно (где-то с 3,7В начинается устойчивая «1»). Повод задуматься о том — почему работает.
madf
14.02.2017 11:20Читайте внимательнее документацию, там написано "Hysteresis voltage (Vh set): 0.35", т.е. любое напряжение свыше этого значения приравнивается к единице. WS-ми можно управлять хоть 1.8 логикой...
vladimir_open-dev
14.02.2017 11:59Блажен кто верует… от 1,8 В светодиод даже не мигнет. Написано черным по белому
Получается самый минимальный уровень единицы(как говорил мой преподаватель — самая плохая единица) это 0,7Uпит. При питании 5В это 3,5В.
В вашем случае вам просто везет (о чем я неоднократно говорю людям у которых что-то работает, хотя не должно). Это связано, скорее всего с разбросом допуска, с пониженным питанием (4,7В). При наличии помех ваша система рухнет (как рухнула наша при обмене по usb).madf
14.02.2017 12:34-1У меня ЭТО всё работает уже в 4-х принципиально разных проектах и никаких проблем нет. Причем там далеко не один светоед и разных марок (до китайских подделок).
как говорил мой преподаватель — самая плохая единица) это 0,7Uпит.
Какой учитель — такой и ученик (ничего не работает). Почитайте про типы логики и разные уровни напряжений. Поисковиком надеюсь умеете пользоваться.
В таблице показаны допустимые, граничные значения при определенных условиях.
Повторяю ещё раз, учитесь правильно читать датащиты.vladimir_open-dev
14.02.2017 14:00Уже спорили про это несколько раз… уже тошнит.
https://geektimes.ru/post/284248/#comment_9792538madf
14.02.2017 14:27Ну так вам там уже давно всё разжевали, а вы любите видимо спорить.)
vladimir_open-dev
14.02.2017 14:31Вот об этом я и говорил…
Объясните мне (и моему преподавателю) тогда что же за параметры VIL VIH?
GarryC
14.02.2017 14:30Очень жаль заказчиков Ваших 4х проектов, в которых не выдерживаются требования ТУ на микросхему. Хотя если это Ваши собственные проекты, то продолжайте, не стоит думать о воспроизводимости и устойчивости работы, это не для Вас.
n-krd
13.02.2017 16:28Как всегда великолепно, судя по опросу, напоминать про 14 февраля нужно раньше :)
FGV
13.02.2017 20:31>Поскольку DMA пишет во весь порт разом, то использовать другие выводы порта как выход не получится.
почему не получится? если работать через GPIOx _BSRR все получится.vladimir_open-dev
13.02.2017 20:34DMA пишет весь порт целиком(все 16 бит) и на это нельзя повлиять. За подробностями сюда
FGV
14.02.2017 05:44dma можно конфигурировать, на 8,16 и 32 бита. И если писать не в регистр порта а в регистр сброса\установки отдельных бит _BSRR, то все прекрасно работает.
За подробностями http://www.st.com/resource/en/datasheet/stm32f042c4.pdf
Так что не вводите в заблуждение.FGV
14.02.2017 06:12upd: извиняюсь, ссыль не ту отправил. RM0091: http://www.st.com/resource/en/reference_manual/dm00031936.pdf
л. 159, л. 192.vladimir_open-dev
14.02.2017 09:32Может я не так понял, что вы предлагаете сделать, но как я понял вашу идею она с DMA не будет работать. Все потому, что destination для записи «1» — GPIOx->BSRR, а для записи «0» GPIOx->BRR. Как DMA это отработает?
FGV
14.02.2017 09:48DMA отработает точно так же как и запись в регистр BRR, только из памяти в bsrr будут пересылаться 32х разрядные слова. Суть в том _BSRR- 32х разрядный регистр, чувствителен только к записи 1 в соответствующие разряды. 1 в 32-16 разрядах сбрасывает соответствующий бит порта (15-0); 1 в 15-0 взводит.
FGV
14.02.2017 10:00пример "неработающего" дма:
long WordToArinc[64];//sending_32bit_w //start word send void inline start_send() { DMA1_Channel1->CCR=0;//channel configuration register //dma config: DMA1_Channel1->CNDTR=64;// Number of data to transfer DMA1_Channel1->CMAR=(WordToArinc);// memory address register DMA1_Channel1->CPAR=&(GPIOC->BSRR);// peripheral address register //////////////////////FEDCBA9876543210 DMA1_Channel1->CCR=0b0011101010010011;//channel configuration register }
GarryC
15.02.2017 14:50При все уважении, последняя строка в настройке все-таки должна вроде быть следующей
DMA1_Channel1->CCR = MEM2MEM*0 + PL3 + MSIZE32 + MINC +PINC*0 + CIRC*0 + DIR1 + TEIE*0 + THIE*0 + TCIE + EN
totuin
13.02.2017 20:54+1Только один вопрос — а зачем здесь WS2812. Обычный трёхцветный светодиод (который кстати и стоит в WS2812) — не кошерно?
WS2812 — это хорошо для тех случаев когда их много, для пиксельной адресации, а здесь он один, и приводит к такой куче проблем. Не понятно.
Упс, нашёл ответ вышеvladimir_open-dev
13.02.2017 21:05Очень туго было с местом на плате + яркость дискретного решения зависела бы от напряжения питания (у WS2812 стабилизаторы тока внутри) + вышел бы дороже монтаж (12 точек против 4).
Radmin
13.02.2017 22:47Кстати, простите за занудство, но у вас в статье WS2812b, а не WS2812. Не знаю, влияет ли это уточнение на что-то в вашей статье, но сами по себе они сильно отличаются друг от друга, как минимум, таймингами управления цветом.
rusticus
Добавьте в опрос третий вариант, типа «Некому дарить»
vladimir_open-dev
Уже нельзя, к сожалению…