Современная электроника №8/2020

ИНЖЕНЕРНЫЕ РЕШЕНИЯ 53 WWW.SOEL.RU СОВРЕМЕННАЯ ЭЛЕКТРОНИКА ◆ № 8 2020 имеется 4 знака после запятой (4 симво- ла), сама запятая (десятичная точка) – 3-й символ и два знака перед запятой (2 символа). Далее, подставив получен- ные значения buf3 как индекс в выше- описанный массив M[i], получим чис- ло «18.5047» уже на дисплее. Однако функцию sprintf() , про- изводящую форматированный вывод чисел с плавающей запятой, можно применять, если имеется достаточно оперативной памяти, т.е. для неё тре- буется внешняя оперативная память, которая, в свою очередь, требует при- менения так называемой large-модели памяти. В программе EFM8LB1_ADC_ Autoscan_Large_Buffer.c, поставляе- мой компанией Silicon Laboratories как пример работы АЦП, производит- ся осреднение 2048 двухбайтных слов (4096 байт), являющихся результата- ми работы АЦП. Осреднение, т.е. рас- чёт среднего значения, производится в целых числах, а результат осреднения также в целых числах выводится в стан- дартный поток данных по интерфейсу RS-232 в компьютер. Вывод осуществля- ется функцией printf() , работающей, естественно, также с целыми числами. При этом используется так называемая small-модель, a в качестве оперативной памяти для программы используется только внутренняя оперативная память микроконтроллера (128 байт), тогда как внешняя (XRAM) практически пол- ностью занята – там как раз находятся результаты АЦП (4096 байт). Другими словами, в этой программе не исполь- зуются расчёты с числами с плавающей запятой, а функция printf() , работаю- щая с целыми числами, в small-модели разрешена. В предлагаемой автором программе, приведённой в [1], вообще не произ- водится никаких расчётов. Результаты работы АЦП в целых числах (просто суммы) без обработки выводятся по интерфейсу SPI и далее по интерфейсу USB передаются в компьютер. А в ком- пьютере уже производятся все расчё- ты с плавающей запятой и форматиро- ванный вывод этих чисел на монитор. В этой программе (для микрокон- троллера) также используется small- модель. При этом, как показано в [1], уже при 16-кратном осреднении 2048 двухбайтных слов 5-й знак после запятой в результатах работы АЦП не меняется, из чего делается вывод, что 32-кратное осреднение избыточ- но. Но что мешает вместо 16-кратно- го осреднения 2048 двухбайтных слов (4096 байт) использовать 32-кратное осреднение, но уже 1024 двухбайтных слов (2048 байт)? Ведь как по време- ни, так и по точности это будет одно и то же. А раз так, то половина опера- тивной памяти ёмкостью 2048 байт освободится, в связи с чем можно уже применить large-модель и функцию sprintf() , производящую формати- рованный вывод чисел с плавающей запятой. В программе для вольтме- тра так и сделано. Мало того, высо- кая скорость работы АЦП позволила производить не 32-кратное осредне- ние, а 64-кратное (для большей надёж- ности). Даже при таком осреднении вывод результатов на дисплей произ- водится приблизительно 5 раз в секун- ду, т.е. каждые 0,2 с, что для глаза неза- метно. Таким образом, можно отметить, что предлагаемый способ вывода достаточ- но прост и не требует большого объё- ма программной памяти. ОФИЦИАЛЬНЫЙ ДИСТРИБЬЮТОР • Множество вариантов исполнения и установки • Различные варианты интерфейсов • Степень защиты до IP68 • Устройства, соответствующие IEC 60945 • Опциональная регулируемая подсветка • Возможность кастомизации ЗАЩИЩЕННЫЕ КЛАВИАТУРЫ

RkJQdWJsaXNoZXIy MTQ4NjUy