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

No Picture

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

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

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

No Picture

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

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

Часть 20: Создание собственной библиотеки на чистом C

No Picture

Мы дошли до момента, когда стандартные Arduino-библиотеки становятся слишком громоздкими. Создаем свою библиотеку на чистом C с минимальным оверхедом. Структура библиотеки: encoder.h: encoder.c: Использование:

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

Часть 19: Оптимизация задержек — от _delay_ms() к ассемблеру

No Picture

Стандартная функция _delay_ms() использует циклы, которые считают такты. Но она блокирует процессор и не позволяет делать ничего другого. Хак: Используем прерывания таймера для создания неблокирующих задержек. Код на ассемблере для таймера 0: Использование в C++:

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

Часть 18: Обработка данных с энкодеров на ассемблере

No Picture

Энкодеры — это устройства, которые превращают вращение в последовательность импульсов. Обычно мы опрашиваем их в loop(), но это медленно. Хак: Используем Pin Change Interrupts для детекции изменения состояния на порту. Это позволяет обрабатывать до 4 энкодеров одновременно без потери импульсов. Ассемблерный код…

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

Часть 17: Ассемблерные макросы — пишем код быстрее

No Picture

Макросы в ассемблере позволяют создавать свои инструкции, которые раскрываются в несколько команд. Это ускоряет написание кода и улучшает читаемость. Макрос для установки нескольких пинов за один такт: Макрос для задержки в микросекундах:

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

Часть 16: DMA — Прямой доступ к памяти без участия процессора

No Picture

Мы добрались до технологии, которая кардинально меняет правила игры. DMA (Direct Memory Access) — это периферийный модуль, который может пересылать данные между памятью и периферией без участия CPU. Это как если бы у вас появился второй процессор, который занимается только пересылкой…

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

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

No Picture

Мы прошли путь от простых проектов до ассемблерного программирования и внешней памяти. В следующих частях: Помните: Настоящие хакеры знают, что происходит на уровне регистров. Теперь вы — один из них! ⚡ ARDUINOHACKS — жжем биты, а не платы!

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

Часть 15: Ассемблер для таймеров и прерываний

No Picture

На ассемблере мы можем настроить таймеры так, как это невозможно сделать через Arduino API. Пример: Таймер 1 в режиме CTC с прерыванием

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

Часть 14: Внешняя SRAM — расширяем память за пределы 2 КБ

Внутренней SRAM в 2 КБ на ATmega328P катастрофически не хватает для проектов с большими массивами данных: аудио-буферы, графические фреймбуферы, логирование GPS-треков.  Решение: подключаем внешнюю SRAM, например Microchip 23LC512 на 64 КБ через SPI.  Схема подключения: Пин 23LC512 Подключение к Arduino CS…

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