Страница 1 из 3
Снова PIC16F874
Добавлено: Чт дек 13, 2012 16:31:34
dfcbkbq
как расчитать RC-цепочку, которая подключена к ШИМу микроконтроллера, и которая должна идти на полевик, который должен выдавать порядка 20А тока?
Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 15:00:04
Bkmz
Не буду новую тему создавать, потому что есть проблема с таким контроллером. В общем такая фигня. Порт А весь на выход. Порт С тоже. Так вот выставляю на RA4=1, затем обнуляю весь Порт С и у меня RA4 устанавливается в 0. Почему так? Все делаю в MPLAB+Протеус.
Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 16:44:42
otest
Может пому что всё делаеш в в MPLAB+Протеус. Попробуй один МПлаб.
Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 16:52:22
Аlex
Читаем долго, упорно и оооочень внимательно -
http://ww1.microchip.com/downloads/en/D ... 30292D.pdf , если быть точнее - раздел
I/O Ports, а ещё точнее -
PORTA. После прочтения, Ваш вопрос отпадёт моментально. Если, конечно, читать будете внимательно.
Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 20:08:01
dosikus
Bkmz, не забываем что RA4 - open drain. Классические грабли...
Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 20:45:07
Аlex
Ну вот,
dosikus не вытерпел

А я хотел чтоб человек сам дочитался до истины

Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 21:24:19
dosikus
Аlex писал(а):Ну вот,
dosikus не вытерпел
Не говори-ка...

Re: Снова PIC16F874
Добавлено: Чт сен 05, 2013 21:36:17
Аlex
Мне кажется, нужно уже создавать тему с названием "RA4" и поднимать её в самый верх.
Совсем народ не желает пользоваться документацией. Обленился ....

Re: Снова PIC16F874
Добавлено: Пт сен 06, 2013 22:04:06
Dmitry Dubrovenko
RA4 - open drain
Я, конечно, дико извиняюсь, но какое отношение "открытый сток" имеет к установке порта в "0"?
Полагаю, надо сперва на схему ТС взглянуть.
P.S.: Кстати, в Протеусе, насколько помню, надо ставить пулл-апом "аналоговый" резистор. "Цифровой" не канает.
Re: Снова PIC16F874
Добавлено: Пт сен 06, 2013 22:06:51
Dmitry Dubrovenko
otest писал(а):Может пому что всё делаеш в в MPLAB+Протеус. Попробуй один МПлаб.
А ведь всего неделю назад кое-кто поносил меня последними словами за совет не заниматься ДжиДэЭмом.
Нарушение
2.2 Запрещается создание нескольких сообщений подряд в одной теме. Если вы хотите что-то добавить к своему, уже написанному сообщению, воспользуйтесь кнопкой "Правка".
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 10:30:58
Bkmz
Про открытый сток я прекрасно знаю. Дело в том что самом регистре PORTA он устанавливается в 0. Мне по идее открытый сток и нужен, потому как там светик весит катодом на этот порт. В общем проблему пока решил переносом на свободный RA5. Но все же хотелось бы выяснить на будущее почему так происходит?
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 10:35:09
dosikus
Bkmz писал(а): Но все же хотелось бы выяснить на будущее почему так происходит?
Предлагаете вместе погадать?
Схему и код выложите ...
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 10:50:22
Bkmz
Там где брекпоинт есть комменты, думаю разберетесь. Заодно сразу еще вопрос, как мне преобразовать код набранный в двоично-десятичной системе и преобразовать его в шестнадцатиричную. Считываю я его через регистры по 4 бита, соответственно число в десятичном виде четырехразрядное, так вот как его перевести в шестнадцатиричный вид?
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 11:16:21
Soir
Bkmz писал(а):...Дело в том что самом регистре PORTA он устанавливается в 0...
Посмотрите выполняемый код в ассемблере. И прочтите даташит, в частности "Чтение регистра PORTA возвращает состояние на выводах порта, а запись производится в защелку PORTA. Все операции записи в порт выполняются по принципу «чтение – модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку." Это с другого PIC, но принцип тот же.
Если подтянуть RA4 к питанию, то все будет нормально.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 11:21:45
Bkmz
Soir писал(а):Bkmz писал(а):...Дело в том что самом регистре PORTA он устанавливается в 0...
Посмотрите выполняемый код в ассемблере. И прочтите даташит, в частности "Чтение регистра PORTA возвращает состояние на выводах порта, а запись производится в защелку PORTA. Все операции записи в порт выполняются по принципу «чтение – модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку." Это с другого PIC, но принцип тот же.
Если подтянуть RA4 к питанию, то все будет нормально.
Тьфу, черт. А ведь все верно. Надо ж как ступил. Спасибо Вам огромное

т.е. получается если какой-то один порт меняю, то обновляются все сразу что ли?
Тогда почему у меня в программе после обнуления PORTC ставлю команду RA4=1 и он так и остается в 0? Блин. Это если без подтягивающего резистора .
А по второму вопросу подскажет кто-нибудь?
2.7 Запрещается полное цитирование предыдущего сообщения. Допускается цитирование только части сообщения, необходимой для смысловой связи с предыдущим сообщением.
Предусматриваются следующие виды наказаний за нарушение пунктов данных Правил: за нарушение: п 2.7 - Предупреждение. При повторном нарушении - бан на усмотрение модератора.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 11:54:19
Аlex
Dmitry Dubrovenko писал(а):RA4 - open drain
какое отношение "открытый сток" имеет к установке порта в "0"?
Дмитрий, мне порой кажется, что Вы - одинокий пожилой мужчина, к которому никто не ходит в гости и игнорируют соседи на лавочках. Вам поговорить чтоли нескем и неочем ?
Открытый сток на выходе может давать только лог "0" (не считая Z-состояния), т.к. ключ только один - на землю !
ставлю команду RA4=1 и он так и остается в 0?
Вы сами ответили на свой вопрос :
Это если без подтягивающего резистора

Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 12:53:58
dosikus
Bkmz писал(а):Про открытый сток я прекрасно знаю.
Bkmz писал(а):Это если без подтягивающего резистора .
Цирк...
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 13:39:44
Bkmz
Ну да ))) в общем сам себя запутал. Мне не совсем понятна операция "чтение-модификация-запись". Т.е. прочитали, изменили и выдали обратно. У меня получается так: RA4=0 зажгли светик, далее RA4=1, тем самым вывод к воздуху подвесили (открытый сток), потому как через светик 1 пролетала. Далее сбрасываю PORTC. И тут со всеми портами происходит чтение-модификация запись, потому как и RA4 меняет состояние. Но почему тогда PORTC уже успел модифицироваться и выдал нули, а PORTA это делает позже, потому как через светик уже не летит 1, и со входа RA4 читается 0, модификации не происходит и выдается обратно 0. Надо полагать, что сброс порта происходит без чтения-модификация-запись, а сразу же. Далее. Ну пусть он сбросился этот RA4. Но почему тогда я подаю после этого команду RA4=1 но модификации не происходит. Ведь пофиг что мы прочитали там с него, модификация то должна же происходить? Или чего я не понимаю?
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 13:42:36
Аlex
Или чего я не понимаю?
Скорее, не понимаем мы

Приложите кусок кода и по нему объясняйте пошагово что у Вас происходит.
Re: Снова PIC16F874
Добавлено: Сб сен 07, 2013 13:47:15
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, но увы, ничего не меняется