Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Порты ввода/вывода микроконтроллера dsPIC33FJ32GP204
В DSPIC33FJ32GP204 имеется 3 порта ввода вывода. В основном все порты идентичны и мы будем считать их функциональность одинаковой. Однако стоит обратить внимание, что некоторые порты не полные. Ведь микроконтроллер 16 разрядный и поэтому требует для каждого порта аж 16 выводов. В данном микроконтроллере только PORTB является полным, а остальные 2 порта урезанными. Причём в PORTA даже есть пропущенные выводы. Так как порты мультиплексированы с выводами периферийных модулей, то для того, чтобы порты работали как цифровые входы/выходы – их нужно соответствующим образом настроить (так сказать проинициализировать).
Для работы с портом предназначены три основных регистра:
TRIS – регистр для выбора направления передачи. Если «0» то канал работает на выход, а если «1», то канал работает как вход. (Для запоминания можно считать так: «1» похожа на латинскую букву I, т.е. Input-вход, поэтому и настраивает порт как вход). Например запись TRISС=0b0000011110 говорит о том, что каналы RС9-RC5,RC0 работают как выход, а RC4-RC1 – как вход)
PORT – регистр порта, вот именно с помощью этого регистра мы будем принимать данные или отправлять их. (Например запись value=PORTC, означает, что нужно данные присутствующие на выводах порта C, записать в переменную value, а запись PORTC=value означает что нужно на выводах порта C установить состояние, соответствующее переменной value).
Для доступа к одному каналу в отдельности, например к третьему каналу порта C используют запись вида _RC3 (RC3=0 сбрасываем третий бит регистра C).
Примечание: Обозначение отдельных выводов порта в компиляторе С30 и компиляторе HI-TECH отличается тем, что в С30 перед названием отдельного вывода нужно ставить знак подчёркивания. С моей точки зрения это более практично, так как сразу можно определить регистр это или бит.
LAT – Защелка портов ввода/вывода. В некоторых задачах она нам тоже может понадобится. Хотя не сразу можно понять зачем она нужно.
В микроконтроллере для каждого вывода можно сконфигурировать или как цифровой вывод или вывод с открытым коллектором. Для этого предназначен специальный регистр для каждого порта ODCA, ODCB, ODCC (“1” – вывод с открытым коллектором).
Выводы портов имеют триггер Шмитта, который защищает от помех.
При запуске микроконтроллера некоторые входы настроены для работы с АЦП. И если нам необходимо, чтобы вход/вывод был именно цифровым, то за этим нужно следить. Для этого нужно при инициализации добавить следующую команду:
AD1PCFGL=0xffff;
что означает, что все выводы совмещённые с аналоговыми входами будут работать как цифровые входы выходы.
В микроконтроллере есть ещё очень полезное свойство. Все входы обозначенные как CN (CN1,CN8 и т.п.) имеют возможность подключать подтягивающие резисторы. А это означает, что, к примеру, не нужно для каждой кнопки устанавливать подтягивающий резистор, а только лишь установить соответствующий бит. Для подключения подтягивающих регистров служит два регистра CNPU1 и CNPU2, т.е. каждый вывод можно подтягивать индивидуально. Для того, чтобы отдельно подтянуть какой-нибудь один вывод можно обращаться непосредственно к биту соответствующего регистра (Например, запись _CN4PUE=1 означает, что нужно включить подтягивающий резистор на выводе CN4, что означает что и на RB0)
Для примера поставим перед собой задачу:
ЗАДАЧА Разработать программу для управления 8-ю светодиодами. Конечно, особого смысла в управлении светодиодами нет, но на их место можно поставить силовые ключи и управлять уже электромеханизмами. А это уже намного интереснее. Но для ознакомления с портами нам достаточно и светодиодов. Для задачи необходимо выполнить следующие условия:
1) При нажатии на кнопку SB1 зажечь первую четвёрку светодиодов, а вторую погасить.
2) При нажатии на кнопку SB2 зажечь вторую четвёрку светодиодов, а первую погасить.
3) При нажатии на кнопку SB3 зажигать первую четвёрку, вторую гасить, через паузу погасить первую четвёрку, а вторую зажечь и так мерцать непрерывно, пока не будет нажата кнопка SB1 или SB2.
Для начала разработаем схему. Она будет иметь приблизительно следующий вид (изображено в работе):
Пишем программу для микроконтроллера. Думаю комментариев будет достаточно, чтобы во всём разобраться
Уважаемые коллеги! Предлагаем вам разработку программного обеспечения под ключ.
Опытные программисты сделают для вас мобильное приложение, нейронную сеть, систему искусственного интеллекта, SaaS-сервис, производственную систему, внедрят или разработают ERP/CRM, запустят стартап.
Сферы - промышленность, ритейл, производственные компании, стартапы, финансы и другие направления.
Языки программирования: Java, PHP, Ruby, C++, .NET, Python, Go, Kotlin, Swift, React Native, Flutter и многие другие.
Всегда на связи. Соблюдаем сроки. Предложим адекватную конкурентную цену.
Заходите к нам на сайт и пишите, с удовольствием вам во всем поможем.
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.