Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру

318 Часть 111. Практическое программирование микроконтроллеров АVR чении влажности 99%. Для их подключения вместе с температурным датчиком можно, например, после каждого чтения показаний переключать АЦП на другой канал и одновременно переключать на другое опорное напряжение, примерно так (листинг 1 1 .9) . ; внутренний ИОН , канал ADCO : ldi temp , ( l«REFSO ) 1 ( l«REFS l ) out ADМUX , temp ; Vref = AVCC , канал ADCl : ldi temp , ( l«МUXO ) 1 ( l«REFSO ) out ADМUX , temp ; Vref = AVCC , канал ADC2 : ldi temp , ( 1«MUXl ) 1 ( 1«REFS O ) out ADМUX , temp ; внутренний ИОН , канал АDСЗ : ldi temp , ( l«MUXO ) 1 ( l«MUXl ) 1 ( l«REFSO ) 1 ( l«REFSl ) out ADМUX , temp Но при этом следует учитывать, что после переключения опорного источника пер­ вое измерение, как сказано в описаниях контроллеров, «may Ье inaccurate», и его следует отбрасывать . То есть при необходимости переключения источника опорно­ го напряжения целесообразнее не переключать его каждый раз (при этом придется произвести измерений ровно вдвое больше), а применять немного иную схему: сначала выполнить серию измерений для одного канала, потом для другого и т. д. - тогда отбросить придется только одно первое измерение в каждой серии. Как видите, программа проведения измерений с помощью АЦП получается весьма навороченная . И это мы еще не дошли до темы перевода в физические величины с целью вывода на индикацию- об этом в следующем разделе . П еревод результатов в ф изические величины Тема перевода в физические величины уже обсуждалась в начале этой главы, а не­ обходимая арифметика, включая и последующий перевод в распакованный BCD с целью вывода на индикацию, - в главе 8 в связи с реализацией различных ариф­ метических процедур на ассемблере. Здесь мы постараемся соединить эти разроз­ ненные сведения в единую методику, а также обсудить те нюансы, которые под­ робно не обсуждались ранее . Для начала нам следует иметь ориентировочные коэффициенты градуировочного уравнения . Почти все датчики - линейные, т. е. для них хватит двух коэффициен­ тов: а0 (значение при нуле параметра) и а1 (крутизна преобразования). Нелинейные

RkJQdWJsaXNoZXIy MTExODQxMg==