реклама на сайте
подробности

 
 
17 страниц V  « < 13 14 15 16 17 >  
Reply to this topicStart new topic
> tiny2313 & mega8, посоветуйте плз
Terapefft
сообщение Dec 14 2006, 11:59
Сообщение #211


Частый гость
**

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



померил я напряжение: при "о" - 0,9 В; при "1" - 4,9 В
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 14 2006, 15:36
Сообщение #212


Местный
***

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



Ну не знаю. Вот стоит (возле меня smile.gif )устройство работающее по примерно такому же принципу:
-- включил двигатель;
-- разрешил прерывания по INT;
-- пришёл сигнал с фотодатчика (прерывания по 0);
-- выставил флаг датчика;
-- запретил прерывания по INT;
-- вышел в главный цикл:
-- обработал флаг - выключил двигатель;
И всё жужжит без проблем.
Давай ещё раз текст программы буду смотреть smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 14 2006, 15:59
Сообщение #213


Частый гость
**

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



я попробовал сравнивать например с "20" - эффект такой же как и с "255", включается и тут же выключается, вот исходник
Прикрепленные файлы
Прикрепленный файл  inddat.txt ( 69.73 килобайт ) Кол-во скачиваний: 82
 
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 09:31
Сообщение #214


Местный
***

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



Я немного "модернизировал" твою програму для проверки, как работает INT1, в отладчике STUDIOAVR. Подсчет колчеств входа в п\п работает правильно. Прерывание по спадающему фронту -- тоже. Появление флага, в отсутствие разрешения прерывания, как я и говорил. Все работает "как доктор пропсал" smile.gif . Можешь погонять сам, я там коментарии оставил.
Прикрепленные файлы
Прикрепленный файл  11.txt ( 70.92 килобайт ) Кол-во скачиваний: 74
 


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 15 2006, 11:00
Сообщение #215


Частый гость
**

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



да прерывание работает верно, я даже на плату ставил и проверял, 3 раза замыкаю датчик и насос отключается. А в цикле таже фигня происходит как и было, я уже не знаю почему. Какая то хрень творится в delaу .... А без нее цикл не запускается. Может че нить с ней посоветуете сделать?
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 11:57
Сообщение #216


Местный
***

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



Я бы сделал так -- (пишу алгоритм код напишешь сам):
-- когда надо включать двигатель выставляешь флаг;
-- в главном цикле проверяешь этот флаг ;
-- по флагу уходишь на п\п включения двигателя в которой (не изменять последователность!) :
---- снимаешь флаг ;
---- включаешь двигатель;
---- разрешаешь прерывания;
---- выходишь из п\п;
Ну а обработка прерывания у тебя работает. Удачи! smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 15 2006, 13:08
Сообщение #217


Частый гость
**

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



я вот сделал в главном цикле:
cbr reg_flgs,0b00000001 ;
sbrc reg_flgs,1
rcall nasos
п/п включения насоса:

nasos:

sbr reg_flgs,0b00000001

ldi radr,doza_1
rcall decod


clr radr
sbr radr,1<<int1
out gicr,radr


sei
ret

и обработка прерывания таже. Все равно работает как и работал, не считает импульсы, просто при замыкании выключается и все тут. Как заколдованый блин....
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 13:46
Сообщение #218


Местный
***

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



Я же написал, что ТОЛЬКО:
Цитата
-- когда надо включать двигатель выставляешь флаг;

А он у тебя постоянно сбрасывается
Код
cbr reg_flgs,0b00000001;

в главном цикле и прерывание постоянно включается. Ты же видел в моей "модернизации":
Код
    clr radr
    sbr radr,1<<int1
    out gicr,radr
    ldi    radr,doza_1; дозатор на всасывание
    rcall    decod    
start123:
    rjmp start123

я разрешил прерывания, включил двигатель и больше прерывания не включаю.
да и алгоритм
Цитата
---- снимаешь флаг ;
---- включаешь двигатель;
---- разрешаешь прерывания;
---- выходишь из п\п;

надо изменить
---- снимаешь флаг ;
---- включаешь двигатель;
---- сбросить "лишний" флаг прерывания;
---- разрешаешь прерывания;
---- выходишь из п\п;
я писал, а меня отвлекли smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 15 2006, 14:59
Сообщение #219


Частый гость
**

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



так мне же и надо включать насос только в главном цикле, а выключатся он должен пока главный цикл не закончился. Я же так и сделал: сбросил флаг, по нему перешел в п/п включения насоса, выставил флаг, включил насос, разрешил прерывания, в прерывании опять сбросил, запретил прерывания. Или я что то не так понял? как понять сбросить "лишний" флаг?
p.s. извините за глупые вопросы, просто я совсем запутался...
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 15 2006, 15:29
Сообщение #220


Частый гость
**

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



я попробовал выставить флаг вне главного цикла (там где Вы модернизацию проводили), в главном цикле просто поставил:
sbrc reg_flgs,1
rcall nasos
в п/п включения насоса сбрасываю флаг, все равно также работает
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 16:00
Сообщение #221


Местный
***

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



Цитата(Terapefft @ Dec 15 2006, 13:59) *
так мне же и надо включать насос только в главном цикле, а выключатся он должен пока главный цикл не закончился.

Насос включается после каких-то действий оператора машины? Или гланый цикл растянут по времени на все действия машины и повторение цикла это 30-40 минут ohmy.gif ?
Цитата
как понять сбросить "лишний" флаг?

Цитата
Может возникать ситуация, когда ты разрешаешь прерывание, а флаг в GIFR (INTF1) уже висит и сразу происходит прерывание и останавливается двигатель, поэтому можно, перед "включением" прерывания, прочитать регистр флагов и записать его обратно (сброс флагов производится ЗАПИСЬЮ 1 в соответствующий бит), и если бит установлен он "сам себя" сбросит .

Это и есть"лишний" флаг smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 15 2006, 16:13
Сообщение #222


Частый гость
**

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



Работа автомата такова: после выбора всех необходимых параметров, нажимаешь кнопку "пуск", и начинается, сошлись продольные, поперечные губки, началась заварка, включился насос, налился литр, разошлись губки и насос отключился. Вот такой цикл в общих чертах. А сбросить лишний флаг таким образом :
in rin,gifr
out gifr,rin
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 16:27
Сообщение #223


Местный
***

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



Цитата(Terapefft @ Dec 15 2006, 15:13) *
Вот такой цикл в общих чертах.

И сколько "такой" цикл длится, в смысле по времени?
Цитата
А сбросить лишний флаг таким образом :
in rin,gifr
out gifr,rin

Да.


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Dec 15 2006, 16:44
Сообщение #224


Частый гость
**

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



примерно около 5 секунд. Пробовал я и лишний флаг сбрасывать, все равно нифига не работает...
Go to the top of the page
 
+Quote Post
Wild007
сообщение Dec 15 2006, 17:16
Сообщение #225


Местный
***

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



Цитата(Terapefft @ Dec 15 2006, 15:44) *
примерно около 5 секунд. Пробовал я и лишний флаг сбрасывать, все равно нифига не работает...

Ты сам понимаешь, что такой длинный цикл отладить в Студии практически нереально (особенно постороннему человеку smile.gif ). Может проблема возникать ещё и в том, что в:
Код
прерывания от INT1

используется регистр radr , но он не прячется в стек. Попробуй smile.gif .
А лишнй флаг надо сбрасывать для правильного подсчета количества "пребываний" в подпрограмме по прерыванию smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post

17 страниц V  « < 13 14 15 16 17 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 09:37
Рейтинг@Mail.ru


Страница сгенерированна за 0.0147 секунд с 7
ELECTRONIX ©2004-2016