Top.Mail.Ru

Таймеры с точки зрения железячника.

Режим ШИМ (Широтно-Импульсная Модуляция). Попробуем последовательно разобраться с таймерами, так как всё сразу понять проблематично. Начнём с вопроса - что такое ШИМ? ШИМ характерен тем, что частота сигнала постоянна, а коэффициент заполнения меняется. Не правда ли страшно звучит? Итак, что такое частота? Это характеристика, которая показывает, как часто сигнал переходит из состояния "0", в состояние ...

Продолжить чтение

Работа с TFT дисплеями на примере контроллера ILI9341.

Продолжу теорию работы с различным железом. Сейчас рассмотрим TFT-дисплеи, для конкретики рассмотрим дисплей на контроллере ILI9341. Как устроен дисплей. Основой дисплея (чаще всего) являются: TFT-матрица; Контроллер дисплея; Интерфейс; Преобразователи уровня; Питание. TFT-матрица. Прежде чем рассматривать дисплей определимся с цветами. Практически все матрицы - RGB, бывают BGR или что-то иное, но это только порядок следования цветов ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 8. Таймеры. Режим энкодера. Режимы Master/Slave.

Вступление. В завершение изучения таймеров, в частности таймеров общего назначения, рассмотрим оставшийся без внимания блок - Trigger controller: Таймер в режиме ведомого. Таймеры также могут работать в режиме ведомого с реакцией на внешнее событие, задаваемой битами SMS регистра TIMx_SMCR: 100 (Reset Mode): режим сброса, выбранный триггер сбрасывает счетчик; 101 (Gated Mode): режима шлюза, счетчик включен только при высоком ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 7. Таймеры общего назначения и модуль захвата.

Вступление. В предыдущем материале мы рассмотрели таймер общего назначения и использование каналов сравнения (скоро планирую подготовить материал с более объемными примерами), сегодня же к изучению предлагается второй компонент - каналы захвата. Каналы завхвата. Снова обратимся к диаграмме блока таймера общего назначения, где красным цветом выделены каналы захвата (до четырех для одного таймера) и разберем составные части ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 6. Таймеры общего назначения и модуль сравнения.

Вступление. Прошу прощения, если кого-то расстроил столь долгим перерывом, но конец года постоянно не оставляет ни минуты свободного времени. Ранее мы начали изучение таймеров в контроллерах Stm32 и рассмотрели базовый таймер, функционал которого ограничен увеличением счетчика (регистра CNT) и генерацией события (на которое можно "повесить" прерывание и DMA-запрос) при его переполнении. Переходим к следующему в иерархии ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 5. Система тактирования.

Вступление. На прошлом занятии мы начали рассматривать таймеры, а именно разобрали приемы работы с базовым таймером. Наименьший период генерации события переполнения, который можно получить, равен 1/8 мкс (при частоте тактирования таймера 8 МГц и нулевых значениях регистров предделителя и автоперезагрузки). Однако даже в такой конфигурации невозможно реализовать хоть какой-нибудь обработчик прерывания, который бы выполнялся с ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 4. Таймеры. Базовый таймер.

Вступление. На прошлом занятии мы закончили рассмотрение способов управления портами ввода-вывода с применением полностью шаблонной библиотеки Zhele. На сегодняшнем занятии будем рассматривать такую обширную тему, как таймеры, и начнем, конечно, с базовых их возможностей, реализованных в базовых таймерах. Таймеры в контроллерах Stm32. Все таймеры, представленные в микроконтроллерах Stm32, можно разделить на три категории, причем составляющих ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 3. Виртуальные порты ввода-вывода.

Вступление. На прошлом занятии мы рассмотрели управление портами и отдельными линиями ввода-вывода и подытожили тем фактом, что на практике было бы удобно иметь возможность "собрать" порт из отдельных линий, необязательно идущих подряд, необязательно одного физического порта. Такая возможность требуется в целях упрощения разработки печатной платы, а также в случае активного использования периферии, когда те или ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 2. Работа с портами ввода-вывода.

Вступление. На прошлом занятии мы развернули рабочее пространство, а также собрали первый проект из готового исходника. Сейчас предлагается рассмотреть возможности по управлению портами и линиями ввода-вывода, предоставляемые библиотекой. Все классы для работы с GPIO доступны в заголовочных файлах <ioports.h> и <iopins.h>. Интерфейс GPIO. Библиотека Zhele предоставляет два основных семейства классов для работы с портами и линиями ввода-вывода: PortX, где X - ...

Продолжить чтение

Stm32. Переходим на современный C++. Часть 1. Настройка рабочего пространства.

Вступление. В сети появляется всё больше материалов, посвященных применению языка C++ для программирования микроконтроллеров. Являясь сторонником этого направления, хочу поделиться теми знаниями и умениями, которые получил, в виде цикла статей-уроков с рассмотрением вопросов разработки для Stm32 на современном языке C++ с применением разрабатываемой мною библиотеки (или фреймворка) Zhele. Я не являюсь профессиональным разработчиком в принципе, с ...

Продолжить чтение