Помогите разобраться с RA4 на PIC16F628A
|
|
igor--ok |
Дата: Пн, 20.05.2013, 18:25 | Сообщение # 1 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 23.09.2012
Статус:
Offline
|
Проблема в следующем: Выход RA4 подтянут к + питания резистором 2,2к и соединен с базой КТ315, который включает реле. Команда HIGH Relay переводит его (вывод) в высокое логическое состояние. Но как только начинается подпрограмма индикации, RA4 тут же возвращается в низкое логическое состояние. Т.е. реле "тикает", втянуться не может. Если убрать индикацию, реле втягивается и работает. Что не так? В Протеусе нормально работает.
|
|
|
|
shaman |
Дата: Пн, 20.05.2013, 18:48 | Сообщение # 2 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
День добрый , схему протеуса скиньте. Опишите конкретно весь принцип работы,что должно выводиться на сегменты при нажатии кнопки и т.д
Сообщение отредактировал
shaman - Пн, 20.05.2013, 21:10
|
|
|
|
igor--ok |
Дата: Пн, 20.05.2013, 22:23 | Сообщение # 3 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 23.09.2012
Статус:
Offline
|
Схему скину завтра. Вкратце алгоритм такой. Вывод переводится в состояние лог.1 Затем следует 300 циклов динамической индикации, если не нажата кнопка. Так вот в процессе индикации вывод RA4 снова переходит в состояние лог."0" Почему??? Если нажать кнопку, динамической индикации не будет и вывод RA4 не изменит своего состояния. Может в программе ошибка? Катоды четырех сегментов подключены к RA0-RA3. На индикацию выводится одно и то же значение для простоты. (раньше выводилось время) В программе вообще нет команды перевода RA4 в состояние лог.0 Единица там появляется через подтягивающий резистор. Как индикация влияет на состояние порта А4?
Сообщение отредактировал
igor--ok - Пн, 20.05.2013, 22:28
|
|
|
|
shaman |
Дата: Пн, 20.05.2013, 22:33 | Сообщение # 4 |
Группа:
Проверенные
Ранг:
Могу и подсказать
Сообщений:
178
Замечания:
±
На сайте с 07.11.2011
Статус:
Offline
|
Чета совсем не понял. 1. Если нажать кнопку, динамической индикации не будет и вывод RA4 не изменит своего состояния. ???????? если в программе у Вас If ButHour = 1 Then GoSub Ind
|
|
|
|
igor--ok |
Дата: Вт, 21.05.2013, 06:06 | Сообщение # 5 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 23.09.2012
Статус:
Offline
|
ButHour - это кнопка. При нажатии принимает значение лог."0" Так я и написал: если кнопка имеет значение "1" (т.е. кнопка не нажата) - то выполнить подпрограмму индикации (gosub ind) Кнопку я специально ввел, чтобы можно было в процессе работы отключать индикацию. Нужно было убедиться, что именно в процессе ин дикации порт ra4 самовольно меняет свое состояние с "1" на "0"
|
|
|
|
anatol |
Дата: Вт, 21.05.2013, 13:05 | Сообщение # 6 |
Группа:
Проверенные
Ранг:
Помогаю всем
Сообщений:
471
Замечания:
±
На сайте с 10.02.2010
Статус:
Offline
|
Скорее всего не соблюдается Ч-М-З
|
|
|
|
DAlexV |
Дата: Вт, 21.05.2013, 21:44 | Сообщение # 7 |
Группа:
Проверенные
Ранг:
Разобрался
Сообщений:
657
Замечания:
±
На сайте с 13.05.2008
Статус:
Offline
|
Цитата anatolСкорее всего не соблюдается Ч-М-З Ну почти что так. Только все дело кроется в железе, а не софте. Нашел описание проблемы на Микрочипе, сам правда на такие грабли не попадался, но думаю многим будет интересно знать про них. Скрытый текст http://www.microchip.su/showthread.php?t=3303&page=2 с 33 поста и ....
Успехов
Будьте оригинальны-не повторяйте чужих ошибок ! Рыба сдохла. Теперь STM32(TS)+C#(VS).Старею :)
Сообщение отредактировал
DAlexV - Вт, 21.05.2013, 21:45
|
|
|
|
igor--ok |
Дата: Вт, 21.05.2013, 22:18 | Сообщение # 8 |
Группа:
Проверенные
Ранг:
Новенький
Сообщений:
13
Замечания:
±
На сайте с 23.09.2012
Статус:
Offline
|
Спасибо всем за участие. Проблема решена!!! Причина крылась в слишком большом сопротивлении подтягивающего резистора. 2,2кОм заменил на 270 Ом. Всё заработало как часы. (это часы, собственно говоря и есть)) После строки "High PortA.4" Вывод переводится в высокое (благодаря подтяжке) логическое состояние и в нём остается аж до строки"Low PortA.4"
|
|
|
|