Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1 1 . Аналоговый компаратор и АЦП mov AregL, KoeffL ; и загружаем их обратно mov AregH , KoeffH ; в регистры AregH : AregL sbi PortB , 6 ; зажигаем знак минус r jmp mO ; к дальнейшему расчету ЬО : ; если данные больше подставки , то знак + suЬ AregL , KoeffL ; вычитаем из данных подставку sbc AregH, Koe ffH cbi PortB , 6 ; гасим знак mO : ; умножение на коэффициент крутизны a l 321 Процедуру умножения на а1 мы расписывать здесь не станем : все процедуры при ведены в главе 8. Если вы думаете, что поступить по-программистски и работать с отрицательными числами в дополнительном коде было бы проще, то ошибае тесь, - в ассемблерном исполнении при числах с очень разной разрядностью в общем случае это сложнее . Пример законченной программы с пересчетом значе ния температуры и выводом на дисплей приведен в главе 16. Аналогичным образом к АVR мо Ж но подключать любые датчики физических ве личин с аналоговым выходом. Придется, конечно, повозиться с пересчетом в физи ческие величины, но это не так страшно, как кажется, и в этой книге есть образцы всех необходимых процедур. Куда сложнее провести калибровку, которая обяза тельно потребуется, если вы хотите, чтобы датчик показывал не «погоду на Мар се», а истинные величины. Причем в Arduino калибровка требуется не меньше, чем при таком самостоятельном подключении в отсутствие всяких библиотек, и это касается почти любых измерителей физических величин. Потому в целом задачи получаются близки по сложности. Точно так же легко вписываются в ассемблерные проекты различные измерители величин с выходами в виде логического перепада уровней (пироэлектрический дат чик движения HC-SR50 1 ), интервала времени (ультразвуковой датчик HC-SR04 - пример приведен в главе 16), частоты (датчик вибрации AHT-80 1 S) и т. д. Что каса ется популярных в Arduino модулей датчиков с готовым цифровым выходом, то применять их в ассемблерных проектах нецелесообразно, - почти всегда имеется громоздкий и нестандартный протокол передачи данных (датчики DHT, SHT, АМ2320), часто сложно произвести расчеты физической величины по имеющимся коэффициентам (барометры ВМР 1 80 или ВМР280). Убив кучу времени на перевод алгоритмов чтения таких датчиков на ассемблер, вы ничего не выиграете, - тут язык С или Arduino, в сочетании с готовыми для использования библиотеками, без условно, вне конкуренции. ЗАМЕТКИ НА ПОЛЯХ Возможно, из дешевых датчиков единственным примером грамотного метрологическо го подхода может служить восхитительное - без иронии ! - творение фирмы Bosch : барометр на основе микросхем (точнее , микромодулей) ВМР1 80 или ВМР280 с 1 2 С-ин терфейсом. Абсолютная точность их измерений (порядка 0, 1 % от шкалы -800 мм рт. ст.) не вызывает никаких нареканий , причем весьма тщательная индивидуальная калиб ровка проведена при изготовлении, и коэффициенты заш . иты прямо в датчик. Столь
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==