Программирование микроконтроллеров 1986ВЕ9x компании Миландр. Контрольные вопросы для самопроверки. Предназначено для студентов технических высших учебных заведений очной и заочной формы обучения, аспирантов, инженерно-технических работников
8 При освоении простейших микроконтроллеров для создания программного проекта зачастую достаточно изучить соответствующую документацию. Однако такой метод, по мнению автора, слабо применим при работе с 32-разрядными микроконтроллерами. Во-первых, он требует высоких временных затрат в виду большого объема информации. Во-вторых, для конфигурации периферии микроконтроллера необходимо вносить множество данных в различные регистры, не имея порой обратной связи. В таких случаях отсутствуют средства диагностики – нет возможности отследить место потери сигнала или некорректную работу подситемы, то есть приходится работать почти «вслепую». Для изучения 32-разрядных микроконтроллеров отправной точкой должны служить работающие проекты, покрывающие некоторую ограниченную функциональность микроконтроллера, в комплексе с документацией и инструментами анализа. Изучение микроконтроллеров происходит путем внесения в программы проектов небольших изменений и постоянного контроля их работоспособности. Такой метод называется обратной разработкой, или, как принято его называть в зарубежной литературе, reverse engineering. Комлексные проекты при этом могут создаваться путем синтеза исходных кодов базовых проектов. Данная книга посвящена отечественным микроконтроллерам семейства 1986ВЕ9х разработки и производства компании «Миландр». Книга представляет собой практикум по аппаратному программированию и содержит семь тем, охватывающих следующие основные аспекты в работе с микроконтроллерами: понятие отладочной платы для микроконтроллера, понятие среды программирования; использование портов ввода-вывода общего назначения; работа с аналого-цифровым преобразователем; работа с цифро-аналоговым преобразователем; реализация широтно-импульсной модуляции; использование аппаратных таймеров/счетчиков в режиме захвата; использование часов реального времени и батарейного домена. Широко используется метод обратной разработки, а также механизм прямого доступа к памяти применительно к различным периферийным устройствам.
9 Вопросы, связанные с программированием различных интерфейсов, не рассматриваются: предполагается издание отдельной книги на эту тему. К каждой работе подготовлены примеры проектов на языке Си, исходный код которых подробно прокомментирован. Из-за значительного объема разместить полные исходные коды проектов в книге не представляется возможным. Проекты могут быть бесплатно скачаны в официальной группе компании «Миландр» социальной сети «ВКонтакте» по ссылке [2]. Автор придерживается следующих основных принципов при программировании микроконтроллеров, что нашло отражение в данной книге: 1. Используется язык Си. Язык Си является практически безальтернативным вариантом при программировании современных микроконтроллеров. 2. Не используются возможности языка С++. Это обусловлено тем, что в программах на языке С++, построенных с применением объектноориентированного подхода, необходимо задействовать динамическое распределение памяти, что неизбежного приводит к снижению надежности программного обеспечения. 3. Не используется ассемблер. Это обусловлено тем, что при программировании мощных современных микроконтроллеров применение ассемблера стало неактуальным. Поэтому тратить время и силы читателя на изучение заведомо устаревших подходов нерационально. 4. Используется система программирования Keil μVision MDK-ARM. Данная система программирования выбрана исходя из ее популярности, развитости функционала, а также возможности бесплатно использовать ее в пробном режиме. 5. Используется стандартная периферийная библиотека. В учебных примерах работа с периферийными устройствами практически полностью осуществляется через стандартную периферийную библиотеку от компании «Миландр». Прямое обращение к регистрам устройств почти не используется. Это упрощает и ускоряет процесс знакомства с микроконтроллером. 6. Используется операционная система реального времени Keil RTX. RTX представляет собой систему с вытесняющей многозадачностью и развитыми средствами синхронизации задач. Применение такой системы позволяет наиболее полно и рационально задействовать возможности микроконтроллеров с архитектурой ARM32.
10 По мнению автора, такой подход позволяет быстро освоить основы программирования микроконтроллеров, научившись создавать надежный и красивый программный код. Предполагается, что читатель хотя бы немного знаком с программированием на языке Си, причем необязательно применительно к микроконтроллерам. Для работы требуется следующее основное оборудование: 1. Отладочный комплект для микроконтроллера К1986ВЕ92QI, выпускаемый компанией «Миландр». 2. Программатор-отладчик MT-Link, выпускаемый фирмой MT System (г. Санкт-Петербург). Подойдут и другие программаторы для микроконтроллеров с архитектурой ARM32, например: J-Link, ST-Link, Keil ULink2. Естественно, перед приобретением программатора нужно уточнить у производителя, совместим ли он с микроконтроллерами семейства 1986ВЕ9х. 3. Цифровой осциллограф-приставка USB-Oscill, выпускаемый в г. Одесса [3]. Можно использовать и другие цифровые или аналоговые осциллографы с полосой пропускания не менее 2 МГц. Осваивать программирование микроконтроллеров без осциллографа затруднительно. 4. Периферийный модуль, подключаемый к отладочной плате с помощью штыревых разъемов и соединительных проводов. Модуль включает в себя светодиоды, потенциометр и лампу накаливания. При его отсутствии отдельные области модуля вполне могут быть смонтированы самостоятельно. О программном обеспечении, которое потребуется при работе с книгой, говорится в разделе «Установка программного обеспечения». Здесь лишь отметим, что все используемое программное обеспечение, за исключением операционной системы MS Windows, доступно бесплатно.