Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
300 Часть 111. Практическое программирование микроконтроллеров АVR однопроцентных резисторов из ряда Е 1 92 у вас наверняка не найдется) и проверьте напряжение переключения опять . Полностью обе программы вы найдете в архиве по адресу, указанному во введении (файлы Analog_batt .asm и Analog_batt_simple.asm ) . Эти программы легко переносятся практически на любой контроллер в любом режиме тактирования без изменений, т. к. компаратор устроен одинаково везде (не в пример иным узлам, для которых приходится выискивать нюансы реализации и наименования регистров в той или иной модели). Процедуры по такому образцу взаимодействия с компаратором можно также задействовать в любых других целях, где необходимо определение некоего аналогового порога. Но при этом надо помнить, что компаратор ничем не отличается от любого другого порогового устройства и точно так же выдает дребезг при плавном снижении на пряжения на входе, осложненного помехами. Здесь нас этот дребезг не волнует, т. к. мы всего только переключаем светодиод. Но в других случаях применения компаратора от дребезга придется избавляться . К сожалению, здесь нельзя приме нить стандартный метод для настоящих аналоговых компараторов, который заклю чается во введении гистерезиса - разницы между порогами срабатывания при уменьшении и увеличении входной величины (точнее, в принципе можно, но это усложнит схему подключения и программу непропорционально достигнутым результатам). Поэтому придется прибегать к методам фильтрации дребезга, анало гичным использованным для кнопки в главе 6. Встроенный А ЦП Одно из реальных преимуществ Arduino - простота реализации функций аналого цифрового преобразования с помощью единственной функции analogRead ( ) . Впро чем, запустить АЦП на ассемблере и получить результат преобразования совсем несложно - не намного сложнее, чем через ардуиновскую analogRead ( ) . Трудности начинаются далее, когда мы решаем, что с полученным результатом делать. В ре зультате программа раздувается, и сравнение в удобстве применения оказывается не в пользу ассемблера, даже с учетом большей гибкости в манипулировании ре жимами АЦП. Вероятно, АПЦ в контексте его применений для измерения различных величин - вообще самая сложная тема в изучении АVR-контроллеров, куда сложнее пугаю щей новичка темы таймеров в режиме ШИМ. Начальное освоение АЦП не в . по следней степени осложняется тем, что разработчики умудрились насадить различий в АЦП даже близких по архитектуре контроллеров (как ATmega8 или ATmega l б и ATmega8535) . Управление АЦП настолько загромождено различными необяза тельными опциями, вариантами и условиями, что с первого взгляда разобраться в нем кажется совершенно невозможным. Из-за этого при переносе на другой кон троллер приходится проверять каждую мелочь . Но после того, как вы немного освоитесь в этом деле, запуск и чтение АПЦ уже не покажется сложным делом, а вот обработка результатов. . . Но все по порядку.
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==