Приветствую, только не кидайтесь тухлыми помидорами. Вроде всё просто, но в документации(погуглил) как-то этот момент опущен, или просто так написано что не могу понять. Что значит что порт включен на вход и на выход? В чём отличие и что это даёт? Объясните на пальцах.
P.S. Сижу играюсь с семи-сегментным индикатором. Порт, отвечающий за сегменты, включил на выход(записал в него 0х0) и при подаче на ножку порта соответвенно нуля, нужный сегмент загорается(индикатор с общим анодом). Вот не могу понять почему так. Думал, наоборот надо, порт на вход устанавливать.
В данный момент учусь по книжке " Михаэль Хофман: Микроконтроллеры для начинающих". Глава 6-я, раздел 3-й. По сути вода, сказано, мол, хотите вход, запишите в TRIS 1, выход -0. (Где-то у меня ещё в электронке по ПИКам книги были, надо ещё в них покопаться). Так же копаясь по сайтам с информацие по программированию пиков, натыкаюсь на разделы про порты ввода вывода, попадается поподробнее, типа:
Цитата:
Порт может быть настроен на ввод или вывод цифрового сигнала с помощью защелки TRIS, которая представляет собой D-триггер. Если порт должен работать как выход, то на вход D защелки TRIS подается сигнал лог. 0, который по тактовому импульсу записывается в триггер.
В этом случае инверсный выход TRIS-защелки разрешает работу схемы "И" и открывает тристабильный буфер, через который сигнал с выхода защелки данных проходит на вывод порта. В этом случае данные с вывода порта можно будет только читать. Здесь не следует смешивать чтение выходных данных порта и чтение вывода порта. Для чтения бита данных, записанного в порт, нужно прочитать содержимое защелки данных. Каждому выводу порта ввода/вывода соответствует отдельный бит в регистрах TRISx, PORTx, LATx и ODCx.
Общее количество портов ввода/вывода и количество выводов зависит от конкретной модели микроконтроллера. Вполне возможно и то, что отдельные биты портов ввода/вывода в конкретном устройстве задействованы не будут. В любом случае лучше обратиться к технической документации на микроконтроллер. Рассмотрим назначение каждого из регистров порта ввода/вывода. Регистр TRISx позволяет сконфигурировать направление обмена данными для каждого вывода порта.
Если для какого-либо вывода порта в регистре TRIS на соответствующей позиции установлен 0, то вывод будет работать на передачу данных. Если же соответствующий бит в регистре TRIS установлен в 1, то вывод порта будет работать на прием (чтение). Доступ к данным порта осуществляется посредством регистра PORTx. При чтении этого регистра считываются значения сигналов, присутствующих на выводах порта, а при записи этого регистра данные заносятся в защелку данных порта.
Аналогичная стилистика написания в "Справочник по среднему семейству микроконтроллеров PICmicro", глава 9-я "Порты ввода-вывода" http://mculab.ru/datasheet/pic/pic16_9.pdf
Тяжело как-то воспринимается. Какие защёлки, триггеры, логические И-ИЛИ, буферы. Мне бы по простому, мол, режим "вход" используется тогда-то и для того-то, режим "выход" тогда-то и для того-то. А уже со временем, когда разберусь подробнее и отрастёт борода и свитер прилипнет к телу, полезу глубже, в защёлки и триггеры. Мне как любителю, на первое время тяжело воспринимать информацию в таком виде. Поэтому и хочется чтобы опытные, бородатые коты рассказали на пальцах что к чему, чтобы в голове уложилось. Зачем этот флаг направления вообще нужен. Почему нельзя просто записывать в порт 0 или 1 без этого регистра направления? А там глядишь и свой котелок варить начнёт
Тяжело как-то воспринимается. Какие защёлки, триггеры, логические И-ИЛИ, буферы.
Вычеркни их из текста и получится:
Цитата:
Если для какого-либо вывода порта в регистре TRIS на соответствующей позиции установлен 0, то вывод будет работать на передачу данных. Если же соответствующий бит в регистре TRIS установлен в 1, то вывод порта будет работать на прием (чтение).
Не забывай настроить порты как цифровые, т.е. отключить переферию.
Тяжело как-то воспринимается. Какие защёлки, триггеры, логические И-ИЛИ, буферы.
Вычеркни их из текста и получится:
Цитата:
Если для какого-либо вывода порта в регистре TRIS на соответствующей позиции установлен 0, то вывод будет работать на передачу данных. Если же соответствующий бит в регистре TRIS установлен в 1, то вывод порта будет работать на прием (чтение).
Не забывай настроить порты как цифровые, т.е. отключить переферию.
Дык, а что это значит что порт работает на приём или передачу? Т.е например на "приём", т.е в порту он замыкается на землю, что ток начинает течь в него или что происходит? Ведь что режим входа, что режим выхода, я и там и там могу выставить на ножку 0 или 1, так ведь?
Вы знаете, что у микросхем (жёсткая логика) есть входы и выходы. У контроллера вы выбираете для каждого сигнального вывода "чем он будет", входом или выходом (регистр TRISx). P.S. Если выход - записываете данные в порт или бит порта (к примеру, зажигаете светодиод). Если вход - читаете данные с порта или бит порта (к примеру, опрос кнопки).
_________________ С Уважением, Альберт (Albert_V).
Дык, а что это значит что порт работает на приём или передачу?
Работа порта на прием НЕ ВЫКЛЮЧАЕТСЯ (за исключением особых случаев связанных с аналоговыми функциями пина). Выключается ВЫХОДНОЙ БУФЕР защелки порта. То есть вход фиксированно присоединен к пину, а выход может переводится в третье состояние путем запирания СРАЗУ ОБОИХ транзисторов выходной комплементарной пары (TRIS=1). При работе пина как ВЫХОДА можно спокойно ПРОЧЕСТЬ состояние пина как ВХОДА. Поэтому есть регистр LAT - это защелка выхода. И есть регистр PORT - это сам ПИН порта. Чтение LAT - это чтение защелки, а не пина. Чтение PORT - это чтение пина.
КРАМ, про регистр LAT лучше аккуратнее говорить. Не у всех PIC контроллеров есть этот регистр, а ТС не обозначил с каким PIC-ом он работает (к примеру, у PIC16F87X нет регистра LAT).
_________________ С Уважением, Альберт (Albert_V).
КРАМ, про регистр LAT лучше аккуратнее говорить. Не у всех PIC контроллеров есть этот регистр
Причем тут аккуратность? Если регистра нет, то это следует из даташита и НИЧЕГО ПО СУЩЕСТВУ ИЗЛОЖЕННОГО МНОЙ НЕ МЕНЯЕТ. Более того, отсутствие этого регистра приводит к процедуре RMW для пина, а не для защелки. То есть понимание отличия LAT и PORT даст понимание механизма порчи состояния выходных защелок при модификации бита порта.
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 19
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения