|
|
  |
tiny2313 & mega8, посоветуйте плз |
|
|
|
Dec 12 2006, 15:37
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Инициализация INT1 должна быть: Код CLR RIN LDI rin,1<<ISC11 OUT MCUCR,RIN Такая форма записи позволяет ТОЧНО и ЛЮБОМУ контролировать, что ты пишешь в регистр, а у тебя: Код ldi rin,0b00000100 out mcucr,rin настраивает на Цитата Any logical change on INT1 generates an interrupt request Смотри DS стр.66
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Dec 12 2006, 17:07
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Смотри таблицу Код ;Выводы дешифратора: ;включение: там каката бяка и кроме тебя никто разобраться не сможет не имея перед глазами тот дешифратор каким управляет М/К
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Dec 13 2006, 11:44
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 14-06-06
Из: Рязань
Пользователь №: 18 052

|
я просмотрел таблицу, вроде все правильно. Вот что я сейчас обнаружил: команда на выключение насоса выполняется только после того как выполнятся следующие команды
ldi radr,gpop_0 ; развести поперечные губки rcall decod ldi radr,gprod_0 ; развести продольные губки rcall decod
ldi radr,torm_0 ; отпустить тормоз rcall decod ldi radr,pc1_0 ; выключить счетчик rcall decod они как раз и стоят в конце рабочего цикла. Я поставил все эти команды в п/п обработки прерывания INT1:
cnt_int1: push rin in rin1,sreg ; запомнить регистр push rin1
; inc cntdat ; cpi cntdat,$01 ; brne NNN ldi radr,gpop_0 ; развести поперечные губки rcall decod ldi radr,gprod_0 ; развести продольные губки rcall decod
ldi radr,torm_0 ; отпустить тормоз rcall decod ldi radr,pc1_0 ; выключить счетчик rcall decod
ldi radr,doza_0;отключить насос rcall decod sbr reg_flgs,0b00000001 ;флаг насоса ; clr cntdat
sbr svet,0b00010000 ; светить Т1 clr rin ; запрет прерывания out gicr,rin ;NNN: pop rin1 ; out sreg,rin1 pop rin reti
и теперь насос отключается сразу же как только я замкну датчик. У меня возникли следующие вопросы: 1. Можно ли как нибудь развязать эти команды и почему же все таки так получается? 2. Если в начале цикла датчик в замкнутом состоянии то насос не включается, хотя в п/п я запрещаю прерывание, почему так происходит???
|
|
|
|
|
Dec 13 2006, 12:01
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Цитата 1. Можно ли как нибудь развязать эти команды и почему же все таки так получается? Это и есть последовательность команд для твоего "дешифратора" Цитата 2. Если в начале цикла датчик в замкнутом состоянии то насос не включается, хотя в п/п я запрещаю прерывание, почему так происходит??? Привиди еще раз код инициализации INT1 и как включается прерывание, Может возникать ситуация, когда ты разрешаешь прерывание, а флаг в GIFR (INTF1) уже висит и сразу происходит прерывание и останавливается двигатель, поэтому можно, перед "включением" прерывания, прочитать регистр флагов и записать его обратно (сброс флагов производится ЗАПИСЬЮ 1 в соответствующий бит), и если бит установлен он "сам себя" сбросит  .
Сообщение отредактировал Wild007 - Dec 13 2006, 12:02
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Dec 13 2006, 12:49
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 14-06-06
Из: Рязань
Пользователь №: 18 052

|
инициализация INT1: CLR RIN LDI rin,1<<ISC11 OUT MCUCR,RIN
потом в главном цикле: ldi radr,doza_1 ; включить насос rcall decod ; cbr reg_flgs,0b00000001 ;
ldi rin,0b10000000 out gicr,rin в прерывании : clr rin ; запрет прерывания out gicr,rin
А по поводу команд: раньше же когда упправлялось клапаном (там стояло два датчика), клапан же возвращался в исходное состояние при достижении нужного датчика, или эти команды так и будут выполнятся только последовательно??? разве нельзя ничего с этим поделать?
|
|
|
|
|
Dec 13 2006, 14:28
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Цитата А по поводу команд: раньше же когда упправлялось клапаном (там стояло два датчика), клапан же возвращался в исходное состояние при достижении нужного датчика, или эти команды так и будут выполнятся только последовательно??? разве нельзя ничего с этим поделать? Для ответа на этот вопрос надо знать, хотя бы, схему "дешифратора" или алгоритм его работы. Я не люблю гадать на кофейной гуще  . Ты же сам пишешь Цитата клапан же возвращался в исходное состояние при достижении нужного датчика, и из этого текста я делаю вывод, что, так называемое "выключение двигателя", выполнялось с помощию "дешифратора", а не програмно. Теперь, не зная алгоритма работы "дешифратора", ты пытаешься управлять чем-то не зная чем  . Кто-то же создавал этот "дешифратор"? Если его найти тяжело, то надо просто похерить эту разработку и создавать новую с нуля. Будет быстрее и ИМХО тебе в "мелких деталях" помогут на этом форуме.
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Dec 13 2006, 17:15
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 14-06-06
Из: Рязань
Пользователь №: 18 052

|
я вот попробовал прочиттать состояния регистра gifr и записать его обратно: in rin,gifr out gifr,rin ldi rin,0b10000000 out gicr,rin но все равно при замкнутом датчике не включается насос  и функция сравнения почему то не выполняется, которая в прерывании, а просто при замыкании датчика сразу выключается. На счет "переписать прогу": мне к сожалению не дадут времени для этого  такая вот у нас хреновая контора...я уже просил выделить мне время для этого - сказали что нифига...
|
|
|
|
|
Dec 14 2006, 09:19
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Цитата но все равно при замкнутом датчике не включается насос и функция сравнения почему то не выполняется, При "замыкании" датчика может возникнуть N мпульсов и количество может быть достаточно большим. Поэтому попробуй сравнение с 255. А что на счет схемы "дешифратора"?
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Dec 14 2006, 09:37
|

Частый гость
 
Группа: Свой
Сообщений: 167
Регистрация: 14-06-06
Из: Рязань
Пользователь №: 18 052

|
вот схема дешифратора (КР1533ИР30) а вот таблица к нему, я вчера проверил, все вроде правильно
Эскизы прикрепленных изображений
|
|
|
|
|
Dec 14 2006, 10:33
|

Местный
  
Группа: Свой
Сообщений: 226
Регистрация: 25-03-05
Из: Беларусь
Пользователь №: 3 672

|
Цитата дешифратора (КР1533ИР30) Это просто расширитель порта. И управление двигателем "доза" идет по ОТ1, туда пишется 0 или 1. И, если, там больше нет ни какой логики, то он должен включаться и выключаться без проблем. Цитата ведь если я его замнкул и не размыкаю вроде никаких импульсов не должно поступать на контролер... Схема подключения твоя или переделал как я советовал?
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|