Что дальше на ARDUINOHACKS?

No Picture

ARDUINOHACKS — мы не просто используем микроконтроллеры, мы переопределяем их возможности! Продолжение следует… Ваша фантазия — единственный предел! 🚀💡

Читать далее »

Итоговый чек-лист хакера экстра-класса:

No Picture

✔️ Управляет пинами как входом и выходом без pinMode()✔️ Пишет математические функции на ассемблере для скорости✔️ Перехватывает системные прерывания✔️ Создал собственную RTOS для многозадачности✔️ Выполняет БПФ в реальном времени на 8-битном контроллере✔️ Использует ассемблер для оптимизации критических участков

Читать далее »

Часть 25: Процессинг звука — создаем вокодер на Arduino

No Picture

Мы можем анализировать и синтезировать звук в реальном времени, используя БПФ (быстрое преобразование Фурье). Реализация БПФ на 64 точки (ассемблерная оптимизация): Использование в C++ для визуализации звука:

Читать далее »

Часть 24: Создаем свою RTOS на Arduino (Кооперативная многозадачность)

No Picture

Да, у нас всего 2 КБ RAM и 16 МГц, но мы можем создать операционную систему реального времени, которая позволит выполнять несколько задач параллельно! Структура RTOS: Расширенная RTOS с прерываниями (вытесняющая многозадачность):

Читать далее »

Часть 23: Перехват прерываний — создаем свой обработчик

No Picture

Иногда нужно перехватить прерывание, которое уже используется системой (например, прерывание таймера 0 используется для millis()). Мы можем создать свой обработчик, который будет вызываться до стандартного. Техника «векторного перехвата»:

Читать далее »

Часть 22: Ассемблерный математический сопроцессор

No Picture

Arduino использует программную библиотеку для работы с float (числами с плавающей точкой), которая занимает ~4 КБ Flash и выполняется медленно. Мы напишем свои функции на ассемблере для критических вычислений. Умножение двух 16-битных чисел (быстрый алгоритм): Использование в C++:

Читать далее »

Часть 21: Двунаправленные порты — читаем и пишем на одних пинах

No Picture

В реальных проектах часто нужно, чтобы пин работал и как вход, и как выход в разное время. Например, для протокола 1-Wire (DS18B20) или для динамического управления LED-матрицей. Проблема стандартного подхода: pinMode(pin, OUTPUT);digitalWrite(pin, HIGH);// …pinMode(pin, INPUT);int val = digitalRead(pin);…

Читать далее »

Добро пожаловать в новый, еще более глубокий уровень ARDUINOHACKS!

No Picture

Добро пожаловать в новый, еще более глубокий уровень ARDUINOHACKS! Сегодня мы разберем темы, о которых молчат даже продвинутые Arduino-гуру. Мы научимся работать с двунаправленными портами, создадим ассемблерный математический сопроцессор, освоим перехват прерываний и даже построим собственный RTOS (операционную систему реального времени) на 2 КБ RAM….

Читать далее »

Анонс следующей части:

No Picture

ARDUINOHACKS — мы превращаем 8-битный микроконтроллер в суперкомпьютер! ⚡💻 Пишите в комментариях, какие темы вас интересуют — мы разберем их на атомы!

Читать далее »

Итоговый чек-лист ассемблерного мастера:

No Picture

✔️ Пишет код на ассемблере для критических участков✔️ Использует макросы для ускорения разработки✔️ Умеет читать и изменять регистры напрямую✔️ Создает собственные библиотеки на чистом C✔️ Оптимизирует задержки через таймеры и прерывания✔️ Обрабатывает энкодеры на Pin Change Interrupts✔️ Эмулирует…

Читать далее »