Что дальше на ARDUINOHACKS?
ARDUINOHACKS — мы не просто используем микроконтроллеры, мы переопределяем их возможности! Продолжение следует… Ваша фантазия — единственный предел! 🚀💡
Читать далее »Итоговый чек-лист хакера экстра-класса:
✔️ Управляет пинами как входом и выходом без pinMode()✔️ Пишет математические функции на ассемблере для скорости✔️ Перехватывает системные прерывания✔️ Создал собственную RTOS для многозадачности✔️ Выполняет БПФ в реальном времени на 8-битном контроллере✔️ Использует ассемблер для оптимизации критических участков
Читать далее »Часть 25: Процессинг звука — создаем вокодер на Arduino
Мы можем анализировать и синтезировать звук в реальном времени, используя БПФ (быстрое преобразование Фурье). Реализация БПФ на 64 точки (ассемблерная оптимизация): Использование в C++ для визуализации звука:
Читать далее »Часть 24: Создаем свою RTOS на Arduino (Кооперативная многозадачность)
Да, у нас всего 2 КБ RAM и 16 МГц, но мы можем создать операционную систему реального времени, которая позволит выполнять несколько задач параллельно! Структура RTOS: Расширенная RTOS с прерываниями (вытесняющая многозадачность):
Читать далее »Часть 23: Перехват прерываний — создаем свой обработчик
Иногда нужно перехватить прерывание, которое уже используется системой (например, прерывание таймера 0 используется для millis()). Мы можем создать свой обработчик, который будет вызываться до стандартного. Техника «векторного перехвата»:
Читать далее »Часть 22: Ассемблерный математический сопроцессор
Arduino использует программную библиотеку для работы с float (числами с плавающей точкой), которая занимает ~4 КБ Flash и выполняется медленно. Мы напишем свои функции на ассемблере для критических вычислений. Умножение двух 16-битных чисел (быстрый алгоритм): Использование в C++:
Читать далее »Часть 21: Двунаправленные порты — читаем и пишем на одних пинах
В реальных проектах часто нужно, чтобы пин работал и как вход, и как выход в разное время. Например, для протокола 1-Wire (DS18B20) или для динамического управления LED-матрицей. Проблема стандартного подхода: pinMode(pin, OUTPUT);digitalWrite(pin, HIGH);// …pinMode(pin, INPUT);int val = digitalRead(pin);…
Читать далее »Добро пожаловать в новый, еще более глубокий уровень ARDUINOHACKS!
Добро пожаловать в новый, еще более глубокий уровень ARDUINOHACKS! Сегодня мы разберем темы, о которых молчат даже продвинутые Arduino-гуру. Мы научимся работать с двунаправленными портами, создадим ассемблерный математический сопроцессор, освоим перехват прерываний и даже построим собственный RTOS (операционную систему реального времени) на 2 КБ RAM….
Читать далее »Анонс следующей части:
ARDUINOHACKS — мы превращаем 8-битный микроконтроллер в суперкомпьютер! ⚡💻 Пишите в комментариях, какие темы вас интересуют — мы разберем их на атомы!
Читать далее »Итоговый чек-лист ассемблерного мастера:
✔️ Пишет код на ассемблере для критических участков✔️ Использует макросы для ускорения разработки✔️ Умеет читать и изменять регистры напрямую✔️ Создает собственные библиотеки на чистом C✔️ Оптимизирует задержки через таймеры и прерывания✔️ Обрабатывает энкодеры на Pin Change Interrupts✔️ Эмулирует…
Читать далее »