Отладочная плата ADuC7024. GPIO.

Основная прикладная работа с новым микроконтроллером начинается, безусловно, с освоения управления выводами/вводами. Без такого умения вряд ли есть смысл вообще работать с МК. Раздел ДШ «General – purpose input/output» на стр. 63 увлечённым эмбеддерам будет в помощь. Ну а я продолжаю упражняться в английском 🙂
Микроконтроллер ADuC7024 имеет 30 двунаправленных вводов/выводов общего назначения GPIO. Все они толерантны к 5В, т.е. могут считывать уровень лог. 1 такого напряжения без ущерба для себя. В большинстве своём GPIO многофункциональны,  и могут применяться для обслуживания периферийных устройств МК, таких как, например: UART, SPI, PLA и пр. Подробней эту информацию можно посмотреть в таблице 78, стр. 64 ДШ. По умолчанию все выводы сконфигурированы как GPIO.
Все GPIO  имеют внутренний подтягивающий Pull-Up резистор (около 100 кОм) с нагрузочной способностью 1,6 мА. Заметим, что с таким током могут использоваться одновременно не более 20-ти выводов портов МК.  Используя регистр GPxPAR есть возможность отключать/подключать эти подтягивающие резисторы для следующих выводов порта Р0: P0.0, P0.4, P0.5, P0.6, P0.7  и всех выводов порта P1.
Вводы GPIO сгруппированы в пять портов P.0 – P.4. и управляются четырьмя или пятью регистрами. Вот их описания.

GPxCON_regGPxPAR_regGPxDAT_regGPxSET_CLR_reg

Входной уровень на любом выводе GPIO может быть считан в любое время через регистр GPxDAT, даже когда этот вывод сконфигурирован не как вход, а, допустим, PWM или SCLK. Когда МК находится в спящем режиме, выводы GPIO сохраняют свои значения.
На основании информации, что я вам преподнёс выше, напишем для закрепления знаний простейшую тестовую, уже ставшую привычной в такого рода делах программку – «Hello word» для МК (мигание светодиодом).
Code_blink_LEDЯ сознательно не выкладываю здесь проект в Кейле (хотя если кому-то нужно, то выложу без проблем 🙂 ), т.к. пути к подключаемым файлам могут быть различные и на вашем компе проект может не откомпилироваться. Лучше самому с нуля создать проект и набрать указанный код для проверки.
В приведённом примере мы использовали все рассмотренные регистры, касающиеся GPIO, кроме GPxPAR, т.к для порта Р4 подтягивающие внутренние резисторы не отключаются/подключаются. Результатом работы программы на макетной плате будет мигание светодиода. Комментарии пришлось писать на английском, т.к. мой Кейл кириллицу не переваривает почему-то. Но там всё должно быть понятно.
Отдельно остановлюсь на выводе Р0.6. С ним ваще дела интересные. В таблице 12 на стр. 22 ДШ указано, что он: «Мультифункциональный вывод, принимающий значение низкого уровня (Driven Low) после сброса. Выход 6 общего назначения порта 0. Вход таймера 1. Выход сброса??? при подаче питания (Power-On Reset Output). Выход ПЛМ элемент 3.». Потом в четвёртом абзаце раздела GENERAL-PURPOSE INPUT OUTPUT на стр. 63 ДШ идёт разъяснение насчёт этого вывода, которое я не смог внятно перевести, т.к. мой английский хромает (он хороший, мой английский, но хромает 🙂 ) Так вот, к чему я это всё поясняю… Дело в том, что при разводке платы я этот злосчастный P0.6 задействовал как вход энкодера. При первоначальных попытках обработки энкодера обнаружилось, что на этом выводе не подключается внутренний подтягивающий резистор. Поэтому я сначала выводными резисторами попытался перераспределить выводы между энкодером и светодиодом (на фото в первой статье этого цикла на стороне монтажа это хорошо заметно). Мне такой колхоз не понравился, я вернул всё в зад и просто подпаял внешний Pull-Up — резистор на вывод P0.6. Энкодер заработал как ему и следует. Но об этом, а также о ЖКИ — в следующем опусе.

Запись опубликована в рубрике Разное с метками , . Добавьте в закладки постоянную ссылку.

Добавить комментарий

Ваш e-mail не будет опубликован.