Forwarded from Tänään ja ensi viikkona
Так-с
За последние полгода я понаделал всяких проектов с MIK32, но документации нормальной не было. До позавчерашнего для и до дня сегодняшнего. Потому что я решил сделать норм описания, чтобы увеличить уровень людского в проектах.
Просто оставлю это здесь.
• mik32_transaction (удобный набор DMA-библиотек);
• mik32_stdio (стандартный ввод-вывод stdio.h для MIK32);
• mik32sd (драйвер карт SD для MIK32);
• mik32fat (FAT32-совместимая файловая система для MIK32).
За последние полгода я понаделал всяких проектов с MIK32, но документации нормальной не было. До позавчерашнего для и до дня сегодняшнего. Потому что я решил сделать норм описания, чтобы увеличить уровень людского в проектах.
Просто оставлю это здесь.
• mik32_transaction (удобный набор DMA-библиотек);
• mik32_stdio (стандартный ввод-вывод stdio.h для MIK32);
• mik32sd (драйвер карт SD для MIK32);
• mik32fat (FAT32-совместимая файловая система для MIK32).
GitHub
GitHub - Barsy-Barsevich/mik32_transaction: A set of DMA libraries for MIK32
A set of DMA libraries for MIK32. Contribute to Barsy-Barsevich/mik32_transaction development by creating an account on GitHub.
🔥7
Forwarded from Univelis / Foxspeed
Друзья, я спас уличную кошку, но взять её себе, к сожалению, не могу — у меня уже есть своя (такая же спасённая). Пожалуйста, возьмите её кто-нибудь. У неё оч прикольные глаза, весёлый игривый нрав и молодой возраст.
Кошька приедет к вам в Москву, Калугу и рядом, только возьмите её, пожалуйста. Она классная!
Форвардните друзьям, вдруг получится. Мне это важно.
Кошька приедет к вам в Москву, Калугу и рядом, только возьмите её, пожалуйста. Она классная!
Форвардните друзьям, вдруг получится. Мне это важно.
❤10🔥2 1
Forwarded from Zenembed
This media is not supported in your browser
VIEW IN TELEGRAM
Сегодня я расскажу, почему покупка Qualcomm Arduino ни на что не повлияет. И почему сама Arduino как концепция мертва уже лет 10, а сделать экзит с деньгами - лучшее, что руководитель мог сделать в своей ситуации.
Во-первых, вспомним, что было в самом начале. Arduino взлетела как удачный форм-фактор: вы могли быстро писать скетчи, не лезя сразу в чистый C или ASM. При этом авторы хоть сколько-нибудь сложных библиотек всё равно опускались на низкий уровень и мешали высокоуровневый код с С/ASM, как, например, тут. Это, конечно, ужасно с точки зрения чистоты кода: библиотеки превращаются в свалку из миллионов #define под каждый контроллер. Но тем не менее это был самый простой способ доставить рабочий код конечному пользователю. Arduino помогала доставлять не только библиотеки, но и целые проекты. Самый яркий пример - Marlin. Очевидно, что сам проект разрабатывается не в Arduino IDE, но конечный пользователь, как правило, использует именно её.
Что происходило дальше? Партнёрство с Intel (2013–2017). Немногие вспомнят такие платы, как Arduino 101 (2015-2016), а также попытки в Arduino с Linux - Intel Edison (2014-2017) и Intel Galileo (2013–2015). Где они сейчас? Проблема была в том, что Intel обеспечила поддержку базовых ардуиновских функций, но внутрь платформы лезть было трудно: отсутствовала документация и примеры и ни кто этим не стал занимался. Не помогло даже то, что Edison раздавали пачками - у меня было 5 или 6 отладочных плат.
Спустя ещё несколько лет началась активная диверсификация (2018): стали появляться новые платы. Например, Arduino с FPGA - MKR Vidor 4000 (2018), Arduino с NB-IoT - MKR NB 1500 (2018), "промышленный" контроллер - Opta (2022). Особо никто не знает и не видел - и причина та же: хреновая поддержка по верхам и игнорирование потребностей энтузиастов на низком уровне (инструменты, драйверы, документация, отладка).
Последний по-настоящему массовый продукт - Arduino UNO R4 (2023). Можно наивно предположить, что по USB там есть встроенный отладчик, как на многих нормальных девбордах, но нет. Видимо отладка слишком сложна для пользователя. Если у Minima хотя бы есть разъём под JTAG, то у версии WiFi он вообще не выведен. Да, можно закостылить ESP32 как CMSIS-DAP, но что делать, если я хочу отлаживать код вместе с Wi-Fi-частью?
И вот мы в текущем дне: Arduino UNO Q (2025). Супер-переусложнённая плата с большими вопросами по поддержке. Работает как макбук: можно вешать Type-C-хаб для вывода видео и подключения периферии, все в одном type C. Прогрессивно, но что с низким уровнем и инструментами?
Подводя итог: UNO Q - новый Edison. Qualcomm не славится любовью к опенсорсу, и с большой вероятностью HAL окажется закрытым или полузакрытым - это быстро убьёт экосистему вокруг платы. Слишком высокая сложность тоже не сыграет на руку мейкерам, которые привыкли тыкать модули в гребёнку, не погружаясь в схемотехнику. А что касается самой Arduino, их новые сложные платы так и не встали на один уровень с классикой и, по большому счёту, никому особо не нужны. Идея супер-сложных ардуин с очень высоким уровнем абстракции мертва уже около десятилетия. Так что остаётся порадоваться за тех, кто заработал хорошие деньги перед тем, как всё само развалится.
Во-первых, вспомним, что было в самом начале. Arduino взлетела как удачный форм-фактор: вы могли быстро писать скетчи, не лезя сразу в чистый C или ASM. При этом авторы хоть сколько-нибудь сложных библиотек всё равно опускались на низкий уровень и мешали высокоуровневый код с С/ASM, как, например, тут. Это, конечно, ужасно с точки зрения чистоты кода: библиотеки превращаются в свалку из миллионов #define под каждый контроллер. Но тем не менее это был самый простой способ доставить рабочий код конечному пользователю. Arduino помогала доставлять не только библиотеки, но и целые проекты. Самый яркий пример - Marlin. Очевидно, что сам проект разрабатывается не в Arduino IDE, но конечный пользователь, как правило, использует именно её.
Что происходило дальше? Партнёрство с Intel (2013–2017). Немногие вспомнят такие платы, как Arduino 101 (2015-2016), а также попытки в Arduino с Linux - Intel Edison (2014-2017) и Intel Galileo (2013–2015). Где они сейчас? Проблема была в том, что Intel обеспечила поддержку базовых ардуиновских функций, но внутрь платформы лезть было трудно: отсутствовала документация и примеры и ни кто этим не стал занимался. Не помогло даже то, что Edison раздавали пачками - у меня было 5 или 6 отладочных плат.
Спустя ещё несколько лет началась активная диверсификация (2018): стали появляться новые платы. Например, Arduino с FPGA - MKR Vidor 4000 (2018), Arduino с NB-IoT - MKR NB 1500 (2018), "промышленный" контроллер - Opta (2022). Особо никто не знает и не видел - и причина та же: хреновая поддержка по верхам и игнорирование потребностей энтузиастов на низком уровне (инструменты, драйверы, документация, отладка).
Последний по-настоящему массовый продукт - Arduino UNO R4 (2023). Можно наивно предположить, что по USB там есть встроенный отладчик, как на многих нормальных девбордах, но нет. Видимо отладка слишком сложна для пользователя. Если у Minima хотя бы есть разъём под JTAG, то у версии WiFi он вообще не выведен. Да, можно закостылить ESP32 как CMSIS-DAP, но что делать, если я хочу отлаживать код вместе с Wi-Fi-частью?
И вот мы в текущем дне: Arduino UNO Q (2025). Супер-переусложнённая плата с большими вопросами по поддержке. Работает как макбук: можно вешать Type-C-хаб для вывода видео и подключения периферии, все в одном type C. Прогрессивно, но что с низким уровнем и инструментами?
Подводя итог: UNO Q - новый Edison. Qualcomm не славится любовью к опенсорсу, и с большой вероятностью HAL окажется закрытым или полузакрытым - это быстро убьёт экосистему вокруг платы. Слишком высокая сложность тоже не сыграет на руку мейкерам, которые привыкли тыкать модули в гребёнку, не погружаясь в схемотехнику. А что касается самой Arduino, их новые сложные платы так и не встали на один уровень с классикой и, по большому счёту, никому особо не нужны. Идея супер-сложных ардуин с очень высоким уровнем абстракции мертва уже около десятилетия. Так что остаётся порадоваться за тех, кто заработал хорошие деньги перед тем, как всё само развалится.
❤5
Forwarded from МосЛисоКанал
Я часто разбираю разные интересные и уникальные приборы и решил подробнее рассматривать отдельные узлы, чтобы показать, как именно они работают.
Сегодня, аналоговая часть Thorlabs PM400, а точнее трансимпедансный усилитель.
В PM400 TIA реализован на LTC6081, который преобразует ток фотодиода в напряжение для дальнейшего измерения.
Так как ток может меняться от пикоампер до миллиампер, в схеме реализована перестраиваемая цепь обратной связи.
В неё включено несколько прецизионных резисторов и конденсаторов, формирующих диапазон усиления и частотную компенсацию.
Резисторы выполнены в MELF-корпусе - для низкого шума, стабильного сопротивления и минимальных паразитных параметров, что критично для устойчивости TIA.
Переключение элементов выполняет аналоговый ключ ADG715, управляемый по I²C.
Микроконтроллер выбирает нужную комбинацию компонентов в зависимости от уровня сигнала, удерживая усилитель в линейной области и обеспечивая стабильную работу при изменении оптической мощности
Сегодня, аналоговая часть Thorlabs PM400, а точнее трансимпедансный усилитель.
В PM400 TIA реализован на LTC6081, который преобразует ток фотодиода в напряжение для дальнейшего измерения.
Так как ток может меняться от пикоампер до миллиампер, в схеме реализована перестраиваемая цепь обратной связи.
В неё включено несколько прецизионных резисторов и конденсаторов, формирующих диапазон усиления и частотную компенсацию.
Резисторы выполнены в MELF-корпусе - для низкого шума, стабильного сопротивления и минимальных паразитных параметров, что критично для устойчивости TIA.
Переключение элементов выполняет аналоговый ключ ADG715, управляемый по I²C.
Микроконтроллер выбирает нужную комбинацию компонентов в зависимости от уровня сигнала, удерживая усилитель в линейной области и обеспечивая стабильную работу при изменении оптической мощности
🔥8❤2
Forwarded from Bulatov Dmitry (Dmitry Bulatov)
На фото – звуковая инсталляция “Fluid Anatomy” (2024) румынской художницы Иоаны Време Мозер. В её основе – аналоговый компьютер, работающий на воде и воздухе. Система построена на принципах гидропневматической логики: потоки жидкости и воздуха циркулируют по прозрачным трубкам, проходя через “флюдисторы” (жидкостные транзисторы), логические элементы и вибрационные генераторы. Устройство использует эффект Коанда: струи воды направляются по изогнутым каналам, меняя траекторию в зависимости от формы полостей. Генератор управляет пульсацией потока, сенсоры отслеживают его присутствие. Видео здесь.
В проекте использованы жидкостные элементы, восстановленные по архивным патентам 1950-60-х годов. Источником своего вдохновения художница называет “первый” жидкостный компьютер FLODAC (1964, Univac). При этом мы не должны забывать о действительно первом водяном компьютере Владимира Лукьянова (1936, фото). Эта машина была способна решать дифференциальные уравнения при помощи воды и соединенных между собой трубок и колб.
В проекте использованы жидкостные элементы, восстановленные по архивным патентам 1950-60-х годов. Источником своего вдохновения художница называет “первый” жидкостный компьютер FLODAC (1964, Univac). При этом мы не должны забывать о действительно первом водяном компьютере Владимира Лукьянова (1936, фото). Эта машина была способна решать дифференциальные уравнения при помощи воды и соединенных между собой трубок и колб.
❤8👍2🔥2
Forwarded from Linux / Линукс
«Ред Софт» заставили выполнить лицензию GPL
Команда юристов из Bytes & Rights устроила показательный разбор с российским вендором «Ред Софт», который трижды пытался уклониться от выполнения требований лицензии GPL. История началась с покупки двух продуктов — «Ред ОС: Рабочая станция» и «Ред ОС: Сервер», содержащих около 90 компонентов под GPL/LGPL.
На сайте «Ред Софт» не было исходных кодов, что нарушает условия лицензии. Юристы направили запрос, компания пообещала исправиться, но ничего не сделала. Тогда последовали жалобы в Генпрокуратуру и Минцифры.
Ирония в том, что Минцифры, проверив продукты, включило их в Реестр отечественного ПО, проигнорировав нарушение лицензий. Только после этого «Ред Софт» предоставила исходники, но с первого раза — неполные, без патчей. Со второго — вообще не те. И лишь с третьего подхода, после очередных обращений в ведомства, юристы получили корректные исходные коды.
Финальные исходники выложили на Gitflic. Юридически ситуация сложная: пользователь не может подать иск по GPL, так как не является стороной договора. Юристы использовали хитрый ход — доказали, что без исходников продукт становится контрафактным.
Linux / Линукс🥸
Команда юристов из Bytes & Rights устроила показательный разбор с российским вендором «Ред Софт», который трижды пытался уклониться от выполнения требований лицензии GPL. История началась с покупки двух продуктов — «Ред ОС: Рабочая станция» и «Ред ОС: Сервер», содержащих около 90 компонентов под GPL/LGPL.
На сайте «Ред Софт» не было исходных кодов, что нарушает условия лицензии. Юристы направили запрос, компания пообещала исправиться, но ничего не сделала. Тогда последовали жалобы в Генпрокуратуру и Минцифры.
Ирония в том, что Минцифры, проверив продукты, включило их в Реестр отечественного ПО, проигнорировав нарушение лицензий. Только после этого «Ред Софт» предоставила исходники, но с первого раза — неполные, без патчей. Со второго — вообще не те. И лишь с третьего подхода, после очередных обращений в ведомства, юристы получили корректные исходные коды.
Финальные исходники выложили на Gitflic. Юридически ситуация сложная: пользователь не может подать иск по GPL, так как не является стороной договора. Юристы использовали хитрый ход — доказали, что без исходников продукт становится контрафактным.
Linux / Линукс
Please open Telegram to view this post
VIEW IN TELEGRAM
🔥11🤔2
#этимология названия технологии Bluetooth
Технология Bluetooth получила своё название в честь скандинавского короля Харальда I Синезубого ("Harald Blåtand"), который жил в X веке и прославился тем, что объединил враждовавшие датские и норвежские земли в одно королевство. Харальду дали прозвище "Синезубый" из-за потемневшего переднего зуба.
Разработчики выбрали это имя как символ объединения различных устройств и протоколов в единую универсальную систему связи, аналогично тому, как король объединял разные народы. Временное кодовое название технологии стало постоянным, потому что распространилось среди инженеров и пользователей быстрее, чем планировалось.
Логотип Bluetooth составлен из скандинавских рун, соответствующих инициалам имени Harald Blåtand: руны "H" и "B" объединены в один символ.
Название Bluetooth отражает мысль о соединении разрозненных элементов -- устройств, протоколов и людей.
Технология Bluetooth получила своё название в честь скандинавского короля Харальда I Синезубого ("Harald Blåtand"), который жил в X веке и прославился тем, что объединил враждовавшие датские и норвежские земли в одно королевство. Харальду дали прозвище "Синезубый" из-за потемневшего переднего зуба.
Разработчики выбрали это имя как символ объединения различных устройств и протоколов в единую универсальную систему связи, аналогично тому, как король объединял разные народы. Временное кодовое название технологии стало постоянным, потому что распространилось среди инженеров и пользователей быстрее, чем планировалось.
Логотип Bluetooth составлен из скандинавских рун, соответствующих инициалам имени Harald Blåtand: руны "H" и "B" объединены в один символ.
Название Bluetooth отражает мысль о соединении разрозненных элементов -- устройств, протоколов и людей.
❤11👍3
Forwarded from Oh, J
#Заметка
Раздел на сайте Wurth с Appnotes: от ссылок на библиотеки для KiCad и Altium до старения компонентов, от EMC до разбора того, как устроены оптопары.
Раздел на сайте Wurth с Appnotes: от ссылок на библиотеки для KiCad и Altium до старения компонентов, от EMC до разбора того, как устроены оптопары.
🔥8❤2 1
Forwarded from Kautcraft
Тест вактролов
На светодиод через резистор 1к подключаю CV 0 по +10 вольт (диапазон работы светодиода отличается, но для проверки достаточно такого)
Со стороны фоторезистора припаял 1м постоянный резистор, чтобы получился делитель напряжения. На него подаю +12 вольт, на выход делителя подключаю осциллограф
На CV вход подаётся треугольный сигнал частотой от 10гц до 1000гц. У настоящих вактролов есть характерный decay, поэтому на выходе вместо треугольника должен получаться синус. При частотах выше 1000гц сигнал должен уменьшаться, так как вактрол не успевает срабатывать
Найти вактролы на алике можно по названию VTL5C1, VTL5C2 и тд. Цифра в конце названия — модель. Купил и тестил номера 1 и 2. С1 50мом быстрый, С2 1мом медленный. Характеристики совпали с даташитами
Купить вактролы было проблемно, мало того, что их тяжело найти в наличии, так ещё и встречались подделки, где транзисторные оптопары упаковывали в корпус как у вактрола, подделки работают слишком быстро, поэтому вактрольная фишка пропадает
На светодиод через резистор 1к подключаю CV 0 по +10 вольт (диапазон работы светодиода отличается, но для проверки достаточно такого)
Со стороны фоторезистора припаял 1м постоянный резистор, чтобы получился делитель напряжения. На него подаю +12 вольт, на выход делителя подключаю осциллограф
На CV вход подаётся треугольный сигнал частотой от 10гц до 1000гц. У настоящих вактролов есть характерный decay, поэтому на выходе вместо треугольника должен получаться синус. При частотах выше 1000гц сигнал должен уменьшаться, так как вактрол не успевает срабатывать
Найти вактролы на алике можно по названию VTL5C1, VTL5C2 и тд. Цифра в конце названия — модель. Купил и тестил номера 1 и 2. С1 50мом быстрый, С2 1мом медленный. Характеристики совпали с даташитами
Купить вактролы было проблемно, мало того, что их тяжело найти в наличии, так ещё и встречались подделки, где транзисторные оптопары упаковывали в корпус как у вактрола, подделки работают слишком быстро, поэтому вактрольная фишка пропадает
🔥5
Forwarded from Пингвины, яблоки и робот (Andrei Chevozerov)
Ага! Вы думали, я пропал?
С момента прошлой публикации произошло много интересных событий, но самое важное из них в контексте этого канала – я, наконец, принял решение плотно заняться электроникой, схемотехникой и всем, что связано с различными электронными устройствами.
Как обычно происходит знакомство с миром встраиваемой электроники в современных условиях? Покупается плата или набор Arduino, и новоиспеченный системщик начинает копаться во множестве библиотек, шилдов, фреймворков и питоновых скриптов.
Конечно же, я выбрал другой вариант. Когда-то давно я начинал свой путь в большое программирование с ассемблера. Тогда это были приложения под платформу x86 для Windows. С тех пор прошло 20 лет, и вот я снова решил вернуться к своим корням.
Поэтому моё погружение в чудесный мир электронных устройств началось с изучения ассемблера под современную архитектуру RISC-V. Первым делом нужно установить и настроить всё необходимое для сборки, отладки и заливки прошивок на устройство. Но внезапно выяснилось, что в мире ардуинщиков очень непросто найти информацию о том, как настраивать сборочные тулчейны, кросс-компиляцию и тому подобные вещи. Так что пришлось в этом всём разобраться своими силами. Заметка получилась довольно длинной и в формат поста в телеге не помещается. К счастью, у меня есть сайт, который как раз для этого и создавался!
Собственно, вот ссылка на заметку: https://andreichevozerov.ru/blog/risc-v-asm-toolchain/
С момента прошлой публикации произошло много интересных событий, но самое важное из них в контексте этого канала – я, наконец, принял решение плотно заняться электроникой, схемотехникой и всем, что связано с различными электронными устройствами.
Как обычно происходит знакомство с миром встраиваемой электроники в современных условиях? Покупается плата или набор Arduino, и новоиспеченный системщик начинает копаться во множестве библиотек, шилдов, фреймворков и питоновых скриптов.
Конечно же, я выбрал другой вариант. Когда-то давно я начинал свой путь в большое программирование с ассемблера. Тогда это были приложения под платформу x86 для Windows. С тех пор прошло 20 лет, и вот я снова решил вернуться к своим корням.
Поэтому моё погружение в чудесный мир электронных устройств началось с изучения ассемблера под современную архитектуру RISC-V. Первым делом нужно установить и настроить всё необходимое для сборки, отладки и заливки прошивок на устройство. Но внезапно выяснилось, что в мире ардуинщиков очень непросто найти информацию о том, как настраивать сборочные тулчейны, кросс-компиляцию и тому подобные вещи. Так что пришлось в этом всём разобраться своими силами. Заметка получилась довольно длинной и в формат поста в телеге не помещается. К счастью, у меня есть сайт, который как раз для этого и создавался!
Собственно, вот ссылка на заметку: https://andreichevozerov.ru/blog/risc-v-asm-toolchain/
~/plushcube
RISC-V и его ассемблер, часть 1
Начинаю цикл статей, в которых буду описывать свой путь изучения ассемблера RISC-V на примере отечественного микроконтроллера мик32 Амур производства Микрон. Первая часть посвящена установке и настройке сборочного тулчейна: кросс-компилятора, необходимых…
🔥3❤1
Forwarded from Грокаем C++
WAT
#опытным
Спасибо, @Ivaneo, за любезно предоставленный примерчик в рамках рубрики #ЧЗХ.
"Век живи - век учись" - сказал Луций Сенека.
"Век живи - век учи С++" - реалии нашей жизни.
Просто посмотрите на следующий код:
И он компилируется.
WAT?
Это называется injected class name. Имя класса доступно из скоупа этого же класса. Так сделано для того, чтобы поиск имени
Такое поведение может быть полезно в таком сценарии:
injected class name гарантирует, что из метода
Это также полезно внутри шаблонов классов, где имя класса можно использовать без списка аргументов шаблона, например, используя просто Foo вместо полного идентификатора шаблона Foo<blah, blah, blah>.
Ну и побочным эффектом такого поведения является возможность написания длиннющей цепочки из имен класса.
Так что это не у вас в глазах двоится, это плюсы такие шебутные)
Find yourself within. Stay cool.
#cppcore
#опытным
Спасибо, @Ivaneo, за любезно предоставленный примерчик в рамках рубрики #ЧЗХ.
"Век живи - век учись" - сказал Луций Сенека.
"Век живи - век учи С++" - реалии нашей жизни.
Просто посмотрите на следующий код:
struct Foo
{
void Bar();
};
void Foo::Foo::Foo::Foo::Foo::Foo::Foo::Foo::Foo::Foo::Foo::Foo::Bar()
{
printf("Foofoo!");
}
int main()
{
Foo f;
f.Bar();
return 0;
}
И он компилируется.
WAT?
Это называется injected class name. Имя класса доступно из скоупа этого же класса. Так сделано для того, чтобы поиск имени
X внутри класса X всегда разрешался именно в этот класс.Такое поведение может быть полезно в таком сценарии:
void X() { }
class X {
public:
static X Сreate() { return X(); }
};injected class name гарантирует, что из метода
Сreate будет возвращен именно инстанс класса Х, а не результат вызова функции Х.Это также полезно внутри шаблонов классов, где имя класса можно использовать без списка аргументов шаблона, например, используя просто Foo вместо полного идентификатора шаблона Foo<blah, blah, blah>.
Ну и побочным эффектом такого поведения является возможность написания длиннющей цепочки из имен класса.
Так что это не у вас в глазах двоится, это плюсы такие шебутные)
Find yourself within. Stay cool.
#cppcore
❤4👍1🤯1