Я увлекаюсь сборкой ПК в корпусах маленького формата SFF (small form factor) с 2018 года. Хобби отлично помогает отвлечься от рабочей рутины, потому что при скромных объемах нужно учитывать массу параметров — не только, скажем, мощность процессора и размеры материнской платы, но даже толщину оплетки кабелей питания. Иногда приходится выбирать, чем пожертвовать, чтобы установить дополнительный крохотный вентилятор для улучшения продуваемости.
DataArt @DataArt
Пользователь
Генерируем произвольные последовательности на выводах платы Raspberry Pi
18 min
18KTutorial
Автор: Николай Хабаров, Embedded Expert DataArt, евангелист технологий умного дома.
В этой статье я расскажу, как написать обычное user space-приложение на Python для современного ARM-процессора с ОС Linux для генерирования сложных последовательностей импульсов на выводах платы. Суть идеи — использовать DMA-модуль процессора для копирования из предварительно подготовленного буфера в памяти в GPIO с высокой точностью по времени.
Когда речь заходит о необходимости сгенерировать сложную последовательность импульсов, например, для шаговых двигателей, обычно используют старые добрые простенькие микроконтроллеры с установленной специальной операционной системой реального времени или вообще без операционной системы. Реализация при этом, в лучшем случае, написана на C++. Сейчас процессоры шагнули далеко вперед и имеют массу преимуществ: производительность, возможность использования операционной системы Linux со всей инфраструктурой и ПО, а также высокоуровневых языков программирования, таких как Python. И все же современные микроконтроллеры для генерирования сложных последовательностей на выводах GPIO, как правило, не используют.
Я реализовал генерацию импульсов для управления шаговыми двигателями проекта PyCNC — проекта контроллера машин с ЧПУ, станков, 3D-принтеров, полностью написанного на Python и запускаемого на современном ARM-процессоре на плате Raspberry Pi.
Статья может быть полезна желающим реализовать генерацию сложных последовательностей установки уровней на выводах одного или нескольких GPIO на других высокоуровневых языках программирования, используя DMA-модули других процессоров.
+6
Information
- Rating
- Does not participate
- Location
- США
- Date of birth
- Registered
- Activity