Реклама на сайте | Помощь сайту   English version | Free likes 
KAZUS.RU - Электронный портал. Принципиальные схемы, Datasheets, Форум по электронике

Микроконтроллеры семейства PIC

Вопрос   PORTA (и порт E) в PIC'е с АЦП как-то странно работает ?

Ответ  Ответ: Наверх [Вернуться в категорию "Микроконтроллеры семейства PIC"]
В документации на PIC описано, что выводы, сконфигурированные как аналоговые (регистр ADCON1), перестают работать как цифровые входы. Это связано с тем, что при конфигурировании вывода как аналогового запрещается работа его [цифрового] входного буфера, чтобы подача промежуточных значений напряжения не приводила к протеканию сквозных токов в этом буфере. Такие входы читаются как '0'. Однако работа выходного буфера не запрещается и он по-прежнему управляется соответствующими битами регистров TRISA (TRISE) и PORTA (PORTE). Поэтому естественно, что для реального использования вывода как аналогового следует перевести его выходной буфер в hi-Z. Если же это не так, и выходной буфер активизирован (TRIS=0, предполагается отсутствие конфликта с внешними цепями, подключенными к этому выводу), то это никак не повлияет на работу модуля АЦП, и при выборе этого канала он будет добросовестно преобразовывать напряжение на этом выводе (а уж осмысленность этого останется на совести разработчика).

Из вышеизложенного следует, что выводы, сконфигурированные как аналоговые, при необходимости (а выводы, как и любые другие ресурсы, чаще в дефиците, чем в избытке) вполне можно задействовать как цифровые выходы. Однако работать с ними (и другими цифровыми выходами портов A и E, если таковые имеются) придется аккуратнее, чем обычно. "Опасность" представляют циклы "чтение-модификация-запись", то есть арифметические и логические операции с портом, а также установка и сброс битов. В отличие от этого, команды "movwf" или "clrf" никак не используют старое значение и не могут иметь побочного эффекта. Hо команда "tstf" - имеет (см.вопрос о внутренней работе с данными).

Пусть, например, в ADCON1 часть выводов (или все) включены как аналоговые, но 0-й бит регистра TRISA сброøен (то есть RA0 - выход) и RA0=1 (на RA0 высокий уровень). Тогда ничем не примечательная команда "bsf PORTA,4" приведет (помимо желаемого результата) также и к сбросу RA0, так как в этот разряд регистра данных порта запишется '0', прочитанный из-за того, что цифровой входной буфер на RA0 при этом выключен.

Другой пример. Пусть в системе на pic16c74 (77, etc.) требуются 6 аналоговых входов и 2 цифровых выхода. Очевидно, что придется выбрать как аналоговые все 8 входов (регистр ADCON1), но 2 из них использовать как цифровые выходы. Если это будут 2 вывода _одного_ порта (A или E), то _независимо_ манипулировать ими при помощи команд bsf и bcf не удастся.

Следует также помнить, что после сброса ADCON1=0, то есть все аналоговые входы включены именно как аналоговые. И это вполне логично, так как уровни на них могут оказаться отнюдь не цифровые. Так что даже если в конкретной системе АЦП вообще не используется, то все равно придется "работать с АЦП": модифицировать регистр ADCON1, чтобы переключить выводы в цифровой режим.

Автор: Владимир Клочко

[Микроконтроллеры семейства PIC]

Новости
[06/02/2019] Конференция в МГТУ им. Баумана «Технологии разработки и отладки сложных технических систем» 2019
[09/05/2018] Грандиозная майская распродажа на Gearbest!
[16/05/2017] С 15 по 17 мая в магазине Gearbest проходит грандиозный флэшсейл
[10/05/2017] Так что же такое Спиннер?
[05/12/2016] Новый Год и Рождество с GearBest!
Читать все новости >>
Каталог схем
PDA - интерфейсы и схемы Автозвук Автомобиль Аудио Безопасность Бытовая электроника Видео Видеокамеры Высоковольтные Генераторы Игры, развлечения Измерения Интерфейсы Коммутация Компьютер Медицина Моделирование/ Роботы Музыка Передатчики Питание Получение и накопление данных Предусилители Радио Разное Ремонт Ретро Свет/Лазер/ Cветодиоды/IR Сети Солнечная энергия Сотовая связь ТВ-Мониторы Телефония Управление двигателями Фильтры Цифровые/ Микроконтроллеры Electronic circuits Datasheets Каталог схем Принципиальные схемы
Мicrocontrollers
Drivers for LED dispays Data Logger for iButton LCD-module with MCS-51 Thermometers Dallas Semiconductor Work with EEPROM 24LCxx MSP430 with Flash-memory ATmega169 and AVR-Baterfly CAN interface USB interface
Избранные схемы
Arduino Аудио В Вашу мастерскую Видео Для автомобиля Для дома и быта Для начинающих Зарядные устройства Измерительные приборы Источники питания Компьютер Медицина и здоровье Микроконтроллеры Музыкантам Опасные, но интересные конструкции Охранные устройства Программаторы Радио и связь Радиоуправление моделями Световые эффекты Связь по проводам и не только... Телевидение Телефония Узлы цифровой электроники Фототехника Шпионская техника
Пользователи
Создано аккаунтов:
Сегодня: 0
Вчера: 0
Всего: 146142

Статистика:

 © 2003—2024 «Электронный портал»Обр@тная связь