Использование микроконтроллеров 1986ве4у в учебной и лабораторной практике

УДК: 621.32

Аксенов И.В., Буныгин Е.В., Волков С.В., Князьков А.В., Колдов А.С., Максимов П. А.

ФГБОУ ВО «Пензенский государственный университет», Пенза, Россия

ИСПОЛЬЗОВАНИЕ МИКРОКОНТРОЛЛЕРОВ 1986ВЕ4У В УЧЕБНОЙ И ЛАБОРАТОРНОЙ ПРАКТИКЕ

Введение. В наши дни цифровые системы, давно и прочно вошедшие в нашу жизнь, становятся всё более автоматизированными, и в своем развитии стремятся к полной автономности [1, 2], что неизбежно приведет к появлению полноценных автоматических систем, работающих без какого-либо вмешательства человека. В русле данной тенденции в последнее десятилетие также все больше растет и роль управляющих систем, построенных на базе цифровых устройств [3, 4, 5]. В частности - микроконтроллеров, выполняющих логические преобразования сигналов в соответствии с ранее записанным исходным кодом программы, направленные на реализацию функций, необходимых в работе той или иной системы.

Используются микроконтроллеры повсеместно - в системах приёма и передачи информации, в измерительной и вычислительной технике, в составе почти любой, даже самой простой системы управления [6, 7]. В связи с таким широким распространением устройств на микроконтроллерах в самых различных областях техники и жизни человека, в последнее время растет и потребность в специалистах, умеющих программировать такие устройства и разрабатывать различные системы на их основе. Такой специалист должен не просто владеть языками и навыками программирования, но и знать схемотехнику микроконтроллеров для решения конкретных технических задач. Поэтому при обучении специалистов данной направленности необходимо предоставить им возможность работать непосредственно с исполняющим устройством и видеть результаты выполнения поставленной задачи.

Одним из решений данного вопроса было создание итальянской компанией Arduino отладочных плат, которые в дальнейшем получили мировую известность и распространение. Но для подготовки настоящего специалиста они не подходят, так как имеют упрощённую систему программирования, которая находиться в отрыве от многих действий, определяющих реальную разработку и оптимизацию устройства на базе микроконтроллера.

На данный момент существует множество компаний, производящих отладочные платы для микроконтроллеров, подходящие для программирования "с нуля" [8]. Одни из самых известных - компании Atmel, Microchip и STMicroelectronics. Но в связи с тем, что они являются иностранными, появляется существенный недостаток для использования их разработок в учебных целях - техническая документация на их продукты, разумеется, представлена на иностранном языке, равно как и взаимодействие со службой технической поддержки. Это сильно ограничивает возможности обучающихся в решении вопросов, связанных с программированием, а также замедляет и усложняет работу составителей лабораторных практикумов и учебных пособий. Отдельно следует отметить сложности в достижении договорённостей по поставке комплектов отладочных плат в Российские образовательные учреждения.

В связи с активно происходящим в настоящий момент импортозамещением, в том числе в области электроники и микроэлектроники, разумно рассмотреть демонстрационные комплекты отладочных плат российской компании «Миландр» г. Зеленоград.

Несмотря на то, что данная компания молода по сравнению с иностранными производителями (основана в 1993 году), на сегодняшний день она удовлетворяет начальные потребности разработчиков в элементной базе и отладочных комплектах для микроконтроллеров. В настоящее время компания активно занимается образовательной деятельностью.

Рассмотрим один из микроконтроллеров компании «Миландр» - 1986ВЕ4У [9], на основе которого разработана отладочная плата [10].

Ядро:

— ARM 32-битное RISC ядро Cortex™-M0, тактовая частота до 36 МГц.

— Умножение за один цикл.

Память:

— встроенная энергонезависимая память программ FLASH типа размером 128 Кбайт;

— встроенное ОЗУ размером 16 Кбайт.

Питание и тактовая частота:

— внешнее питание 2,2...3,6В;

— встроенный регулятор напряжения на 1,8В для питания ядра; — встроенные схемы контроля питания;

— встроенный домен с батарейным питанием;

— встроенный подстраиваемый RC генератор HSI, 8 МГц;

— встроенный подстраиваемый RC генератор LSI, 4 0 КГц;

— внешний осциллятор HSE, 2.16 МГц;

— внешний осциллятор LSE, 32 КГц;

— встроенный умножитель тактовой частоты PLL для ядра.

Режим пониженного энергопотребления:

— режим Sleep, DEEPSLEEP и Standby;

— батарейный домен с часами реального времени и регистрами аварийного сохранения.

Аналоговые модули:

— 2 4-х разрядный 2й АЦП (до 8 каналов);

— 12-ти разрядных АЦП (до 8 каналов) с измеряемым диапазон входного напряжения от 0 до 3,6В;

— температурный датчик;

— 12-ти разрядный ЦАП;

— компаратор.

Периферия:

— контроллер прямого доступа в память DMA с функциями передачи Периферия-Память, Память-Память;

— контроллеры интерфейсов UART, SSP;

— до 36 пользовательских линий ввода-вывода;

— два блока 16-ти разрядных таймеров с 4 каналами захвата событий и ШИМ;

— 2 сторожевых таймера;

— блок подсчета CRC с изменяемым полиномом;

— контроллер системной частоты.

Режим отладки:

— последовательный отладочный интерфейс SWD.

Отладочный комплект для микроконтроллера

1986ВЕ4У (рис. 1) и программное обеспечение можно заказать у производителя

(https://ic.milandr.ги/).

Рисунок 1 - Отладочный комплект для микроконтроллера 1986ВЕ4У

Принцип построения цикла лабораторных работ на основе микроконтроллера

Курс лабораторных работ должен состоять из набора задач, при решении каждой из которых уча-

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

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

Для программирования микроконтроллера

1986ВЕ4У можно использовать KeiluVision 5 - мощную среду разработки, в которой реализованы все функции, необходимые для написания и последующей отладки программы. Она проста для освоения и удобна в использовании.

Начальной ступенью в обучении написанию программ для микроконтроллера будет лабораторная работа, знакомящая учащегося с принципами создания программного кода в используемой среде, основными принципами программирования и структурой программы.

Примером работы может быть разработка программы, реализующей управление портами ввода-вывода микроконтроллера. Для реализации поставленной задачи она использует несколько ключевых слов и функций из двух библиотек.

Препроцессорные директивы подключения библиотек необходимых драйверов и специализированный для МК оператор Typedef, который определяет новое имя структуры. В данном случае это структура порта:

#include "MDR32F9Qx_config.h" #include "MDR32F9Qx_port.h" #include "MDR32F9Qx_rst_clk.h" PORT_InitTypeDef LED;

Функции включения тактирования, параметры настройки структуры порта, а также функцию подачи на вывод высокого/низкого логического уровня:

RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTA, ENABLE); LED.PORT_Pin = PORT_Pin_11; LED.PORT_OE = PORT_OE_OUT; LED.PORT_FUNC = PORT_FUNC_PORT; LED.PORT_MODE = PORT_MODE_DIGITAL; LED.PORT_SPEED = PORT_SPEED_SLOW; PORT_Init(MDR_PORTA, &LED) PORT_SetBits(MDR_PORTA, PORT_Pin_11) Минимальный набор функций, которые потребуется применить, умеренное количество строк кода, а также простая структура программы позволят обучающимся без больших трудностей сделать первые шаги в программировании. Упор будет сделан на использование инструментария среды при написании исходного кода, а также усвоении структуры и принципов написания программы для микроконтроллера.

Вторая лабораторная работа ставит более сложную задачу. В ней необходимо использовать один или несколько периферийных блоков, присутствующих на отладочной плате, применяя операторы и функции, а также принцип построения программы, изученные в предыдущей лабораторной работе. Например, обучающемуся предстоит использовать АЦП и его сторожевой таймер для защиты от критических значений напряжения входного сигнала. Количество строк программного кода увеличивается, программа усложняется. Но при этом принцип построения остаётся тем же самым, сохраняются п. 1 и 2 из предыдущей лабораторной работы. В пункт 1 добавляются новые библиотеки, операторы Typedef для структур АЦП, а также переменные, ответственные за предельный высокий и низкий уровни напряжения на АЦП:

#include "MDR32F9Qx_adc.h" #include "MDR32F9Qx_it.h" #include "MT_107_MELT.h"

_IO uint32_t H_Level = 0x900;

_IO uint32_t L_Level = 0x800;

ADC_InitTypeDef sADC;

ADCx_InitTypeDef sADCx;

В пункте 2 также присутствуют изменения. Для работы АЦП вместо использования нестабильной тактовой частоты от внутреннего генератора, целесообразно использовать схему тактирования от внешнего высокостабильного задающего генератора. Таким образом, необходимо настроить тактирование от данного источника. В итоге вместо одной функции получаем более сложную структуру: RST_CLK_DeInit();

RST_CLK_HSEconfig(RST_CLK_HSE_ON); if(RST_CLK_HSEstatus() == ERROR) while(1);

RST_CLK_CPU_PLLcon-fig(RST_CLK_CPU_PLLsrcHSEdiv1, RST_CLK_CPU_PLLmul4);

RST_CLK_CPU_PLLcmd(ENABLE); if(RST_CLK_CPU_PLLstatus() == ERROR) while(1);

RST_CLK_CPUclkPrescaler(RST_CLK_CPUclkDIV1); RST_CLK_CPU_PLLuse(ENABLE); RST_CLK_CPUclkSelection(RST_CLK_CPU-clkCPU_C3);

RST_CLK_PCLKcmd((RST_CLK_PCLK_RST_CLK RST_CLK_PCLK_ADC | RST_CLK_PCLK_PORTA),ENABLE); RST_CLK_PCLKcmd(RST_CLK_PCLK_PORTB, ENABLE) Отдельно стоит отметить включение контроллера прерываний, работа с которым в подавляющем большинстве случаев является неотъемлемой частью решения технических задач:

SCB->AIRCR = 0x05FA0000 | ((uint32_t)0x50 0); NVIC->ICPR[0] = 0xFFFFFFFF; NVIC->ICER[0] = 0xFFFFFFFF; NVIC->ISER[0] = (1<<ADC_IRQn); В заключительной части программы, помимо настройки порта путём заполнения его структуры, дополнительно появляется настройка АЦП: ADC_DeInit(); ADC_StructInit(&sADC); ADC_Init (&sADC); ADCx_StructInit (&sADCx);

sADCx.ADC_ClockSource=ADC_CLOCK_SOURCE_CPU; sADCx.ADC_SamplingMod=ADC_SAM-PLING_MODE_CICLIC_CONV;

sADCx.ADC_ChannelSwitching = ADC_CH_SWITCH-ING_Disable;

sADCx.ADC_ChannelNumber=ADC_CH_ADC7; sADCx.ADC_Channels=0;

sADCx.ADC_LevelControl=ADC_LEVEL_CONTROL_En-able;

sADCx.ADC_LowLevel=L_Level; sADCx.ADC_HighLevel=H_Level;

sADCx.ADC_VRefSource=ADC_VREF_SOURCE_INTER-NAL;

sADCx.ADC_IntVRefSource=ADC_INT_VREF_SOURCE_ INEXACT;

sADCx.ADC_Prescaler=ADC_CLK_div_327 68; sADCx.ADC_DelayGo= 0x7; ADC1_Init (&sADCx);

ADC1_ITConfig((ADCx_IT_END_OF_CONVERSION | ADCx_IT_OUT_OF_RANGE), ENABLE); ADC1_Cmd (ENABLE);

Заключительной лабораторной работой первого цикла может стать работа с одним из реализованных на отладочной плате интерфейсов передачи данных. Например, работу с UART-интерфейсом можно изучить, решая задачу по приему/передаче символа или сообщения. Здесь вновь можно отметить, что структура построения программы сохраняется: сначала библиотеки, затем макросы, после - основное тело программы с настройкой источника сигнала тактирования и настройкой выводов задействованных портов, инициализация необходимых структур, и в итоге - отправка сообщения по каналу. Добавляются две ранее не использованных библиотеки, причём одна из них является не библиотекой драйвера, а библиотекой для стандартных операций ввода-вывода, а также макросы и переменные, связанные с интерфейсом UART и целью работы:

#include <stdio.h> #include "MDR32F9Qx uart.h"

PUTCHAR_PROTOTYPE int fputc

#define FILE *f) #define

printf

static PORT_InitTypeDef PortInit; static UART_InitTypeDef UART_InitStructure; После выбора источника опорной частоты и настройки порта производятся дополнительные настройки интерфейса UART для работы в режиме приема и передачи:

PortInit.PORT_OE = PORT_OE_OUT;

PortInit.PORT_Pin = PORT_Pin_0;

PORT_Init(MDR_PORTB, &PortInit);

PortInit.PORT_OE = PORT_OE_IN;

PortInit.PORT_Pin = PORT_Pin_1;

PORT_Init(MDR_PORTB, &PortInit); Далее идёт настройка структуры самого UART: UART_InitStructure.UART_BaudRate = 115000; UART_InitStructure.UART_WordLength =

UART_WordLength8b;

UART_InitStructure.UART_StopBits =

UART_StopBits1;

UART_InitStructure.UART_Parity = UART_Par-ity_No;

UART_InitStructure.UART_FIFOMode =

UART_FIFO_ON;

UART_InitStructure.UART_HardwareFlowControl = UART_HardwareFlowControl_RXE | UART_Hardware-FlowControl_TXE;

UART_Init(MDR_UART1, &UART_InitStructure); UART_Cmd(MDR_UART1, ENABLE);

В конце программы, после всех стандартных действий, порядок которых сохраняется и в данной лабораторной работе, идёт отправка написанного сообщения по каналу связи:

DEBUG_PRINTF("Hello World!!!\r\n"); Стоит отметить важную и часто используемую функцию, описанную после основной программы и сообщающую о совершении того или иного события. С ее помощью реализуется передача данных, и она использует флаг. В нашем случае функция сообщает об окончании передачи:

PUTCHAR_PROTOTYPE {

UART_SendData(MDR_UART1, (uint8_t) ch);

while (UART_GetFlagStatus(MDR_UART1,

UART_FLAG_TXFF) == SET);

return (ch);

}

Второй цикл обучения будет также состоять из 3-6 лабораторных работ, но на этом этапе обучающемуся предстоит использовать навыки работы с микроконтроллером и его периферией. Эти работы будут содержать задачи по сопряжению внешних устройств с МК. Примером может служить подключение к контроллеру полупроводникового температурного датчика. Причем при составлении программы необходимо на основе входного сигнала АЦП программно реализовать математические функции температурной зависимости сопротивления датчика, а также использовать формулы преобразования получаемых данных в температурные значения.

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

По усмотрению составителя курса количество лабораторных работ может изменятся от 3 до 6 в зависимости от сложности самих лабораторных работ, а также от сложности индивидуальных заданий к ним.

Составитель может увеличить количество работ, обеспечивая обучающимся получение большого объема знаний по программированию различной периферии микроконтроллера. Если необходимо привить обучающимся большее количество навыков, то составителю лучше ограничить количество работ и, соответственно, число изучаемой периферии, но при этом усложнить поставленные задачи. Таким образом, корректируя количество и объем работ, составитель будет задавать направление развития учащегося в данной области и на этой основе формировать второй цикл обучения, обеспечивая плавный переход от одних навыков к другим.

Волков 61-68. / Труды

/ Труды

ЛИТЕРАТУРА

1. Современные технические решения и проблемы в обеспечении комплексной безопасности С.В., Кулапин В.И., Светлов А.В. / Надежность и качество сложных систем. 2014. № 4 (8). С

2. Реализация цифровых устройств на ПЛИС. Бахмутский А.А., Волков С.В., Колдов А.С. международного симпозиума Надежность и качество. 2007. Т. 2. С. 11-12.

3. Система контроля мобильных средств связи. Волков С.В., Князьков А.В., Кожичкин Е.Ю. международного симпозиума Надежность и качество. 2015. Т. 2. С. 11-13.

4. Система автоматического контроля и управления параметрами объекта. Волков С.В., Колдов А.С., Захарова О.В., Чапаев В.С. / Труды международного симпозиума Надежность и качество. 2014. Т. 2. С. 91-93.

5. Принципы построения систем контроля удаленных объектов на базе GSM-канала. Бахмутский А.А., Волков С.В., Сазыкин П.А. / Труды международного симпозиума Надежность и качество. 2007. Т. 2. С. 12-14.

6. GSM-телеметрия. Волков С.В., Дудоров М.Ю., Колдов А.С., Чапаев В.С. симпозиума Надежность и качество. 2013. Т. 2. С. 57-59.

7. GSM-информатор утечки газа. Волков С.В., Никулин Е.Ю., Чапаев В.С. симпозиума Надежность и качество. 2011. Т. 2. С. 115-117.

8. Университетская программа Х^ШХ в образовательном процессе Волков С.В., Колдов А.С.: Университетское образование (МКУ0-2013) сборник статей XVII Международной научно-методической конференции, посвященной 70-летию образования университета. Под редакцией В. И. Волчихина, Р. М. Печер-ской. 2013. С. 99-100.

9. Спецификация на микросхему 1986ВЕ4У.

10. https://ic.milandr.ru/upload/iblock/8aa/8aa1f04a8 65fb53f2284e6f88 6fea8 9c.pdf

11. Отладочный комплект для микроконтроллера 1986ВЕ4У.

12. https://ic.milandr.ru/upload/iblock/7 07/7 07 6af11e4 4 6516f6835cd6a0104c1a0.pdf

/ Труды международного / Труды международного

УДК 378.147: 37.036.5 Юрков1 Н.К., Якимов2 А.Н.

гФГБОУ ВО «Пензенский государственный университет», Пенза, Россия

2ФГАОУ ВО «Санкт-Петербургский государственный университет аэрокосмического

приборостроения», С.-Петербург, Россия

РАЗВИТИЕ ТВОРЧЕСКИХ СПОСОБНОСТЕЙ В РАМКАХ ВЫСШЕГО ТЕХНИЧЕСКОГО ОБРАЗОВАНИЯ

Рассмотрен подход к развитию творческих способностей студентов в рамках высшего технического образования, основанный на активных формах проведения занятий, включая компьютерное моделирование Ключевые слова:

СТУДЕНТЫ, ТВОРЧЕСКАЯ СПОСОБНОСТЬ, МОДЕЛИРОВАНИЕ