Миландр
http://forum.milandr.ru/

2 регистра управления портами?
http://forum.milandr.ru/viewtopic.php?f=22&t=3761
Страница 1 из 1

Автор:  vladh [ 2017-сен-14 15:27 ]
Заголовок сообщения:  2 регистра управления портами?

Уважаемые форумчане. Разъясните пожалуйста бестолковому как работают два регистра обслуживающих порты МК. Это регистр FUNC и регистр PD. В спецификации написано, что если два первых разряда регистра равны 00 - то младший разряд порта это - порт(?), а если комбинация этих регистров 01, то у этого вывода порта основная функция. Я не вижу разницы между первым и вторым определением.
И регистр PD. В описании написано, что выводом порта управляет один разряд из младшей группы регистра и один из старшей. Пока все понятно. Но вот, что значит когда в младшей группе управляющий разряд равен 1, то вывод порта это порт с открытым стоком. А разве открытость стока не регистр PULL формирует?

Автор:  prostoRoman [ 2017-сен-14 17:17 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

в регистре FUNC группами по два бита определяется соответствующая функция вывода порта. Комбинация бит в группе 00 = порт, 01 = основная, 10 = альтернативная, 11 переопределённая.

Регистр PULL включает подтяжки: к питанию и к общему. при этом режим работы порта может быть любой. хоть аналоговый.

Автор:  vladh [ 2017-сен-15 06:39 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

prostoRoman, Вы видимо не поняли суть моих вопросов. В первом вопросе меня сбивает с понимания формулировка состояний. Т.е. Если в регистре FUNC будет записано 01, или 10, или 11 то соответствующий вывод порта это уже не порт? Вы разве не видите здесь противоречия?
И вторая часть моего вопроса. Если в регистре PULL отключить подтяжку к питанию, то сможете ли Вы любыми своими действиями с регистром PD сделать ввод порта не с открытым коллектором?

Автор:  prostoRoman [ 2017-сен-15 08:31 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

можно заниматься буквоедством, а можно предположить, что "портом" здесь понимается периферийный модуль MDR_PORTx, а у этого модуля есть вывод, и в тех случаях вывод перестаёт быть выводом порта в том смысле, что перестаёт транслировать информацию из регистра периферийного модуля порта и начинает транслировать информацию из другого модуля.

Между PULL и PD никакой взаимосвязи не вижу.

Автор:  רגוזין רומאן [ 2017-сен-15 08:52 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

vladh писал(а):
prostoRoman, Вы видимо не поняли суть моих вопросов. В первом вопросе меня сбивает с понимания формулировка состояний. Т.е. Если в регистре FUNC будет записано 01, или 10, или 11 то соответствующий вывод порта это уже не порт? Вы разве не видите здесь противоречия?
И вторая часть моего вопроса. Если в регистре PULL отключить подтяжку к питанию, то сможете ли Вы любыми своими действиями с регистром PD сделать ввод порта не с открытым коллектором?
Табличку выше смотрели?
Например порт PD.
FUNC = 00 смещённые на 9 и совместно с ANALOG = 1, сделает из вывода PD9 цифровым выводом PD9 (просто портом (всё что попадёт в RXTX или SETTX, CLRTX - будет на этом выводе)).
FUNC = 01 смещённые на 9 и совместно с ANALOG = 1, сделает из вывода PD9 цифровым выводом SSP2_SCK (клоком SPI (как сказал Роман, подключится к другому модулю)).
FUNC = 10 смещённые на 9 и совместно с ANALOG = 1, сделает из вывода PD9 цифровым выводом nUART2DSR (управление потоком УСАППа (как сказал Роман, подключится к другому модулю)).
FUNC = 11 смещённые на 9 и совместно с ANALOG = 1, сделает из вывода PD9 цифровым выводом A2 (адресным битом при общении с кем-то по параллельной шине (как сказал Роман, подключится к другому модулю)).

Ввод вообще не может быть с открытым СТОКом, а не коллектором.

Автор:  vladh [ 2017-сен-15 10:04 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

prostoRoman писал(а):
можно заниматься буквоедством, а можно предположить, что "портом" здесь понимается периферийный модуль MDR_PORTx, а у этого модуля есть вывод, и в тех случаях вывод перестаёт быть выводом порта в том смысле, что перестаёт транслировать информацию из регистра периферийного модуля порта и начинает транслировать информацию из другого модуля.

С моей стороны это не буквоедство. Это попытка разобраться с нюансами. Поскольку в спецификации записано, что при значениях регистра FUNC 00 и 01 это разные состояния ввода порта то объясните мне в чем разница? Я считаю, что это эквивалентные состояния. Я просто боюсь не заметить тонкости и таким образом "выплеснуть ребенка".
prostoRoman писал(а):
Между PULL и PD никакой взаимосвязи не вижу.
Я еще раз Вас спрошу, если я в регистре PULL установлю состояние "поддтяжка в питание выключена" то Вы сможете любой установкой в регистре PD сделать вывод порта как управляемый драйвер, а не как ввод с открытым стоком.

Автор:  רגוזין רומאן [ 2017-сен-15 10:23 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

У меня всегда так. Подтяжки используемых выводов выключаю, PD вообще не трогаю - т.е. работают как драйверы.

Автор:  vladh [ 2017-сен-15 10:56 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

רגוזין רומאן писал(а):
У меня всегда так. Подтяжки используемых выводов выключаю, PD вообще не трогаю - т.е. работают как драйверы.

"רגוזין רומאן", тогда объясните мне в чем для Вас разница в формулировках: 1-управляемый драйвер и 2-открытый сток?

Автор:  редактор [ 2017-сен-15 11:22 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

Цитата:
тогда объясните мне в чем для Вас разница в формулировках: 1-управляемый драйвер и 2-открытый сток?

Попробуйте на выходе с открытым стоком сформировать высокий уровень. Без притяжки вряд ли получится.Данный режим удобен при работе с сигналами 5В-логики.Когда притяжку делает внешний резистор.
Управляемый драйвер -это лучший вариант для 3В-логики. Хотя и здесь можно использовать открытый сток и внутреннюю (или внешнюю) притяжку. Разница будет в крутизне фронтов.

Автор:  רגוזין רומאן [ 2017-сен-15 12:03 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

vladh писал(а):
"רגוזין רומאן", тогда объясните мне в чем для Вас разница в формулировках: 1-управляемый драйвер и 2-открытый сток?

Понятия не имею.
Но вполне вероятно, что "миландровцы" опять что-то не дописали.
И как мне кажется, что этот самый драйвер работает совместно с регистром PWR. Ведь без источника тока нельзя организовать фронты с разными длительностями. А это и есть управляемый драйвер. Просто при открытом стоке, ток шпарит ограниченный лишь чем-то одним.

Автор:  prostoRoman [ 2017-сен-15 12:31 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

רגוזין רומאן писал(а):
vladh писал(а):
"רגוזין רומאן", тогда объясните мне в чем для Вас разница в формулировках: 1-управляемый драйвер и 2-открытый сток?

Понятия не имею.
Но вполне вероятно, что "миландровцы" опять что-то не дописали.
И как мне кажется, что этот самый драйвер работает совместно с регистром PWR. Ведь без источника тока нельзя организовать фронты с разными длительностями. А это и есть управляемый драйвер. Просто при открытом стоке, ток шпарит ограниченный лишь чем-то одним.

В режиме драйвера может быть создан как втекающий, так и вытекающий из м/с ток.
В режиме открытого стока возможно управлять лишь втекающим током. Токи утечек не учитываем, разумеется.
Режим открытого стока обычно используется для создания схем "монтажное или". Яркий пример такого режима - шина i2c и цепи сброса (nRESET).

Так же, редактор правильно обратил внимание на вопрос о пятивольтовой совместимости: мне не известно каким будет напряжение в цепи если управляемый драйвер подтянуть к напряжению превышающему питание МК и выставить вы выход единицу.

При этом всём регистры PULL и PD всё так же остаются не взаимосвязанными и их функции не взаимоисключающими.

Автор:  Alex1979 [ 2017-сен-15 14:33 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

vladh писал(а):
С моей стороны это не буквоедство. Это попытка разобраться с нюансами. Поскольку в спецификации записано, что при значениях регистра FUNC 00 и 01 это разные состояния ввода порта то объясните мне в чем разница? Я считаю, что это эквивалентные состояния. Я просто боюсь не заметить тонкости и таким образом "выплеснуть ребенка".


Поскольку у микроконтроллера не слишком много выводов, выводы, относящиеся к портам ввода-вывода (GPIO - General Purpose Input-Output) как правило мультиплексируют с выводами, относящимися к встроенным устройствам типа UART, SPI и т.д. Например, хотите вы использовать тот или иной вывод контроллера как GPIO, задаете в FUNC в соответствующее место 00 и можете управлять уровнем на выводе через регистр RXTX (или как он там называется). А если вы хотите иметь на этом выводе, скажем, сигнал TxD какого-нибудь UART, то засовываете в FUNC 01 или 10 в зависимости от того основная или альтернативная функция вам нужна и получаете нужную функциональность. Но в этом случае вы уже не должны пытаться использовать RXTX для управления уровнем на выводе.

Режим "управляемый драйвер" (push-pull) это когда вы имеете возможность посредством RXTX подключать вывод и к питанию (1) и к земле (0). В этом случае подтяжки вам не нужны ни встроенные, ни внешние.

Режим "открытый сток" (open-drain) это когда вы можете, записав 0 в RXTX, подключить вывод к земле, но не можете подключить его к питанию, записав 1 в RXTX. Запись 1 отключает вывод ото всего (переводит в третье состояние), и тогда уже подтяжка будет определять, какой уровень на этом выводе установится.

Автор:  vladh [ 2017-сен-16 10:55 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

Alex1979 писал(а):
vladh писал(а):
С моей стороны это не буквоедство. Это попытка разобраться с нюансами. Поскольку в спецификации записано, что при значениях регистра FUNC 00 и 01 это разные состояния ввода порта то объясните мне в чем разница? Я считаю, что это эквивалентные состояния. Я просто боюсь не заметить тонкости и таким образом "выплеснуть ребенка".

Alex1979, Вы не понимаете сути моего вопроса. Еще раз ответьте только на вопрос: "Поскольку в спецификации записано, что при значениях регистра FUNC 00 и 01 это разные состояния ввода порта то объясните мне в чем разница?". Только эти два состояния.
И по поводу регистров PD и PULL так никто и не дал ясного развернутого объяснения. Видимо Меландр должен откорректировать свою спецификацию в которой должно быть отражено однозначная взаимосвязь состояния порта от состояний регистров.

Автор:  רגוזין רומאן [ 2017-сен-16 12:32 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

00 - это порт управляемый регистрами TXRX...
01 - это основная функция. Порт управляется другими периферийными блоками.

Автор:  stranderer [ 2017-дек-30 23:52 ]
Заголовок сообщения:  Re: 2 регистра управления портами?

vladh, Вы читали Описание выводов микроконтроллера в начале спецификации? Там есть таблица, в которой чёрным по-русскому написано, какую функцию будет выполнять каждый вывод каждого порта при задании значения, отличного от 00, в регистре FUNC. Похожая таблица есть и в разделе "Порты ввода-вывода", но там ещё указано в примечаниях, к какому именно периферийному блоку будут подключены выводы порта при выборе той или иной цифровой функции. А у некоторых выводов есть ещё и аналоговые функции, указанные в соответствующем столбце таблицы. И далее приведена ещё структура вывода порта, из которой видно, как это всё работает: на входах данных и разрешения драйвера порта стоят мультиплексоры, которые в зависимости от значения, записанного в регистр FUNC, подключает эти входы к разным блокам МК. Видно также, что выбор аналоговой функции отключает данный вывод порта от цифровой части и по входу, и по выходу...

Страница 1 из 1 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
http://www.phpbb.com/