Страница 2 из 3
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 13:51:54
Аlex
Порт "отпускать" нужно не через RAx, а через TRISAx.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 13:54:38
Bkmz
Аlex писал(а):Порт "отпускать" нужно не через RAx, а через TRISAx.
Но ведь это открытый сток, почему бы и нет? Не понимаю тогда принципа?
И в первом случае он отпускается, а после сброса С - не хочет.
2.7 Запрещается полное цитирование предыдущего сообщения. Допускается цитирование только части сообщения, необходимой для смысловой связи с предыдущим сообщением.
Предусматриваются следующие виды наказаний за нарушение пунктов данных Правил: за нарушение: п 2.7 - Предупреждение. При повторном нарушении - бан на усмотрение модератора.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:00:05
Аlex
Bkmz писал(а):Проект целиком чуть выше. Ну да ладно, вот этот кусок:
Код: Выделить всё
RA4=0; //на порт повесили 0
__delay_ms(DT); //
RA4=1; //порт отпустили (Z)
if (d1==0) PORTC=0; //при обнулении PORTC происходит прижимание к 0 RA4
else PORTC = number[d1]; //
RA4=1; //пытаюсь отпустить (состояние Z) RA4, но увы, ничего не меняется
Не нашёл в проекте чуть выше этого куска кода. Хотел проверить в протеусе его, так было бы нагляднее что происходит.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:08:48
Bkmz
Вот здесь точно найдете 144-ая строка и ниже
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:10:05
Аlex
а после сброса С - не хочет
Ну всё теперь понятно стало. У Вас с порта С минус идёт на эту ногу через резик и светодиод, по этому, при сбросе PORTC, на ноге RA4 появляется нолик (ключа то, подтягивающего к плюсу, у него нет). Соответственно, чтобы Вы не записвали в RA4, на ноге реально будет всегда висеть минус.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:15:42
Bkmz
Ну это то и мне понятно, но почему сам регистр PORTA то не модифицируется этой командой? Ну считали мы с этого порта 0, модифицируем в 1 и выдаем в порт, тем самым отпускаем (Z). Что не так понимаю?
Или это Протеус так ведет себя, а в реале будет иначе?
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:29:17
Аlex
Bkmz писал(а):но почему сам регистр PORTA то не модифицируется этой командой?
С чего Вы это взяли ? Всё модифицируется, и на протяжении всех команд, от RA4=1", там висит единица.
А вот следующей командой (RA0=1) он уже сбрасывается. Думаю, понятно почему...
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:36:46
Bkmz
Ладно попробую иначе. Оцепил эту ногу от светика. Делаю RA=1. Вывод отключается от 0 и переходит в Z. Ну т.е. как бы там 1. Но во внутреннем то регистре PORTA почему все нули, ведь при всех нулях этот вывод должен по идее прижат к земле.

Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:38:02
Аlex
Но во внутреннем то регистре PORTA почему все нули
Повторю свой вопрос. С чего Вы это взяли ? Где смотрите ?
Я Вам продемонстрировал, что это не так.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:39:52
Bkmz
опоздал. Всё ясно. А вот в МПЛАБЕ регистр нифига в 1 не выставляется, так и висит 0. Видимо косяк МПЛАБА. Спасибо, что разжевали, заодно и косяк выяснился МПЛаба
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:45:28
Аlex
Ну это, думаю, не косяк. Он просто показывает что реально находится на PORTA.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:48:32
Аlex
Аlex писал(а):Он просто показывает что реально находится на PORTA.
Да, так и есть. Повесил PU и он стал показывать единицу в 4-ом разрядее.
Так что МПЛАБ "умнее" протеуса

Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 14:59:47
HHIMERA
Аlex писал(а):Порт "отпускать" нужно не через RAx, а через TRISAx.
Решил постареть и не разговаривать с соседями по лавочке как Дубровенко???
Зачем через TRISAx... в чём тайный смысл??? Для PA4 это лишнее...
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 15:02:27
Аlex
Зачем через TRISAx... в чём тайный смысл???
а как ещё сделать Z-состояние на выводе ? Есть другие варианты ?
ЗЫ: Задела фраза, адресуемая Диме ?

Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 15:04:58
Bkmz
Аlex писал(а):Повесил PU и он стал показывать единицу в 4-ом разрядее.
Так что МПЛАБ "умнее" протеуса

PU- это подтягивающий резистор? Ну не думаю, что умнее, меня так это наоборот с толку сбило. А в Протеусе ни разу не пробовал исходник запускать. Сейчас первый раз попробовал и действительно ведь во внутреннем регистре 1 весит, а на RA4 - ноль. Спасибо Вам.
А не подскажете как перевести двоично-десятичный код в двоичный, а то че то не могу ничего найти, или хотя бы алгоритм.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 15:26:31
dosikus
Bkmz, что за компилятор.
И как определен RA4 ?
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 15:29:08
HHIMERA
Аlex писал(а): Есть другие варианты ?
Для RA4 с OD без вариантов... настраиваем на вывод... если нужно Z-состояние, то просто пишем туда "1"... TRISA не трогаем...
Эта нога наилучшим образом приспособлена под one wire... должен знать...
Пркалывают инетовские говнокоды one wire под STM8, STM32 и др. ... настраивают пин как OD, а потом ещё и дёргают DDR или MODER... а зачем???

Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 15:41:10
Bkmz
dosikus писал(а):Bkmz, что за компилятор.
И как определен RA4 ?
Hi-Tech. Определен как цифровой выход.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 20:40:10
Dmitry Dubrovenko
Аlex писал(а):Открытый сток на выходе может давать только лог "0" (не считая Z-состояния)
А пулл-ап если подключается, то такая "1" уже не считается?

Вы внимательно прочтите, о чём я писАл.
Ну, а насчёт "поговорить", Стас уже всё сказал.
Могу только насчёт "кажется" добавить, но не буду.

Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 21:08:13
dosikus
HHIMERA писал(а):... настраивают пин как OD, а потом ещё и дёргают DDR или MODER... а зачем???

По AVR'вской привычке...
