Современная электроника №9/2018
ИНЖЕНЕРНЫЕ РЕШЕНИЯ 57 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 9 2018 В программах для F067 указанные интервалы времени Δ t задавались с помощью таймеров (Т0 и таймера мас- сива счётчиков PCA). На монитор ком- пьютера выводились результаты АЦП через каждый интервал времени Δ t по 8 каналам, т.е. строка, состоящая из 8 шестизначных чисел с запятой после первой цифры (например, 1,23456 В). В программах для LB12 использовалась более простая процедура без исполь- зования таймеров, позволяющая оце- нить время, соответствующее 1, 2, 4, 8, 16 или 32 осреднениям. Вместо одно- кратного получения и вывода 8 шести- значных чисел производился десяти- кратный цикл, т.е. на монитор выво- дились 10 строк с результатами по 8 шестизначных чисел в строке. Перед выводом на монитор в программе на компьютере включался программный таймер. После полного вывода 10 строк таймер выключался. Для нахождения Δ t (в однократном цикле) время по тай- меру ( Т ) просто делилось на 10. Если, например, время Т составляло 0,22 с, то Δ t = 0,022 с. Использование 10-кратного цикла даёт двойное преимущество по сравнению с однократным. Во-первых, выборка, состоящая из 10 строк по 8 чисел является более репрезентатив- ной, чем выборка из 8 чисел. Во-вторых, 10-кратный цикл увеличивает время Т в 10 раз, что позволяет более точно опре- делить интервал Δ t , подсчитанный как среднее ( Т /10). Перейдём непосредственно к опи- санию программ (программа для ком- пьютера приведена в дополнитель- ных материалах к статье на сайте www.soel.ru : исходный текст – In8U.clw, исполняемый файл – In8U.exe, файл проекта – In8U.prj). При запуске про- граммы на экран монитора выводит- ся окно, в верхней левой части которо- го расположено поле ввода количества осреднений N , а внизу – две кнопки: «Выход» и «Запуск/Продолжить». Поль- зователь вводит число N , нажимает кнопку «Запуск/Продолжить», и через некоторое время на экран выводятся результаты. Эта программа передаёт по интерфейсу USB массив из 32 одно- байтных элементов (A[32]), первый из которых содержит число N (А[1]=N), а остальные зарезервированы для поль- зовательских целей. Следует обратить внимание, что индексация массива на языке Clarion начинается с 1. Далее в 10-кратном цикле программа прини- мает массив из 32 однобайтных эле- ментов, первые 24 из которых содер- жат информацию о напряжении, изме- ренном АЦП LB12 по 8 каналам (т.е. по 3 байта на канал), а остальные байты зарезервированы. Программа исполь- зует функции API обращения к интер- фейсу USB из пакета USBXpress, бес- платно поставляемого компанией Silicon Laboratories. Применение этих функции подробно описано в [2, 3] в программе TestUSB. Расчёт напряжений и вывод их на экран монитора произво- дится точно так же, как и в программе In8U, подробно описанной в [1]. Программа для микроконтролле- ра UB10 приводится в виде файла с исходным текстом USBXpress_Echo_ main.c и оттранслированного файла USBXpress_Echo_12.hex. Данная про- грамма принимает массив из 32 одно- байтных элементов по интерфейсу USB и передаёт этот массив по интерфейсу SPI. Затем в 10-кратном цикле принима- ет массив из 32 однобайтных элемен- тов по интерфейсу SPI и передаёт этот массив по интерфейсу USB. Для про- граммирования обращений к интер- фейсу USB со стороны микроконтрол- лера UB10 программа также использует функции API из библиотеки USBXpress. Использование этих функций подроб- но освещено в описании программы USBXpress_Echo [2, 3]. Программа для микроконтролле- ра LB12 приводится в виде файла с исходным текстом EFM8LB1_ADC_Lib_ Autoscan_Large_Buffer.c и оттрансли- рованного файла EFM8LB1_ADC_Lib_ Autoscan_Large_Buffer_4.hex. Данная программа принимает по интерфей- су SPI массив из 32 однобайтных эле- ментов A[32]. В первом элементе это- го массива содержится число осред- нений A[0]= N (индексация массивов в языке C начинается с 0). Затем произ- водится 2048-кратное аналого-циф- ровое преобразование напряжения, поданного на вход АЦП, и заполне- ние памяти XRAM двухбайтными слова- ми 2048 раз, т.е. всего 4096 байт. Далее из памяти извлекаются и суммируют- ся все двухбайтные слова, и резуль- тат помещается в переменную AD0. UL типа unsigned long. После этого, в зависимости от числа осреднений N , производится N -кратное повторение измерений, суммируются все AD0. UL по каждому измерению, и резуль- тат помещается в переменную ADCSR типа unsigned long. Затем для получе- ния 19-разрядного кода ADCSR сдвига- ется вправо или влево в зависимости от N (см. ранее). Измерения производят- ся в 8-кратном цикле (как для 8 кана- лов). После этого формируется массив из 32 однобайтных элементов, первые 24 элемента (по 3 байта на 8 каналов) которых несут полезную информа- цию, а остальные зарезервированы. Этот массив передаётся по интерфейсу SPI, работающему в 4-проводном веду- щем режиме. Измерения и вывод мас- сива повторяются 10 раз. Программа написана на осно- ве демонстрационной программы EFM8LB1_ADC_Lib_Autoscan_Large_ Buffer.c от Silicon Laboratories. Она также заполняет буфер из 4096 байт в памяти результатами измерений АЦП, производит осреднение результатов измерения, вычисление напряжения, но результат передаёт по интерфей- су RS-232. Кроме того, она использует выводы микроконтроллера для зажи- гания светодиодов. В настоящей про- грамме коммуникация по RS-232 заме- нена на коммуникацию по SPI, удалены обращения к вычислениям напряже- ния и зажиганиям светодиодов. Кроме того, существенно изменены настройка работы АЦП, настройка системной так- товой частоты работы микроконтрол- лера, его процессора и др. Далее будет описана процедура настройки микроконтроллера с помо- щью конфигуратора в среде Simplicity Studio V3, бесплатно поставляемой ком- панией Silicon Laboratories. В резуль- тате данной процедуры в автоматиче- ском режиме будет сформирован файл инициализации устройства InitDevice.c. Затем будет показано, какие дополни- тельные команды необходимо вставить в подпрограммы для коммуникации по интерфейсу SPI, чтобы обмен данными по SPI работал корректно. В настоящее время компанией Silicon Laboratories разработана новая версия Simplicity Studio V4, которая имеет мно- го новшеств по сравнению с Simplicity Studio V3, однако в ОС Windows XP некоторые функции Simplicity Studio V4 работают некорректно. Дальнейшее изложение будет вестись для Simplicity Studio V3. Н АСТРОЙКА МИКРОКОНТРОЛЛЕРА После запуска среды Simplicity Studio необходимо в проекте EFM8LB1_ADC_ Lib_Autoscan_Large_Buffer_4 выбрать конфигурационный файл EFM8LB1_ ADC_Lib_Autoscan_Large_Buffer.hwconf. После этого на экран будет выведено окно DefaultMode Peripherals, отража- ющее все периферийные устройства
RkJQdWJsaXNoZXIy MTQ4NjUy