А.П.Евдокимов, Л.Л.Владимиров Программирование микроконтроллера К1986ВЕ92QI компании Миландр (1186478), страница 9
Текст из файла (страница 9)
Занесите программу в микроконтроллер с помощью программатора. Наблюдайте результат на экране ЖК-модуля. Измените числозначащих цифр после запятой числа на экране.636. Предельно аккуратно вставьте наконечник тонкой отвертки вшлиц винтового стержня построечного резистора R1 и сделайте несколько оборотов по движению или против движения часовой стрелки. Наблюдайте за изменениями значений оцифрованного напряженияна экране ЖК-модуля.КОНТРОЛЬНЫЕ ВОПРОСЫ1. Какой сигнал называют аналоговым?2. Какой сигнал называют цифровым?3.
Что такое дискретизация сигнала?4. Что такое квантование сигнала?5. Что понимают под кодированием при аналого-цифровом преобразовании?6. Сколько каналов у встроенного аналого-цифрового преобразователя микроконтроллера К1986ВЕ92QI?7. Сколько разрядов содержит код на выходе АЦП?8. Поясните логику работы программы, приведенной в даннойлабораторной работе.64ЛАБОРАТОРНАЯ РАБОТА 9.МОДУЛЬ УНИВЕРСАЛЬНОГО АСИНХРОННОГОПРИЕМОПЕРЕДАТЧИКАЦЕЛЬ РАБОТЫИзучить работу модуля универсального асинхронного приемопередатчика UART и научиться его настраивать.ТЕОРЕТИЧЕСКАЯ ЧАСТЬВ данной работе мы осуществим вывод информации из микроконтроллера на монитор персонального компьютера (ПК).
Одним извозможных вариантов такой передачи является схема, показанная нарисунке 9.1.Рисунок 9.1 – Схема соединений отладочной платы с персональнымкомпьютеромРасположение разъема для интерфейса RS-232 (COM-порт) отладочной платы показана на рисунке 1.3, поз. 3. Если персональныйкомпьютер имеет аналогичный разъем, то отладочная плата соединяется с ПК напрямую кабелем RS-232 9F-9F если у компьютера имеется только разъем для интерфейса USB, потребуется преобразовательинтерфейсов, который выполнен также в виде кабеля.
В последнемслучае после установки программного обеспечения у ПК появитсявиртуальный COM-порт, с которым можно работать также, как сCOM-портом, существующим физически.Для обмена информацией между компьютером и внешним терминалом существуют различные программы – мы воспользуемся свободно распространяемой программой Terminal v1.9b, интерфейс которой весьма прост и интуитивно ясен.65Рисунок 9.2 – Настройка интерфейса программы Terminal v1.9bПосле подключения кабелей и запуска программы следуетнастроить режим обмена: скорость обмена Baud rate, допустим, 115200 бод; количество бит в одном пакете данных Data bits – 8; проверка данных на четность Parity – none (отсутствует); количество стоповых битов Stop bits – 1; управление потоком данных Handshaking – none (отсутствует).Далее следует нажать кнопку Connect (соединить) и выбрать из выпадающего меню COM-порт, по которому будет осуществляться обмен.Поле, в котором будет располагаться получаемая компьютероминформация, также подлежит настройке.Рисунок 9.3 – Настройка поля приема информацииДля того чтобы передаваемые символы (буквы, цифры, пробелыи т.п.) отображались привычным для нас образом, выберем кодировкуASCII; для контроля приходящих кодов, которые будут располагатьсяв правой части экрана, можем выбрать Dec (десятеричный), Hex(шестнадцатеричный), Bin (двоичный) либо не выбирать ничего.Счетчик Counter подсчитывает, сколько раз тот или иной символ былполучен компьютером.
Код подсчитываемого символа, например, 13(перевод строки), выставляется вручную. Сбрасывается счетчик подсчета символов кнопкой Reset Counter. Очистить поле приема информации можно кнопкой CLEAR.Теперь поговорим о микроконтроллере. Модуль универсальногоасинхронного приемопередатчика UART (Universal AsynchronousReceiver-Transmitter) представляет собой периферийное устройствомикроконтроллера (найдите его на рисунке 1.1). Модуль передает информацию побитно, для чего преобразует данные, передаваемые напериферийное устройство, из параллельной в последовательную фор66му. Получает информацию также побитно, для чего преобразует данные, полученные от периферийного устройства, из последовательнойв параллельную форму.Микроконтроллер содержит два однотипных блока: UART1 иUART2.
Для передачи информации от каждого блока необходимо трипроводника: по одному осуществляется передача данных (transmit), повторому – прием (receive); третий провод – земля (ground). В таблице9.1 приведено распределение функций UART по выводам микроконтроллера. Обратим внимание на то, что функции UART относятсяк альтернативным либо переопределенным функциям порта и нуждаются в настройке.Таблица 9.1 – Распределение функций UART по линиям портови выводам микроконтроллера К1986ВЕ92QIЛинияпортаВыводмикроконтр.PA6PA7PB0PB1PB5PB6PD0PD1PD7PF0PF157564344505131322923Цифровая функцияАльтернативная––––UART1_TXDUART1_RXDUART2_RXDUART2_TXD–––ПереопределеннаяUART1_RXDUART1_TXDUART1_TXDUART2_RXD––––UART1_RXDUART2_RXDUART2_TXDДля обмена данными с компьютером выберем блок UART2 инастроим линии PF0 и PF1 порта F соответственно на прием (переопределенная цифровая функция UART2_RXD) и на передачу (переопределенная цифровая функция UART2_TXD).Наша первая программа будет совсем простой: передача по одному байту от микроконтроллера на ПК, тем не менее прием данныхот ПК микроконтроллером также будет описан.Для работы с блоком UART будет использована библиотекаMDR32F9Qx_uart.h, которая описывает структуру UART_InitTypeDef.Структура UART_InitTypeDef имеет следующие поля: UART_BaudRate – скорость передачи данных; UART_WordLength – длина слова в пакете; UART_StopBits – количество стоп-битов;67 UART_Parity – контроль четности; UART_FIFOMode – определяет режим работы буфера FIFO: осуществлять передачу по нескольку байт или побайтно; UART_HardwareFlowControl – включает/выключает аппаратныйконтроль потока.При работе с UART-контроллером применяются функции записи данных UART_SendData и чтения UART_ReceiveData.Рассмотрим программу, которая периодически посылает на ПКтекст «UART», переводит строку и делает «возврат каретки», т.е.
ставит курсор в начало строки.// Подключение необходимых библиотечных файлов#include <MDR32F9Qx_uart.h>#include <MDR32F9Qx_port.h>#include <MDR32F9Qx_rst_clk.h>// Определение функции задержки#define DELAY(T) for (i = T; i > 0; i--)int i; // Глобальная переменная счетчика в макроса DELAY()// Процедура инициализации портаvoid PortsInit(){// Включение тактирования порта FRST_CLK_PCLKcmd(RST_CLK_PCLK_PORTF, ENABLE);// Объявление структуры для инициализации портаPORT_InitTypeDef Nastroyka;// Инициализация порта B для функции UART// Настройка порта по умолчаниюPORT_StructInit(&Nastroyka);// Переопределение функции портаNastroyka.PORT_FUNC = PORT_FUNC_OVERRID;// Установка короткого фронтаNastroyka.PORT_SPEED = PORT_SPEED_MAXFAST;// Цифровой режим работы выводаNastroyka.PORT_MODE = PORT_MODE_DIGITAL;// Инициализация вывода PF1 как UART_TX (передача)Nastroyka.PORT_Pin = PORT_Pin_1;Nastroyka.PORT_OE = PORT_OE_OUT;PORT_Init(MDR_PORTF, &Nastroyka);// Инициализация вывода PF0 как UART_RX (прием)Nastroyka.PORT_Pin = PORT_Pin_0;Nastroyka.PORT_OE = PORT_OE_IN;PORT_Init(MDR_PORTF, &Nastroyka);}// Процедура инициализации контроллера UARTvoid UARTInit()68{// Включение тактирования UART2RST_CLK_PCLKcmd(RST_CLK_PCLK_UART2, ENABLE);// Объявление структуры для инициализации контроллера UARTUART_InitTypeDef UART_InitStructure;// Делитель тактовой частоты UART = 1UART_BRGInit(MDR_UART2, UART_HCLKdiv1);// Конфигурация UART// Скорость передачи данных – 115200 бодUART_InitStructure.UART_BaudRate = 115200;// Количество бит в посылке – 8UART_InitStructure.UART_WordLength = UART_WordLength8b;// Один стоп-битUART_InitStructure.UART_StopBits = UART_StopBits1;// Без проверки четностиUART_InitStructure.UART_Parity = UART_Parity_No;// Выключить работу буфера FIFO приемника и передатчика,// т.е.
передача осуществляется по одному байтуUART_InitStructure.UART_FIFOMode = UART_FIFO_OFF;// Разрешить прием и передачу данныхUART_InitStructure.UART_HardwareFlowControl =UART_HardwareFlowControl_RXE| UART_HardwareFlowControl_TXE;// Инициализация UART2 с заданными параметрамиUART_Init(MDR_UART2, &UART_InitStructure);// Включить сконфигурированный UARTUART_Cmd(MDR_UART2, ENABLE);}// Объявление главной функцииint main(void){PortsInit(); // Вызов функции инициализации портаUARTInit();// Вызов функции инициализации UART// Бесконечный циклwhile (1){UART_SendData(MDR_UART2, 'U'); // Передать символDELAY(50000);// ЗадержкаUART_SendData(MDR_UART2, 'A'); // Передать символDELAY(50000);// ЗадержкаUART_SendData(MDR_UART2, 'R'); // Передать символDELAY(50000);// ЗадержкаUART_SendData(MDR_UART2, 'T'); // Передать символDELAY(50000);// ЗадержкаUART_SendData(MDR_UART2, '\n'); // Перевод строкиDELAY(50000);// Задержка69UARTUART_SendData(MDR_UART2, '\r');DELAY(500000);}// Возврат каретки// Задержка}ПРАКТИЧЕСКАЯ ЧАСТЬ1.
Подключите отладочную плату к компьютеру так, как это делалось в предыдущих лабораторных работах.2. Соедините COM-порт отладочной платы с компьютером так,как это показано на рисунке 9.13. Подайте питание на плату.4. Запустите среду программирования Keil μVision.5. Запустите и настройте программу Terminal v1.9b.6. С помощью программатора занесите в микроконтроллер программу передачи информации на монитор компьютера. Наблюдайтерезультат на экране.7. Внесите изменение в передаваемое сообщение.8.
Измените скорость передачи сообщения.КОНТРОЛЬНЫЕ ВОПРОСЫ1. Как организовать обмен данными между микроконтроллероми персональным компьютером? Какие интерфейсы при этом используются?2. Как настроить интерфейс программы Terminal v1.9b для обмена данными между микроконтроллером и персональным компьютером?3. Как настроить порты микроконтроллера для приема и передачи информации с помощью UART?4. Как изменить скорость обмена данными между микроконтроллером и персональным компьютером?5. Поясните логику работы программы, приведенной в даннойлабораторной работе.70ЗАКЛЮЧЕНИЕПостоянно и стремительно развиваясь, микроконтроллерыпредоставляют разработчику систем управления всё бо́льшие возможности, но при этом и освоение микроконтроллеров становится сложнее.
За отведенное на изучение дисциплины время мы сумели сделатьлишь первые робкие шаги, но, уверен, что и они вызывают определенные затруднения.В последнее время издано немало методических пособий, помогающих освоить микроконтроллеры, названия некоторых из них приведены в библиографическом списке.Работа в среде проектирования Keil μVision, в том числе вопросы отладки программ, которые совсем не затрагиваются в настоящемпрактикуме, прекрасно изложены в работах [1], [2] и [4].Сведения о языке Си, в объеме, достаточном для программирования микроконтроллеров, приведены в учебно-методических пособиях [3] и [4].В работе [5] более подробно, чем обычно, описывается структура микроконтроллера, хотя, конечно, наиболее полное описание приведено в фирменной спецификации [9].Познакомиться с применением микроконтроллера в системахавтоматического регулирования можно в учебном пособии [6].Учебное пособие [7] поможет глубже понять механизмы прерываний в микроконтроллере.Расширить свои знания об аналого-цифровых преобразователяхможно, прочитав работы [1], [3], [6], [7], [8].Принцип действия универсального асинхронного приемопередатчика описан в работах [3], [4], 5], [8].Однако надо понимать, что сведения, изложенные в указанныхпособиях, невозможно зазубрить, они будут полезны лишь при условии активного освоения микроконтроллера путем написания собственных программ в среде программирования и проверки их на отладочной плате.Дальнейшее, более углубленное, изучение микропроцессорнойтехники предполагается в рамках магистерской программы подготовки.