Зачастую в процессе разработки собственных устройств или моддинга уже существующих, встаёт задача выполнения стороннего кода: будь то ваши собственные программы с SD-флэшек, или программы, написанные другими пользователями с помощью SDK для вашего устройства. Тема компиляторов и кодогенерации достаточно сложная: чтобы просто загрузить ELF или EXE (PE) программу, вам нужно досконально разбираться в особенностях вашей архитектуры: что такое ABI, релокации, GOT, отличие -fPIE от -fPIC, как писать скрипты для ld и т. п. Недавно я копал SDK для первых версий Symbian и основываясь на решениях из этой ОС понял, каким образом можно сделать крайне «дешевую» загрузку любого нативного кода практически на любом микроконтроллере, совершенно не вникая в особенности кодогенерации под неё! Сегодня мы с вами: узнаем, что происходит в процессе загрузки программы ядром Linux, рассмотрим концепцию, предложенную Symbian Foundation и реализуем её на практике для относительно малоизвестной архитектуры — XTensa (хотя она используется в ESP32, детали её реализации «под капотом» для многих остаются загадкой). Интересно? Тогда добро пожаловать под кат!
Читать полностью »
Рубрика «Atmega»
Выполняем сторонние программы на микроконтроллерах с Гарвардской архитектурой: как загружать программы без знания ABI?
2024-01-05 в 8:01, admin, рубрики: Atmega, attiny, avr, bodyawm_ништячки, C, c++, cc, dll, elf, esp32, esp8266, exe, executable, gcc, gnu ld, ld, linker, pic, timeweb_статьи, xtensa, бинарные файлы, загрузчик, исполняемый файл, компоновщик, микроконтроллеры, микропроцессоры, программа, программы, системное программированиеИнкрементальный энкодер: подключение и обработка его с помощью AVR (ATmega8-16-32-168-328)
2023-04-16 в 14:44, admin, рубрики: Atmega, avr, код Грея, метод прерываний, программирование микроконтроллеров, энкодерВ данной статье расскажу об энкодерах и попытаюсь объяснить, как их подключать и обрабатывать правильным способом с помощью микроконтроллера AVR (в примерах я использую ATmega8A-PU, но это должно работать на любом другом микроконтроллере, например, на ATmega32 или совместимом с Arduino ATmega168/328).
Немного теории
Инкрементальные энкодеры имеют два выхода, назовем их A и B. Когда мы вращаем ручку, на выходах A и B мы получаем фазовый сдвиг квадратичного сигнала. Этот сигнал представляет собой ничто иное, как двухбитный код Грея. На изображении ниже я нарисовал это в более читабельном виде.
Колодец с мёдом
2021-02-09 в 11:00, admin, рубрики: Atmega, diy или сделай сам, автоматика для дома, дерево, дизайн, кухня, программирование микроконтроллеров, самоделки, сувенир, традиции, Электроника для начинающихЗахотелось мне сделать кухонную безделушку / украшение. Конечно же, с электроникой и интерактивностью.
Идея - дозатор мёда такой, чтобы процесс подачи выглядел как подъём ведёрка из колодца девушкой в русском национальном оформлении.
Устройство
Прямоугольный фанерный корпус, внутри которого расположена банка с мёдом, привод и управляющая электроника.
Сверху на корпусе находится венец колодца, столбы с воротом, фигурка девушки в русском народном костюме и с лампой.
Всё делалось с минимальными затратами.
Реализация
Как я делал себе АВР для генератора
2020-06-22 в 18:53, admin, рубрики: Atmega, diy или сделай сам, программирование микроконтроллеров
Несколько лет назад делал себе АВР (автоматический ввод резерва) для работы на даче от генератора. Сейчас многие ИТ-шники переходят на удалёнку, работают с дач, где качество электропитания может оставлять лучшего. Поэтому решил написать о своем опыте самодельного АВР на микроконтроллере ATmega8A. Если тема интересна, добро пожаловать под кат, будет много букв и кода.
Читать полностью »
Система защиты от протечки для стиральной машины
2019-10-25 в 8:19, admin, рубрики: Atmega, diy или сделай сам, Geektimes, умный дом, хобби
Введение
Думаю, у каждого дома есть стиральная машина. Обычно она подключаются к водопроводу посредством гибкого шланга. Но со шлангом может приключиться большая неприятность: иногда они лопаются, что приведет к потопу как в вашей квартире, так и у соседей. Поэтому, стиральные машины подключаются к водопроводу через специальный кран, который нужно открывать перед стиркой и закрывать после. Не знаю как у вас, но у меня этот кран находится в крайне неудобном месте. Да и запускать стирку я предпочитаю перед уходом на работу, так что почти весь день шланг находится под давлением и может лопнуть в то время, когда меня нет дома. Вот было бы здорово, чтобы кран открывался и же закрывался в нужный момент сам!
Идея показалась мне вполне по силам и я решил ее реализовать: на микроконтроллерах и с моторизированным вентилем.
Читать полностью »
Hands Free, но не телефон. Послушный дом, когда рук не хватает
2017-12-08 в 20:02, admin, рубрики: Atmega, diy или сделай сам, звук, освещение, самоделки, спектры, схемотехника, умный дом, умный светЗдравствуй, Сообщество!
Появилось у меня желание снова поковыряться с микроконтроллером и сделать что-нибудь полезное. Цель сформировалась почти сразу, так как в квартире меня кое-что напрягало.
Как известно, компьютерный стол – он же обеденный, чтобы смотреть Дробышевского или читать Гиктаймс / Зелёного Кота / etc. одновременно с ужином. Но есть проблема – из кухни я иду обычно с обеими занятыми руками, обратно тоже, ведь чашки копятся по 3 шт. Включать и выключать свет на кухне (выключатель тройной – кухня/ванна/туалет) приходится плечом, носом, мизинцем. То есть неудобно никак, а переставить ниже нельзя. Возникла задача управлять как-то дистанционно.
Всякие датчики присутствия и прохода отмёл сразу – не та точность, нет управления по воле хозяина. Решение найдено в звуковом управлении, голосом. Скажу сразу, я не планировал делать рапознавалку речи, она не нужна здесь. Свет, включающийся по хлопку, описан ещё в Радио-80х, но я так не хотел делать. Получилось своеобразное handsfree, когда руки заняты. Подробности — дальше.
Читать полностью »
Arduino в Linux: копаемся в кишках проекта
2017-11-18 в 22:11, admin, рубрики: arduino, Arduino IDE, Atmega, avr, avr-gcc, avr-libc, linux, open source, qt creator, Программирование, Электроника для начинающихВведение
В предыдущей статье был описан процесс превращения Qt Creator в полноценную IDE для проектов на платформе Arduino. Шаги были описаны подробно, но без описания смысла происходящего, поэтому эффект от такой статьи небольшой. В каждом конкретном случае могут возникать и возникают разнообразные нюансы и разобраться в них без понимания того как устроен проект сложно.
Поэтому в данной заметке мы разберемся в структуре и настройках проекта.
Читать полностью »
I2C-сниффер
2017-04-03 в 12:49, admin, рубрики: arduino, Atmega, ATmega8, avr, I2C, twi, программный i2cДобрый день! Как-то возникла на работе проблема — имеется устройство, работающее по I2С и протокол которого необходимо было понять. Следовательно, нужен сниффер под интерфейс I2С, который бы выводил все, что приходит-уходит по I2C, на порт UART и далее через преобразователь на COM-порт компьютера.
Читать полностью »
Примитивы для реализации 1-Wire master при помощи PWM и ICP на микроконтроллерах AVR AtMega
2017-02-27 в 15:02, admin, рубрики: 1wire, arduino, Atmega, ATmega2560, atmega328, ATMEGA328P, avr, DS18B20, gpio, icp, interrupt, isr, protothreads, PWM, Realtime, scada, программирование микроконтроллеров, Разработка для интернета вещей, Разработка робототехникиЕсли кто-нибудь использовал linux-драйвер шины 1-Wire на основе GPIO, то наверняка замечал, что в момент выполнения обмена данными загрузка SY% подскакивает чуть ли не до ста 100% (что вполне логично для bitbang-реализации). Конечно, можно поставить специализированный контроллер шины 1-Wire с подключением через I2C DS28E17 или использовать UART, но… Все-таки использовать linux для приложений реального времени не лучшая идея. Пусть контроллер на нем занимается высокоуровневой логикой, а весь реалтайм можно вынести на отдельный процессор. Тем более, что задач для этого отдельного процессора в моем проекте более чем достаточно.
Читать полностью »
ATmega16 + DS18B20 + LED + Matlab-Simulink = AR
2016-03-02 в 0:30, admin, рубрики: Atmega, Augmented reality, avr, diy или сделай сам, DS18B20, Matlab, Simulink, дополненная реальность, обработка изображений, Программирование, программирование микроконтроллеров, схемотехника Задумал я как-то поиграться с датчиками DS18B20. Да не просто получить значения температуры (что умеет каждый), но и как-то ее визуализировать. Возникла простая идея. Ставим вебкамеру. Зажигаем светик на четном кадре, на не четном — тушим. Вычитаем картинку — остается только вспышка. По ней и ищем местоположение датчика, который физически привязан к светодиоду в пространстве. А дальше математическая обработка. Ну и все это в симулинке. Под катом описано как получить красивые картиночки. А для тех кто разбираться не желает — предлагаю посмотреть эксперименты в конце статьи.
Читать полностью »