08.12.2012, 03:38
|
#41
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,638
Сказал спасибо: 73
Сказали Спасибо 1,796 раз(а) в 648 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от snevar
|
Вот так?
А если через клавиатуру... Все-таки наверно менять много придется. (Красным) Или же как? Эти вот переключатели прямо два можно оставить? Хотя вроде принцип опроса тот же...
|
Да, все правильно, можно либо так, либо так.
Просто чем хорош вариант с клавиатурой - эти контакты будут опрашиваться вместе с остальными клавишами. Поэтому не придется делать отдельный опрос отдельного порта. Можно будет читать состояние этих контактов из любого места программы.
А, еще небольшая мелочь - R5 и R6 переправьте на 1к.
|
|
|
|
08.12.2012, 03:50
|
#42
|
Временная регистрация
Регистрация: 12.11.2010
Сообщений: 61
Сказал спасибо: 11
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от RECTO
|
Просто чем хорош вариант с клавиатурой - эти контакты будут опрашиваться вместе с остальными клавишами. Поэтому не придется делать отдельный опрос отдельного порта. Можно будет читать состояние этих контактов из любого места программы.
|
Вот это очень ценно... ![Улыбка](images/smilies/icon_smile.gif) Думаю оставлю вариант с клавиатурой...
Но вот только когда осуществляется остановка двигателя, и когда становится известно, что жалюзи открыты\закрыты?... Т.е. опрос клавиатуры, если замкнут - размыкаем, крутим двигатель.. А дальше когда мы узнаем, что открыли закрыли?.
Сообщение от RECTO
|
А, еще небольшая мелочь - R5 и R6 переправьте на 1к.
|
А, ага, все понял...
|
|
|
|
08.12.2012, 04:31
|
#43
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,638
Сказал спасибо: 73
Сказали Спасибо 1,796 раз(а) в 648 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от snevar
|
Но вот только когда осуществляется остановка двигателя, и когда становится известно, что жалюзи открыты\закрыты?... Т.е. опрос клавиатуры, если замкнут - размыкаем, крутим двигатель.. А дальше когда мы узнаем, что открыли закрыли?.
|
Крутим двигатель до замыкания контактов. Замкнутый контакт означает, что механизм дошел до одного из своих крайних положений. А какое именно положение - микроконтроллер "запоминает" в своей программе.
Последний раз редактировалось RECTO; 08.12.2012 в 04:33.
|
|
|
|
08.12.2012, 23:51
|
#44
|
Временная регистрация
Регистрация: 12.11.2010
Сообщений: 61
Сказал спасибо: 11
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от RECTO
|
Крутим двигатель до замыкания контактов. Замкнутый контакт означает, что механизм дошел до одного из своих крайних положений. А какое именно положение - микроконтроллер "запоминает" в своей программе.
|
Все, вроде понял. Спасибо огромное!! Буду пробовать еще раз...
|
|
|
|
09.12.2012, 00:43
|
#45
|
Временная регистрация
Регистрация: 12.11.2010
Сообщений: 61
Сказал спасибо: 11
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
RECTO
А вот смотрите.. тут вот как лавиатура опрашивается... А т.к. одна из двух новодобавленных клавиш будет всегда замкнута, не приведет ли это к неправильной работе? ТАм вроде если хоть одна клавиша не равна нулю, то вызывается set key команда...
|
|
|
|
09.12.2012, 02:11
|
#46
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,638
Сказал спасибо: 73
Сказали Спасибо 1,796 раз(а) в 648 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от snevar
|
т.к. одна из двух новодобавленных клавиш будет всегда замкнута, не приведет ли это к неправильной работе?
|
Не должно. Вы ведь ставите эти контакты на место незадействованной ранее клавиши. Значит, в программе реакции на нее никакой не предусмотрено. Но это в теории, конечно, а на практике надо разбираться. Иногда логика автора программы не поддается разумному объяснению.
|
|
|
|
09.12.2012, 22:54
|
#47
|
Временная регистрация
Регистрация: 12.11.2010
Сообщений: 61
Сказал спасибо: 11
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от RECTO
|
Но это в теории, конечно, а на практике надо разбираться.
|
Ну с практикой у нас там практически никак... Лишь бы в теории выглядело убедительно...)
|
|
|
|
10.12.2012, 20:03
|
#48
|
Временная регистрация
Регистрация: 12.11.2010
Сообщений: 61
Сказал спасибо: 11
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Ну вроде схема все...
А программа:
Подраздел
Проверяем постоянно кнопку, отвечающую за открытие-закрытие, если 1,
то проверяем концевые переключатели. если s16=1 - тогда открываем(подаем 1 на RA1)
если s16 не равен 1, то закрываем(1 на RA2)
Проверяем RA0(будильник), если 1,
то проверяем концевые переключатели. если s16=1 - тогда открываем(подаем 1 на RA1)
если s16 не равен 1, то закрываем(1 на RA2)
Такой примерно алгоритм? s16 и s17 - концевые переключатели.
Call CHK_s13 (проверяем кнопку)
IORLW 1
BTFSC STATUS,z (если равно единице)
Call CHK_s16 (вызывает проверку s16)
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
MOVLW A'0010' (Так подать на RA2 единицу?)
Iorlw 1 (сравниваем с 1)
BTFSC STATUS,1 (если 1)
MOVLW A'0100' (1 на RA1)
BTFSS portA,Ra0 (проверка RA0)
IORLW 1
BTFSC STATUS.z (если равно единице)
Call CHK_s16 (вызывает проверку s16)
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
MOVLW A'0010' (Так подать на RA2 единицу?)
Iorlw 1 (сравниваем с 1)
BTFSC STATUS,z (если 1)
MOVLW A'0100' (1 на RA1)
Вобщем поробовал поглядеть по аналогии с той программой, но там за проверку всегда разные команды отвечают... И.. Через IORLW можно сравнивать только с 0?
Последний раз редактировалось snevar; 10.12.2012 в 20:06.
|
|
|
|
11.12.2012, 00:15
|
#49
|
Супер-модератор
Регистрация: 09.06.2011
Сообщений: 2,638
Сказал спасибо: 73
Сказали Спасибо 1,796 раз(а) в 648 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от snevar
|
Проверяем постоянно кнопку, отвечающую за открытие-закрытие, если 1,
то проверяем концевые переключатели. если s16=1 - тогда открываем(подаем 1 на RA1)
если s16 не равен 1, то закрываем(1 на RA2)
Проверяем RA0(будильник), если 1,
то проверяем концевые переключатели. если s16=1 - тогда открываем(подаем 1 на RA1)
если s16 не равен 1, то закрываем(1 на RA2)
Такой примерно алгоритм? s16 и s17 - концевые переключатели.
|
Нет. Snevar, пожалуйста, перечитайте все то, что я Вам уже писал ранее. В частности, алгоритм работы с датчиками:
Сообщение от RECTO
|
Самый простой способ - пара концевых выключателей в крайнем открытом и крайнем закрытом положениях. Контакты соединяются параллельно. Соответственно, контроллер всегда будет видеть замкнутый контакт, но будет "помнить", в каком состоянии у него жалюзи - открыто или закрыто. Когда надо открыть или закрыть жалюзи, контроллер включает двигатель, и опрашивая порт, к которому подсоединены контакты, сначала ждет размыкания линии, а затем замыкания - это значит механизм переместился в противоположное крайнее положение, после чего останавливает двигатель.
|
То есть, если контакты разомкнуты, то механизм находится в движении. Если замыкается один из них - механизм дошел до одного из крайних положений.
Сообщение от snevar
|
Через IORLW можно сравнивать только с 0?
|
Через " IORLW 0". Да, если W=0, то после этой команды Z=1.
По программе - вообще всё не то. Я же писал уже: Вам нужно найти подпрограмму, которая отвечает за сканирование клавиатуры. Проанализировав ее, нужно найти переменные, в которые записываются текущие состояния клавиш клавиатуры. Определить бит, который отвечает за состояние клавиши S16. И в своей программе опрашивать уже этот бит.
|
|
|
|
11.12.2012, 23:50
|
#50
|
Временная регистрация
Регистрация: 12.11.2010
Сообщений: 61
Сказал спасибо: 11
Сказали Спасибо 12 раз(а) в 12 сообщении(ях)
|
Re: Часы-будильник на PIC16CXX
Сообщение от RECTO
|
Вам нужно найти подпрограмму, которая отвечает за сканирование клавиатуры. Проанализировав ее, нужно найти переменные, в которые записываются текущие состояния клавиш клавиатуры
|
Ну как я понимаю, это вот тут, где определяются клавиши(это концевые переключатели будут)... Потому что дальше вот там как с этой клавишей работают.
Сообщение от RECTO
|
контроллер включает двигатель, и опрашивая порт, к которому подсоединены контакты, сначала ждет размыкания линии, а затем замыкания - это значит механизм переместился в противоположное крайнее положение, после чего останавливает двигатель.
|
Да, это я помню, но... как мы узнаем, не проверив состояние s16 и s17, подавать ли нам единица на RA1 или на RA2?
А если так? Или я просто не совсем алгоритм понимаю.. Сначала же мы в любом случае проверяем состояние концевых...
MOVLW s13 (проверяем кнопку)
XORWF NEW_KEY,W
BTFSC STATUS,z (если нажата)
Call CHK_s16 (вызывает проверку s16)
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
MOVLW A'0010' (на RA2 единиц)
Iorlw 1 (сравниваем с 1)
BTFSC STATUS,1 (если 1) (или тут получается, "если не 1"?)
MOVLW A'0100' (1 на RA1)
Call CHK_s16(проверяем на замыкание)
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
Call CHK_s17
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
GOTO Call CHK_s16(вернуться к проверке s16)
GOTO SERV,A'0000'(иначе остановить двигатель)
BTFSS portA,Ra0 (проверка RA0)
IORLW 1
BTFSC STATUS.z (если равно единице)
Call CHK_s16 (вызывает проверку s16)
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
MOVLW A'0010' (на RA2 единицу)
Iorlw 1 (сравниваем с 1)
BTFSC STATUS,z (если 1)
MOVLW A'0100' (1 на RA1)
Call CHK_s16(проверяем на замыкание)
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
Call CHK_s17
Iorlw 0 (сравниваем с 0)
BTFSC STATUS,z (если 0)
GOTO Call CHK_s16(вернуться к проверке s16)
GOTO SERV,A'0000'(иначе остановить двигатель)
Я конечно представляю. каким идиотизмом это выглядит со стороны... Но ни с чем сложнее паскаля дело никогда не имел. И немного на него опираюсь алгоритм вижу примерно так... Это наверно все полный бред и ни капли не жизнеспособно?
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Тема |
Автор |
Раздел |
Ответов |
Последнее сообщение |
Часы-будильник
|
ninelka21pelis |
TTL и CMOS логика |
10 |
22.05.2011 10:43 |
электромеханический будильник "Слава"
|
alxchep |
Поиск схем. Делимся схемами |
2 |
07.06.2008 13:51 |
[Решено] Добрый будильник
|
dimitriy |
Отвлекитесь, эмбеддеры! |
15 |
22.02.2008 08:56 |
часы
|
transford |
Микроконтроллеры, АЦП, память и т.д |
3 |
19.06.2007 17:23 |
[Решено] Часы в TV
|
Роберт |
Видеотехника |
8 |
19.10.2005 20:11 |
Часовой пояс GMT +4, время: 15:18.
|
|