Доброго времени суток! Не так давно я опубликовал небольшую статью на основе своего онлайн-урока для студентов 2020 года, по работе с GD32F103TB. Статья была выложена в ВКонтакте и как оказалось, была многим полезна. По этой причин я решил выложить её здесь с дополнительными комментариями, а так же продолжить цикл статей по данным контроллерам.
User
Выжимаем ATtiny10, практическое применение
Это ещё один маленький домашний DIY (апгрейд гирлянды) на, практически, самом младшем из младших микроконтроллеров из линейки ATtiny - на ATtiny10. Классический ЛУТ с ошибками любителя, и написание взрослой прошивки, для серьёзного мигания светодиодами. Все результаты доступны на гитхабе.
Эмулятор в эмуляторе для проигрывания чиптюн-мелодий на YM2149F
Кто помнит Tetris 2 на Спектруме? Там были куча уровней, возможность играть вдвоём и классная музыка.
Недавно мы сделали 8-битный компьютер для несложных игр, но никаких звуковых возможностей в нём не предусмотрели. И вот захотелось добавить туда какую-нибудь 8-битную музыку. Мне вспомнилась именно мелодия из Tetris 2 (много за ним часов проведено), поэтому я стал с ней ковыряться.
Процессор ATmega328P в нашем компьютере большую часть времени занят отрисовкой изображения, поэтому времени на синтезирование нормальной музыки совсем нет. Значит нам понадобится звуковой процессор YM2149F (он же AY-3-8910), такой же как в ZX Spectrum и других компьютерах.
Разработчик российского RISC-V ядра будет учить школьников и студентов ассемблеру RISC-V в субботу
В субботу 13 ноября с 12.00 по Москве пройдет следующая сессия Сколковской школы синтеза цифровых схем, в режиме онлайн. По плану на ней должны были быть упражнения на FPGA плате с последовательностной логикой. Однако мы решили изменить план и переставить на эту дату занятие по архитектуре RISC-V. Это занятие было изначально запланировано 11 декабря. Занятие по последовательностной логике будет передвинуто на 20 ноября. Почему мы решили так сделать - см. обьяснение через три абзаца.
Занятие по RISC-V проведет проектировщик российского микропроцессорного ядра Никита Поляков из компании Syntacore. В Syntacore Никита перешел из компании МЦСТ где он проектировал процессор Эльбрус.
Занятие будет состоять из лекции с одновременными упражнениями на симуляторе RARS. RARS моделирует процессор на уровне архитектуры (системы команд, видимых программисту), в отличие от симулятора Icarus Verilog, который мы обсуждали в предыдущей заметке и который моделирует на уровне регистровых передач / микроархитектуры (внутреннего устройства схемы процессора). Разработчику процессора нужно уметь пользоваться симуляторами обеих типов.
У RARS есть три кнопки - запустить, ассемблировать и выполнить шаг. В конце занятия вы будете уметь программировать на ассемблере, даже если раньше этого никогда не делали. В этой заметке мы расскажем, как установить симулятор и запустить простую программу на ассемблере. Потом в следующей заметке я напишу, что такого особенного есть в архитектуре RISC-V и почему мы выбрали для семинара именно ее, а не ARM, x86/64, MIPS, AVR, SPARC, Эльбрус, Z80, 6502, PDP-11 или еще что-нибудь другое.
Ассемблер RISC-V для начинающих
Если вы не знаете ни одного ассемблера, или, возможно, не имеете большого опыта кодинга как такового, то ассемблер RISC-V может быть одним из лучших вариантов для того, чтобы погрузиться в эту тему. Конечно, материалов по ассемблеру x86 гораздо больше. Больше людей, которые могут в этом помочь. Но x86 - это чудовище, имеющее более 1500 различных инструкций.
Архитектура RISC-V, напротив, придумана специально для того, чтобы быть простой в изучении и вместе с тем, практически эффективна для реализации высокопроизводительных микропроцессоров.
Если вам необходим хороший старт, и вы не знаете ничего о микропроцессорах, вы можете прочесть мою статью "Как работает современный микропроцессор?" (How Does a Modern Microprocessor Work?).
Если вы хотите чего-нибудь простого и весёлого, можете начать с различных игр, в основе которых лежит программирование на ассемблере: Learn Assembly Programming the Fun Way.
Другим может понравиться ретропроцессор, такой, как 6502, использовавшийся в Commodore 64. Но проблема в том, что он окончательно устарел. При его разработке не учитывались реалии сегодняшнего дня.
Большой плюс RISC-V состоит в том, что он обладает современным и простым набором команд, спроектированным с учётом современных требований, таких как медленный доступ к памяти, использование предсказателя переходов, суперскалярного out-of-order выполнения команд и т.д.
Если вам интересно всё это, прочтите: Why Is Apple’s M1 Chip So Fast?
Перед тем, как мы начнём, можете распечатать это: James Zhu RISC-V Reference.
Чип AudioСodec(а) WM8731 (или (ADC/DAC)*2 из iPod(а))
Существует чип WM8731. Это стерео аудиокодек или однокристальная звуковая карта. В сущности 2 пары ADC/DAC на 24бит каждый с настройкой по I2C.
Чип знаменит тем, что его в свое время заложили в культовую отладочную плату Altera-DE1 для FPGA и чип WM8731 стал известен во всех технических вузах мира.
Посмотрим на что на самом деле способен чипок WM8731.
В этом тексте я напишу о своём опыте работы с чипом WM8731, частично восполню нехватку документации на китайскую отладочную плату Alinx и отмечу решения основных сбоев при работе с WM8731.
Пишем телеграм-бота на Rust, предварительно спаяв сетевую карту
Что делать, если ваш микроконтроллер не умеет работать с сетью, а бота для телеграма написать хочется? Конечно же, сделать свой сетевой адаптер на логических микросхемах!
Lazarus-AVR, №1. Программирование микроконтроллеров AVR в IDE Lazarus
Вот появилось желание написать небольшой проектик для себя с применением микроконтроллера. В CodeVisionAVR команды не подсвечиваются по Ctrl+Пробел, да и Си что-то начал забывать, вспоминать - лень... Конечно, вспомнить Си - это 10-30 минут, но лень... Поэтому, было решено начать проект в родной IDE Lazarus, она же кросс-компилируемая! Правда, понять, как включить avr в Lazarus, чтоб компилировался hex-файл ушло 3 дня :), поэтому пишу здесь, чтоб другие не мучались, а сразу пользовались.
Подключаем неизвестный мультиплексированный ЖКИ
На просторах можно найти немало материалов и рекомендаций касательно того, как подключить к микроконтроллеру дисплей от телефона, видеорегистратора или навигатора. А для более продвинутых электронщиков, имеющих мощные МК и не боящихся встретиться с интерфейсом LVDS, — от ноута или планшета.
А вот касательно «голых» ЖКИ информации традиционно маловато. Итак, в ходе данной статьи рассмотрим, как подключить такой экран, какие микросхемы контроллеров для них бывают, где такое применить. Традиционно будет много всякого интересного.
STM32 BluePill + RNDIS, или делаем из нехитрых приспособлений троллейбус…
Привет, Хабр. Год назад я круто изменил направление своей деятельности с desktop разработчика на программиста микроконтроллеров. Хочу поговорить о том, как прошел этот год, поделиться своими наблюдениями, рассказать в одном месте о чем никто не рассказывает. А, еще и RNDIS на STM32F103 поднимем.
Статья будет просто набором заметок о технологиях, которые вроде бы многие знают, но как будто бы не все...
Что делать, когда выпускник топ-10 мирового вуза не может спроектировать блок сложения A+B
У меня был в свое время практикант из Стенфорда, от которого я получил инсайдерскую информацию, чему их там учат. Потом я интервьировал много студентов, и понял, что если человек не делает самостоятельных проектов в вузе, а просто плывет по течению программы как медуза, то будучи выброшенным на берег индустрии, он становится совершенно беспомощным.
Когда я вижу у недавнего выпускника в резюме какой-то из протоколов в котором используется valid/ready, например AXI или AHB, я прошу его спроектировать блок, у которого на входе два числа A и B, а на выходе их сумма. Разумеется не просто написать SUM=A+B, а еще и поставить valid/ready сигналы на каждый из A, B, SUM, чтобы A и B могли приходить в разное время, а также чтобы блок ждал, если SUM не может быть передана другому блоку сразу.
Некоторые не справляются. Грустно смотреть на человека, который потратил 6 лет своей жизни (4 года в бакалавриате и 2 года в магистратуре) и океан денег на образование - и не может сложить два числа и бьется как угорь на сковородке. То блок не работает когда числа приходят в разное время, то создатель забывает снять valid, и блок на 2+2 выдает не 4, а 4-4-4-4-4-4-4... То числа складываются не попарно, а просто записываются в регистры и на выход идет их текущая сумма, хотя количество аргументов A и B не совпадает. То не отрабатывается backpressure и результаты теряются, то (после того как кандидат написал страницу кода на верилоге) блок работает на половинной производительности, то есть не может принимать поток чисел подряд, а ожидает между ними пропуски (gaps). Короче ведет себя как ChatGPT.
5 неочевидных способов улучшить иностранный язык с помощью ChatGPT
Кто-то просит нашумевшего чат-бота сгенерировать код, кто-то — написать песню в стиле The Queen. Ну а я — как лингво-коуч и гик — решила упороться и посмотреть, поможет ли система OpenAI прокачать иностранный язык. Спойлер: очень даже.
Протестировала на себе несколько способов → Выделила 5 самых годных → Снабдила комментариями, как извлечь максимум. Дочитайте до 5-го, это мой любимый 🙃
Meshtastic – оперативно-тактический радиочат без сотовой связи и интернета. Часть 1. Знакомство
Вы когда-нибудь задумывались над тем, что будете делать, окажись внезапно в чрезвычайной ситуации без сотовой или спутниковой связи, без интернета, без возможности вызвать помощь? Ваш телефон, при этом, ещё пару-тройку дней без электричества будет работать и, вероятно, сможет спасти вашу жизнь и жизни окружающих вас людей.
Meshtastic — это проект, который позволяет построить свою частную радиосеть с очень большим временем автономной работы, используя недорогие радио модули LoRa и экономичные микроконтроллеры серии ESP32.
Радиомодем связаны с вашим смартфоном по сети Bluetooth. Для некоторых сценариев использования смартфон вообще не требуется.
Обычно, время работы модема может составлять около недели. При использовании солнечных батарей время работы ретрансляционного узла не лимитировано.
Каждый участник вашей сети всегда может видеть местоположение и расстояние до всех остальных участников, а также, обмениваться любыми текстовыми сообщениями, отправленными в ваш групповой чат.
Проект подходит для создания экстренной сети связи в условиях ЧС, может использоваться в бытовом применении для оперативной связи и практически любого хобби, где отсутствует сотовая связь и Интернет.
Трюк, которого не было
Привет, Хабр! У офисных центров есть такой вид услуг - проектирование и подготовка офиса, специально под требования арендатора. Мне пришлось как-то участвовать в подобной деятельности. B однажды в голове сложился некий сценарий рекламы офисных помещений. Я понял, что просто так от этой навязчивой идеи мне не избавится. Для быстрого прототипирования моих 3D-фантазий я использую OpenSCAD. Остальные инструменты не дотягивают до требуемого градуса безумства...
Прошиваем AVR вручную
Картинка для привлечения внимания — xkcd
Представьте себе, что вы попали на необитаемый остров. И вам жизненно необходимо запрограммировать микроконтроллер. Зачем, спросите вы? Ну, допустим, чтобы починить аварийный радиомаяк, без которого шансы на спасение резко падают.
Радуясь, что еще не забыли курс ассемблера, вы кое-как написали программу палочкой на песке. Среди уцелевших вещей каким-то чудом оказалась распечатка документации на контроллер (хорошо, что вы еще не успели пустить её на растопку!), и программу удалось перевести в машинные коды. Осталась самая ерунда — прошить её в контроллер. Но в радиусе 500 километров нет ни одного программатора, не говоря уже о компьютерах. У вас только источник питания (батарея из
Как же прошить МК фактически голыми руками?
Taichi и 100-кратное ускорение Python-кода
Python стал самым популярным языком во многих быстроразвивающихся областях, таких, как глубокое обучение и различные направления анализа и обработки данных. Но при этом за удобство работы с Python-кодом, за высокий уровень его читабельности, приходится платить производительностью. Конечно, все мы время от времени жалуемся на скорость работы программ, и Python, безусловно, не стоит винить во всех грехах. Несмотря на это, справедливым будет заявление о том, что природа Python, интерпретируемого языка, не способствует высокой производительности кода, особенно когда речь идёт о «тяжёлых» вычислениях (один из признаков таких вычислений — наличие в программе нескольких вложенных циклов).
Если вы когда-либо попадали в одну из следующих ситуация — тогда эта статья, определённо, написана для вас.
Linux за 2$/100 рублей: Какой UMPC можно получить, покопавшись на барахолках?
Всем привет! Вот и подошла следующая часть из моего цикла статей очень дешевых девайсов, которым я всегда стараюсь найти применение. И на этот раз, я хочу вам показать еще одну классную сторону онлайн-барахолок(дабы не было рекламой - названия не упоминаю, но вы и сами догадались). Китайцы многое делают, чтобы сделать рынок UMPC как можно более дешевым и доступным - Lctech выпустили свою высокоинтегрированную плату Pi Zero на бутербродном AllWinner F1C100S - в который уже встроено 32/64мб ОЗУ, и цена которого - около 900руб на AliExpress. Я же предлагаю собрать UMPC за 100-500 рублей, и без единого кликбейта, на гораздо более мощном железе и с встроенным Wi-Fi, иногда 3G, полным USB стеком и встроенной NAND памятью 4-8гб. Интересно? Добро пожаловать под кат!
Не очередной язык программирования. Часть 1: Логика предметной области
В последнее время на рынке появилось огромное количество новых языков программирования: Go, Swift, Rust, Dart, Julia, Kotlin, Hack, Bosque – и это только из числа тех, которые на слуху.
Ценность того, что эти языки привносят в мир программирования, тяжело переоценить, но, как правильно в прошлом году отмечал Y Combinator, говоря про инструменты разработки:
Фреймворки становятся лучше, языки немного умнее, но в основном мы делаем то же самое.В данной статье будет рассказано о языке, построенном на подходе, принципиально отличающемся от подходов, используемых во всех существующих языках, в том числе вышеперечисленных. По большому счету, этот язык можно считать языком общего назначения, хотя некоторые его возможности и текущая реализация платформы, построенной на нем, все же, наверное, ограничивают его применение немного более узкой областью – разработкой информационных систем.
Totum — open source, self hosted база данных для непрограммистов
Инструмент для цифровизации бизнеса в момент, когда он вырос из XLS-таблиц
Универсальный UI, логика на основе простых кодов, автоматические действия, права доступа, логирование, API и куча всего остального 👍
На вашем сервере, легко изучаемая и масштабируемая вместе с ростом бизнеса 🎉
Вместо целой команды проект могут вести 1-2 специалиста ✌️
Минимальные требования к стартовой квалификации специалиста — вы можете научить разрабатывать на Totum вашего сисадмина, тестировщика, продакта, проджекта, инженера, юриста или финансиста. Или научиться сами.
Лицензия: MIT (бесплатно)
Подключение Xmega к FRAM по SPI
На мой взгляд, в данный момент самое оптимальное решение для таких случаев, это FRAM память. Можно было бы записывать необходимые данные циклически во Flash, постоянно инкрементируя адрес для новых значений, но в данном случае возникала необходимость где-то сохранять указатель на самые последние значения, либо полностью считывать Flash и затем уже извлекать «самые свежие» данные.
У Lapis Semiconductor есть три линейки FRAM микросхем, которые обмениваются с ведущим устройством по I2C или SPI, либо по параллельному интерфейсу. Преимущества последовательных интерфейсов перед параллельным очевидны. Что же касается I2C и SPI, то скорость передачи данных по SPI в 4 раза выше чем по I2C, но и потребление в связи с этим выше практически в 16 раз.
Мне же выбирать не приходилось, в наличии была только MR45V256 c 32 Кб памяти и SPI интерфейсом. 32 Кб для моих нужд более чем достаточно, поэтому оставшуюся память я использовал для записи всевозможной технической информации и логирования команд полученных от оператора.
Работа с FRAM памятью очень простая. Любая операция начинается с перевода линии выбора ведомого устройства CS# в низкое состояние. Затем отправляется одна из команд операций, их всего 6:
— Чтение данных(READ)
— Запись данных(WRITE)
— Запись в регистр статуса FRAM(WRSR)
— Чтение из регистра статуса FRAM(RDSR)
— Установка защиты данных от перезаписи(WRDI)
— Снятие защиты данных от перезаписи(WREN)
Information
- Rating
- 5,008-th
- Registered
- Activity