Снова PIC16F874
- Сообщения: 43
- Зарегистрирован: Чт ноя 29, 2012 18:42:28
как расчитать RC-цепочку, которая подключена к ШИМу микроконтроллера, и которая должна идти на полевик, который должен выдавать порядка 20А тока?
- Реклама
- Сообщения: 164
- Зарегистрирован: Пт сен 02, 2011 09:14:44
Не буду новую тему создавать, потому что есть проблема с таким контроллером. В общем такая фигня. Порт А весь на выход. Порт С тоже. Так вот выставляю на RA4=1, затем обнуляю весь Порт С и у меня RA4 устанавливается в 0. Почему так? Все делаю в MPLAB+Протеус.
- Сообщения: 7853
- Зарегистрирован: Ср фев 11, 2009 20:35:58
Читаем долго, упорно и оооочень внимательно - http://ww1.microchip.com/downloads/en/D ... 30292D.pdf , если быть точнее - раздел I/O Ports, а ещё точнее - PORTA. После прочтения, Ваш вопрос отпадёт моментально. Если, конечно, читать будете внимательно.
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
- Реклама
Ну вот, dosikus не вытерпел
А я хотел чтоб человек сам дочитался до истины 
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Мне кажется, нужно уже создавать тему с названием "RA4" и поднимать её в самый верх.
Совсем народ не желает пользоваться документацией. Обленился ....
Совсем народ не желает пользоваться документацией. Обленился ....
Я, конечно, дико извиняюсь, но какое отношение "открытый сток" имеет к установке порта в "0"?RA4 - open drain
Полагаю, надо сперва на схему ТС взглянуть.
P.S.: Кстати, в Протеусе, насколько помню, надо ставить пулл-апом "аналоговый" резистор. "Цифровой" не канает.
ICQ нет, и, в ближайшее время, не будет.
А ведь всего неделю назад кое-кто поносил меня последними словами за совет не заниматься ДжиДэЭмом.otest писал(а):Может пому что всё делаеш в в MPLAB+Протеус. Попробуй один МПлаб.
Нарушение
2.2 Запрещается создание нескольких сообщений подряд в одной теме. Если вы хотите что-то добавить к своему, уже написанному сообщению, воспользуйтесь кнопкой "Правка".
Последний раз редактировалось AlekseyEnergo Пн сен 09, 2013 09:41:52, всего редактировалось 1 раз.
Причина: .
Причина: .
ICQ нет, и, в ближайшее время, не будет.
- Сообщения: 164
- Зарегистрирован: Пт сен 02, 2011 09:14:44
Про открытый сток я прекрасно знаю. Дело в том что самом регистре PORTA он устанавливается в 0. Мне по идее открытый сток и нужен, потому как там светик весит катодом на этот порт. В общем проблему пока решил переносом на свободный RA5. Но все же хотелось бы выяснить на будущее почему так происходит?
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Предлагаете вместе погадать?Bkmz писал(а): Но все же хотелось бы выяснить на будущее почему так происходит?
Схему и код выложите ...
- Сообщения: 164
- Зарегистрирован: Пт сен 02, 2011 09:14:44
Там где брекпоинт есть комменты, думаю разберетесь. Заодно сразу еще вопрос, как мне преобразовать код набранный в двоично-десятичной системе и преобразовать его в шестнадцатиричную. Считываю я его через регистры по 4 бита, соответственно число в десятичном виде четырехразрядное, так вот как его перевести в шестнадцатиричный вид?
- Вложения
-
- Encoder_test.rar
- (100.41 КБ) 224 скачивания
Посмотрите выполняемый код в ассемблере. И прочтите даташит, в частности "Чтение регистра PORTA возвращает состояние на выводах порта, а запись производится в защелку PORTA. Все операции записи в порт выполняются по принципу «чтение – модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку." Это с другого PIC, но принцип тот же.Bkmz писал(а):...Дело в том что самом регистре PORTA он устанавливается в 0...
Если подтянуть RA4 к питанию, то все будет нормально.
- Сообщения: 164
- Зарегистрирован: Пт сен 02, 2011 09:14:44
Тьфу, черт. А ведь все верно. Надо ж как ступил. Спасибо Вам огромноеSoir писал(а):Посмотрите выполняемый код в ассемблере. И прочтите даташит, в частности "Чтение регистра PORTA возвращает состояние на выводах порта, а запись производится в защелку PORTA. Все операции записи в порт выполняются по принципу «чтение – модификация - запись», т.е. сначала производится чтение состояния выводов порта, затем изменение и запись в защелку." Это с другого PIC, но принцип тот же.Bkmz писал(а):...Дело в том что самом регистре PORTA он устанавливается в 0...
Если подтянуть RA4 к питанию, то все будет нормально.
Тогда почему у меня в программе после обнуления PORTC ставлю команду RA4=1 и он так и остается в 0? Блин. Это если без подтягивающего резистора .
А по второму вопросу подскажет кто-нибудь?
2.7 Запрещается полное цитирование предыдущего сообщения. Допускается цитирование только части сообщения, необходимой для смысловой связи с предыдущим сообщением.
Предусматриваются следующие виды наказаний за нарушение пунктов данных Правил: за нарушение: п 2.7 - Предупреждение. При повторном нарушении - бан на усмотрение модератора.
Последний раз редактировалось AlekseyEnergo Пн сен 09, 2013 09:42:45, всего редактировалось 1 раз.
Причина: .
Причина: .
Дмитрий, мне порой кажется, что Вы - одинокий пожилой мужчина, к которому никто не ходит в гости и игнорируют соседи на лавочках. Вам поговорить чтоли нескем и неочем ?Dmitry Dubrovenko писал(а):какое отношение "открытый сток" имеет к установке порта в "0"?RA4 - open drain
Открытый сток на выходе может давать только лог "0" (не считая Z-состояния), т.к. ключ только один - на землю !
Вы сами ответили на свой вопрос :ставлю команду RA4=1 и он так и остается в 0?
Это если без подтягивающего резистора
- Сообщения: 3604
- Зарегистрирован: Пн июл 28, 2008 22:12:01
Bkmz писал(а):Про открытый сток я прекрасно знаю.
Цирк...Bkmz писал(а):Это если без подтягивающего резистора .
- Сообщения: 164
- Зарегистрирован: Пт сен 02, 2011 09:14:44
Ну да ))) в общем сам себя запутал. Мне не совсем понятна операция "чтение-модификация-запись". Т.е. прочитали, изменили и выдали обратно. У меня получается так: RA4=0 зажгли светик, далее RA4=1, тем самым вывод к воздуху подвесили (открытый сток), потому как через светик 1 пролетала. Далее сбрасываю PORTC. И тут со всеми портами происходит чтение-модификация запись, потому как и RA4 меняет состояние. Но почему тогда PORTC уже успел модифицироваться и выдал нули, а PORTA это делает позже, потому как через светик уже не летит 1, и со входа RA4 читается 0, модификации не происходит и выдается обратно 0. Надо полагать, что сброс порта происходит без чтения-модификация-запись, а сразу же. Далее. Ну пусть он сбросился этот RA4. Но почему тогда я подаю после этого команду RA4=1 но модификации не происходит. Ведь пофиг что мы прочитали там с него, модификация то должна же происходить? Или чего я не понимаю?
Скорее, не понимаем мыИли чего я не понимаю?
Приложите кусок кода и по нему объясняйте пошагово что у Вас происходит.
- Сообщения: 164
- Зарегистрирован: Пт сен 02, 2011 09:14:44
Проект целиком чуть выше. Ну да ладно, вот этот кусок:
Код: Выделить всё
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, но увы, ничего не меняется


