|
|
  |
tiny2313 & mega8, посоветуйте плз |
|
|
|
Nov 22 2006, 09:51
|

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

|
Можно еще так: ..... SBRS REG_FLAG,FDOZ RJMP rrr TST T_NAS1 BRNE NNN CBR reg_flgs,1<<FDOZ LDI radr,doza_0 ; rcall decod RJMP NNN ; sbrc reg_flgs,FDOZ ; rjmp NNN rrr: ldi radr,doza_1 ; дозатор на всасывание rcall decod ; SBR reg_flgs,1<<FDOZ ;флаг включения насоса LDI T_NAS1,$a NNN: ....... timer2: push rin ldi rin,$3c ; $3c=60 out tcnt2,rin ; SBRS reg_flgs,FDOZ RJMP MMM DEC T_NAS1 ; BRNE MMM ; CBR reg_flgs,1<<FDOZ ; LDI radr,doza_0 ; ; rcall decod MMM:
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Nov 22 2006, 12:23
|

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

|
Цитата(Terapefft @ Nov 22 2006, 10:58)  я вот щас попробовал еще раз так как вы мне вчера написали, насос не включался из за того что в ПП delay параметр FDOZ выставлялся в "1" и поэтому вот здесь sbrc reg_flgs,FDOZ ; rjmp NNN
ldi radr,doza_1 ; вкл насос rcall decod ; SBR reg_flgs,1<<FDOZ ;флаг вкл насоса LDI T_NAS1,$5 насос не включался. щас он включается но не выключается. Потому что нарушен старый алгоритм работы програмы, а я предлагал (по моим подсказкам) создать новый алгоритм. Сейчас насос выключается и сразу опять включается  . Существующий алгоритм слишком прямой и запутаный, с ним разбираться -- полный рабочий день надо потратить, а времени и так в обрез.
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Nov 22 2006, 12:33
|
Частый гость
 
Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922

|
Сразу скажу, что не смотрел ваш код, но с подобными проблемами встречался. ИМХО: обратите внимания, не изменяется ли контекст процессора (регистры) при обработки прерываний. Для программ написанных на ассемблере, особенно для людей начавших заниматься микроконтроллерами с АВР, довольно распространенная ошибка.
--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
|
|
|
|
|
Nov 23 2006, 13:37
|

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

|
сегодня переделал все очередной раз, насос включается и выключается (выключение в п/п обработки прерывания таймера2), но почему то время в течении которого насос включен не изменяется (пробовал заносить туда разные значения), дикрементируется время в п/п таймера2. насос выключается после всего цикла. почему же таймер не считает???
Прикрепленные файлы
avt.txt ( 70.35 килобайт )
Кол-во скачиваний: 66
|
|
|
|
|
Nov 24 2006, 09:32
|

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

|
Цитата(Terapefft @ Nov 23 2006, 13:59)  пробовал уже, все равно не помогает. причем когда меняешь параметры (время нагрева например), уже когда контролер находится в устройстве, никак не связаные со вторым таймером, насос все равно отключается только когда проходит весь цикл Програма изобилует SEI и CLI и скорее всего где-то запрещается прерывание и до окончания цикла оно не возобнавляется. (Пробовал в отладчике).
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Nov 24 2006, 14:27
|

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

|
Цитата(Terapefft @ Nov 24 2006, 12:14)  я уже щас попробовал убрать почти все CLI все равно выключается только когда проходит весь цикл  а из за чего еще может такое происходить??? Прогони програму через DEBUG (CTRL+F7) и САМ определишь где глюк. Потратишь 2-3 часа на отладку и найдешь. За тебя никто не будет этого делать  . Потом нам раскажешь  .
--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
|
|
|
|
|
Nov 24 2006, 23:21
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(Wild007 @ Nov 24 2006, 14:27)  За тебя никто не будет этого делать  . Потом нам раскажешь  . 2 TerfpefftЕсли Вы реально хотите разобраться как это все работает, то ИМХО, Вам стоит потратить пару дней, на выяснение всех подробностей работы прерываний, и прерываний таймеров в частности... Попробуйте на время забыть про все Ваши насосы с нагревателями, и просто напишите тестовую программу такого вида: 1.Используем 1 таймер, например таймер1 (только 1 таймер!!!) 2. В качестве испольнительных механизмов выбираем "светодиоды" ну например на порту B, "1" горит ,"0" не горит, 4-8 штук. 3.Для каждого диода на порту В заданы, время сколько он должен гореть и сколько "не гореть". 4.и так до бесконечности Если Вы не поленитесь выполнить данное задание (если будут вопросы- поможем), то, ИМХО, без труда исправите все ошибки в "Вашем" коде, хотя, скорее всего после этого, Вы его перепишите полностью, причем в худшем случае, неделя писать, неделя отлаживать... А отлаживать(искать ошибки) в 70+Кб чужого кода не будет никто...
|
|
|
|
|
Nov 27 2006, 08:53
|

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

|
2 singlskv харашо  ) попробую....только с этой прогой я уже не успел, оборудование уже отгружать надо...придется аппаратно решать проблему
|
|
|
|
|
  |
5 чел. читают эту тему (гостей: 5, скрытых пользователей: 0)
Пользователей: 0
|
|
|