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

 
 
> tiny2313 & mega8, посоветуйте плз
Terapefft
сообщение Nov 10 2006, 08:54
Сообщение #1


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

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



Доброго времени суток господа!!
Подскажите пожалуйста начинающему....Передо мной стоит задача следующего характера: в оборудовании имеется плата индикации (на ней стоит tiny2313) и плата управления (на ней mega8). Недавно я переделывал прогу для тини2313 (раньше там использовался s1200). Сейчас стоит задача переделать немного прогу на мегу8....
Сейчас она управляет клапаном, т.е. при достижении клапаном определеного датчика (на 0,5 литра или на 1 л), он возвращается обратно, дозируя тем самым необходимое количество жидкости. Но теперь необходимо просто поставить насос (сигнал с платы идет на частотник, а насос подключен к нему), который будет дозировать следующим образом: включатся на некоторый промежуток времени (который можно будет изменять) и выключатся. Алгоритм работы я представляю: нужен регистр в который будет сохранятся введеное значение с платы индикации, потом это значение должно попасть в счетчик, и в самой програме после выставления флага на включение насоса перейти на ПП обработки прерывания для выдержания насоса во включеном состоянии нужное количество времени. Посоветуйте пожалуйста как это все лучше сделать... Вот исходник проги для платы управления
Прикрепленные файлы
Прикрепленный файл  avtomat.txt ( 69.4 килобайт ) Кол-во скачиваний: 112
 
Go to the top of the page
 
+Quote Post
17 страниц V   1 2 3 > »   
Start new topic
Ответов (1 - 99)
Семён
сообщение Nov 10 2006, 10:13
Сообщение #2


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(Terapefft @ Nov 10 2006, 11:54) *
Доброго времени суток господа!!
Подскажите пожалуйста начинающему....Передо мной стоит задача следующего характера: в оборудовании имеется плата индикации (на ней стоит tiny2313) и плата управления (на ней mega8). Недавно я переделывал прогу для тини2313 (раньше там использовался s1200). Сейчас стоит задача переделать немного прогу на мегу8....
Сейчас она управляет клапаном, т.е. при достижении клапаном определеного датчика (на 0,5 литра или на 1 л), он возвращается обратно, дозируя тем самым необходимое количество жидкости. Но теперь необходимо просто поставить насос (сигнал с платы идет на частотник, а насос подключен к нему), который будет дозировать следующим образом: включатся на некоторый промежуток времени (который можно будет изменять) и выключатся. Алгоритм работы я представляю: нужен регистр в который будет сохранятся введеное значение с платы индикации, потом это значение должно попасть в счетчик, и в самой програме после выставления флага на включение насоса перейти на ПП обработки прерывания для выдержания насоса во включеном состоянии нужное количество времени. Посоветуйте пожалуйста как это все лучше сделать... Вот исходник проги для платы управления

В меге8 есть еще один таймер, который Вы не используете в программе. Запрограммируйте его с нужной Вам дискретностью (точность отсчета) и по переполнению декрементируете значение с платы индикации, как дойдете до нуля выставляете флаг «Насос отключить»


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 10 2006, 10:53
Сообщение #3


Гуру
******

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



Цитата(Terapefft @ Nov 10 2006, 11:54) *
Посоветуйте пожалуйста как это все лучше сделать... Вот исходник проги для платы управления

Посоветовать не жалко... Не обижайтесь, но может Вам опыта набраться, прежде чем двухпроцессорные комплексы разрабатывать ?
Простейший вопрос - обработка ошибок. Человек нажимает на кнопки, а если что-то не отработало, но на табло он увидеть, что что-то не в порядке. Значит, подключение должно быть двухсторонним.
Значит, должен быть интерфейс.
И пошло-поехало...
А для отработки временных задержек должно работать прерывание таймера с фиксированной длительностью.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 10 2006, 11:22
Сообщение #4


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

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



2 Dog Pawlowa я прекрасно понимаю что не достаточно мне еще опыта, но к сожалению мое начальство это мало интересует...тем более что в нашей фирме эту тему больше некому поручить. Я тут недавно мучался с тини2313, переделывал под них проги...но с ними как то попроще было...
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 10 2006, 11:46
Сообщение #5


Гуру
******

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



Цитата(Terapefft @ Nov 10 2006, 14:22) *
2 Dog Pawlowa я прекрасно понимаю что не достаточно мне еще опыта, но к сожалению мое начальство это мало интересует...тем более что в нашей фирме эту тему больше некому поручить.

Ну, повезло значит. Так лучше, чем просто штаны просиживать :-)
Попробуйте все-таки начать с проектирования сверху вниз - то есть определить функции двух блоков и их взаимодействие. Поверьте, таймеры и программа - это абсолютно неважно на этом этапе. В большинстве моих приборов работает прерывание таймера с частотой 1 кГц, и его период 1 мс вполне достаточен для точности задания времени. Аппаратный таймер не нужен. Попробуйте написать такой фрагмент программы.

Сообщение отредактировал Dog Pawlowa - Nov 10 2006, 11:48


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 10 2006, 11:47
Сообщение #6


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(Terapefft @ Nov 10 2006, 14:22) *
Я тут недавно мучался с тини2313, переделывал под них проги...но с ними как то попроще было...

Да помню тот вопрос, кстати, Вы обещали написать, в чем были грабли.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 10 2006, 12:18
Сообщение #7


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

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



Цитата(Семён @ Nov 10 2006, 14:47) *
Цитата(Terapefft @ Nov 10 2006, 14:22) *

Я тут недавно мучался с тини2313, переделывал под них проги...но с ними как то попроще было...

Да помню тот вопрос, кстати, Вы обещали написать, в чем были грабли.

я на самом деле уже переделал штуки 4 программы smile.gif в первых трех надо было просто добавить инициализацию стэка, добавить строчку в ПП записи в EEPROM, и правильно выставить фузыsmile.gif а вот с последней пришлось помучатся...
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 10 2006, 14:27
Сообщение #8


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

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



Цитата(Dog Pawlowa @ Nov 10 2006, 14:46) *
Цитата(Terapefft @ Nov 10 2006, 14:22) *

2 Dog Pawlowa я прекрасно понимаю что не достаточно мне еще опыта, но к сожалению мое начальство это мало интересует...тем более что в нашей фирме эту тему больше некому поручить.

Ну, повезло значит. Так лучше, чем просто штаны просиживать :-)
Попробуйте все-таки начать с проектирования сверху вниз - то есть определить функции двух блоков и их взаимодействие. Поверьте, таймеры и программа - это абсолютно неважно на этом этапе. В большинстве моих приборов работает прерывание таймера с частотой 1 кГц, и его период 1 мс вполне достаточен для точности задания времени. Аппаратный таймер не нужен. Попробуйте написать такой фрагмент программы.

у меня есть обе проги рабочие, там нада просто выкинуть подпрограму где обрабатываются сигналы от датчиков и вставить свое, просто эти гады мне времени мало выделили на все это. А объяснять им бесполезно. Я вот тут сделал подпрограмму для второго таймера с нужной мне точностью

ldi rin4, 0b00000111;
out tccr2, rin4;
ldi rin4, $3c;
out tcnt2, rin4;

ldi rin4, 0b01000000;
out timsk, rin4;

а вот как сделать так чтобы время включения насоса менять можно было бы?
вот на всякий случай прога для ПИ
Прикрепленные файлы
Прикрепленный файл  ind.txt ( 12.2 килобайт ) Кол-во скачиваний: 91
 
Go to the top of the page
 
+Quote Post
slog
сообщение Nov 10 2006, 14:46
Сообщение #9


Знающий
****

Группа: Свой
Сообщений: 961
Регистрация: 28-11-05
Пользователь №: 11 489



Я сильно не разбирался с твоей программой, так просто взглянул.
Вот что заметил сразу:

;-----------------------------------------------------------------------
; подпрограмма перевода числа в диапазоне 0 - 15 в код семисегментного
; индикатора числам от 10 до 15 соответствует код от A до F

Вот это вообще-то по таблице делать лучше


--------------------
В действительности всё не так, как на самом деле.
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 10 2006, 19:19
Сообщение #10


Гуру
******

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



Цитата(Terapefft @ Nov 10 2006, 17:27) *
Я вот тут сделал подпрограмму для второго таймера с нужной мне точностью

а вот как сделать так чтобы время включения насоса менять можно было бы?
вот на всякий случай прога для ПИ

Увы, пишу только на С, и до уровня кодирования регистров и таймеров дохожу только после продумывания структуры прибора. Чего и Вам желаю :-)
Вы выбрали способ передачи информации о времени работы насоса?


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Nov 11 2006, 20:26
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(slog @ Nov 10 2006, 17:46) *
Я сильно не разбирался с твоей программой, так просто взглянул.
Вот что заметил сразу:

;-----------------------------------------------------------------------
; подпрограмма перевода числа в диапазоне 0 - 15 в код семисегментного
; индикатора числам от 10 до 15 соответствует код от A до F

Вот это вообще-то по таблице делать лучше


biggrin.gif

Видал я линейных программистов, но чтобы до такой степени. blink.gif

Если таблицей(согласно 'slog'), то на асме это делается так (wl = 0-15):

ldi Zl,low(TablHex*2)
ldi Zh,high(TablHex*2)
add Zl,wl ; определить смещение
adc Zh,Vol0
lpm wl,Z ; найти истинный код символа
...
TablHex:
.db $30, $31, $32, $33, $34, $35, $36, $37
.db $38, $39, $41, $42, $43, $44, $45, $46

(таблица другая)
Банально, правда?
Go to the top of the page
 
+Quote Post
defunct
сообщение Nov 11 2006, 23:24
Сообщение #12


кекс
******

Группа: Свой
Сообщений: 3 825
Регистрация: 17-12-05
Из: Киев
Пользователь №: 12 326



Terapefft
Писали бы такого рода программы на C.. Оно проще и быстрее будет.
Компилятор сгенерит более компактный код, чем тот что Вы пишете..
Go to the top of the page
 
+Quote Post
Kovrov
сообщение Nov 12 2006, 14:26
Сообщение #13


Мастер-фломастер
****

Группа: Свой
Сообщений: 611
Регистрация: 29-12-05
Пользователь №: 12 700



Цитата(Terapefft @ Nov 10 2006, 15:22) *
но к сожалению мое начальство это мало интересует...тем более что в нашей фирме эту тему больше некому поручить.

Offtopic:
последнее время очень модно стало писать на асм именно на рабочем месте, в надежде на плохую читаемость или вовсе не читаемость другим человеком , если к примеру писавшего увольняют или сам увольняется.
Наверное какая никакая отрада для души.


--------------------
Вон ПОПОВ, клоун клоуном, а радио изобрел!!
Go to the top of the page
 
+Quote Post
vesago
сообщение Nov 12 2006, 14:45
Сообщение #14


Тутэйшы
****

Группа: Свой
Сообщений: 708
Регистрация: 30-11-04
Пользователь №: 1 263



Несомненное есть и такое. Но имхо - это маразм. В наше время на мой взгляд имеет значение только скорость. Ушло в прошлое время когда программеру платили за строчки кода и неразрывно связанной с этим идеи эксклюзивности. Незря все большии позиции завоевывает опенсоурс.
Go to the top of the page
 
+Quote Post
SasaVitebsk
сообщение Nov 12 2006, 14:57
Сообщение #15


Гуру
******

Группа: Свой
Сообщений: 2 712
Регистрация: 28-11-05
Из: Беларусь, Витебск, Строителей 18-4-220
Пользователь №: 11 521



Цитата(vesago @ Nov 12 2006, 17:45) *
Несомненное есть и такое. Но имхо - это маразм. В наше время на мой взгляд имеет значение только скорость. Ушло в прошлое время когда программеру платили за строчки кода и неразрывно связанной с этим идеи эксклюзивности. Незря все большии позиции завоевывает опенсоурс.

Если взламывать, то на Си сложнее чем на асме. А если документацию передавать, то наново легче написать чем разобраться и внести изменения. Здесь, конечно с асмом посложнее.
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 13 2006, 06:07
Сообщение #16


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

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



Цитата(Dog Pawlowa @ Nov 10 2006, 22:19) *
Цитата(Terapefft @ Nov 10 2006, 17:27) *

Я вот тут сделал подпрограмму для второго таймера с нужной мне точностью

а вот как сделать так чтобы время включения насоса менять можно было бы?
вот на всякий случай прога для ПИ

Увы, пишу только на С, и до уровня кодирования регистров и таймеров дохожу только после продумывания структуры прибора. Чего и Вам желаю :-)
Вы выбрали способ передачи информации о времени работы насоса?

Насколько я себе представляю мне нужно просто выставить флаг включения насоса, выдержать нужное мне время, с помощью таймера счетчика. И затем выставить флаг отключения насоса. Или я что то не так понимаю?
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 13 2006, 07:51
Сообщение #17


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(Terapefft @ Nov 13 2006, 09:07) *
Насколько я себе представляю мне нужно просто выставить флаг включения насоса, выдержать нужное мне время, с помощью таймера счетчика. И затем выставить флаг отключения насоса. Или я что то не так понимаю?

Обсолютно правильно

Цитата(Kovrov @ Nov 12 2006, 17:26) *
Offtopic:
последнее время очень модно стало писать на асм именно на рабочем месте, в надежде на плохую читаемость или вовсе не читаемость другим человеком , если к примеру писавшего увольняют или сам увольняется.
Наверное какая никакая отрада для души.

ИМХО: Не забывайте, что иногда еще фигурирует стоимость окончательного устройства. Для не больших проектов ассемблер, особенно при работе с битами, более интересен.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 13 2006, 09:49
Сообщение #18


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

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



а вот как сделать так чтобы значение введеное с платы индикации сохранялось в счетчике на плате управления?
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 13 2006, 09:59
Сообщение #19


Местный
***

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



Цитата(Terapefft @ Nov 13 2006, 11:49) *
а вот как сделать так чтобы значение введеное с платы индикации сохранялось в счетчике на плате управления?


Через SPI smile.gif .


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 13 2006, 10:07
Сообщение #20


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



Цитата(Terapefft @ Nov 13 2006, 12:49) *
а вот как сделать так чтобы значение введеное с платы индикации сохранялось в счетчике на плате управления?

ИМХО: Конкретную реализацию за Вас вряд ли кто-то будет делать. Поэтому изучите, как сейчас у Вас реализована связь и добавти передачу своего значения.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 15 2006, 12:24
Сообщение #21


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

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



Я вроде сделал в меню параметр который будет контролировать время включения насоса, все нормально меняется. Для отсчета времени выбрал счетчик timer2, так как он не использовался, но когда я в начале проги поставил переход на метку timer2 и сконфигурировал таймер, у меня почему при включении питания теперь индикатор вобще не светится
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 15 2006, 12:30
Сообщение #22


Местный
***

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



Цитата(Terapefft @ Nov 15 2006, 14:24) *
Я вроде сделал в меню параметр который будет контролировать время включения насоса, все нормально меняется. Для отсчета времени выбрал счетчик timer2, так как он не использовался, но когда я в начале проги поставил переход на метку timer2 и сконфигурировал таймер, у меня почему при включении питания теперь индикатор вобще не светится

Без текста проги ответ -- это стрельба по воробьям smile.gif


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


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

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



вот исходник smile.gif который я уже пытался переделать

вот исходник smile.gif который я уже пытался переделать
Прикрепленные файлы
Прикрепленный файл  avtomat.txt ( 71.14 килобайт ) Кол-во скачиваний: 61
 
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 15 2006, 13:33
Сообщение #24


Местный
***

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



Стандартная ошибка:
timer2:

ldi rin,0b00000111 ; CK/1024
out tccr2,rin ;
ldi rin,$3c ; $3c=60
out tcnt2,rin ; Ïåðèîä (255-60)*1024/2000000=0.09984c

ldi rin,0b01000000 ; Ïîäêëþ÷àåì òîëüêî òàéìåð Timer2
out timsk,rin ; overflow timer2


ldi rin4,TNASOS ;здесь создан бесконечный цикл smile.gif
dec rin4
cpi rin4,0 ;
brne timer2 ;при возврате из этой точки rin4 ВСЕГДА равен TNASOS
reti
Ищи точку для

ldi rin4,TNASOS
успехов!! smile.gif


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


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

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



просто это мой первый болеменее серъезный проект smile.gif а если вот так сделать ? :
ldi rin4,TNASOS ;

timer2:

ldi rin,0b00000111 ; CK/1024
out tccr2,rin ;
ldi rin,$3c ; $3c=60
out tcnt2,rin ; Ïåðèîä (255-60)*1024/2000000=0.09984c

ldi rin,0b01000000 ; Ïîäêëþ÷àåì òîëüêî òàéìåð Timer2
out timsk,rin ; overflow timer2


dec rin4
cpi rin4,0 ;
brne timer2 ;
reti
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 15 2006, 14:15
Сообщение #26


Местный
***

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



Цитата(Terapefft @ Nov 15 2006, 15:53) *
просто это мой первый болеменее серъезный проект smile.gif а если вот так сделать ? :
ldi rin4,TNASOS ;

timer2:

ldi rin,0b00000111 ; CK/1024
out tccr2,rin ;
ldi rin,$3c ; $3c=60
out tcnt2,rin ; Ïåðèîä (255-60)*1024/2000000=0.09984c

ldi rin,0b01000000 ; Ïîäêëþ÷àåì òîëüêî òàéìåð Timer2
out timsk,rin ; overflow timer2


dec rin4
cpi rin4,0 ;
brne timer2 ;
reti

Работать будет, НО некоректно в п\п обработки прерываний долго заниматься какими нибудь вычислениями, тем более устраивать там задержки. П\п должна выставить(изменить) какой-то флаг и вернуться в MAIN_LOOP и уже там обрабатывать информацию о произошедшем прерывании. Во время обработки прерывания все (CLI) прерывания запрещаются при входе в п\п прерывания и разрешаются после команды RETI. Поэтому код обработки должен быть как можно короче, для правильной и своевременной обработки других прерываний. smile.gif smile.gif


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


Местный
***

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



И в догонку:
Студия имеет хорошие возможности для отладки. Создавать отдельные окна, в них писать куски програмы, отлаживать, и потом вставлять в основной текст прогрвммы. При отладке сразу большой программы всегда возникает много вопросов и найти ошибки не так то просто.


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


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

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



я вот вчера вечером еще раз переделал прогу, попробовал просто подключить таймер2, вроде все нормально компилится, но когда прошиваю контроллер и ставлю на плату, после подачи питания даже индикатор перестал светится, может опять чего нить не так сделал? Причем до того как я ввел таймер2 все нормально работало....
Прикрепленные файлы
Прикрепленный файл  avtomat.txt ( 70.15 килобайт ) Кол-во скачиваний: 58
 
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 16 2006, 09:25
Сообщение #29


Местный
***

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



Ну попорядку:
.def d =r0 ;R0 не желателно использовать, т.к. он используются командой LPM
timer2:
cli ;Ты видимо не понял: Вход в пп обработки УЖЕ останавливает обработку других прерываний.
ldi rin,$3c ; $3c=60
out tcnt2,rin ;
ldi rin,TNASOS ;
prov:

dec rin ;
cpi rin,0 ;
brne prov ;Этот цикл лучше вынести в главный цикл (MAIN_LOOP)

reti ; А команда RETI сама разрешает прерывания.
sei : В данном случае SEI должно стоять перед RETI, хотя в их использовании (CLI, SEI) нет необходимости smile.gif

При отладке обрати внимание на регистр TIFR, там появляются нежелательные флаги. И как говорится: Учите матчасть. За это здорово Бьют smile.gif smile.gif smile.gif


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


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

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



переделал все, прошил контролер, поставил на плату а толку никакого sad.gif все равно не светится. а когда убираю второй таймер, то все нормально....из за чего это может происходить???
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 16 2006, 13:47
Сообщение #31


Гуру
******

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



Цитата(Terapefft @ Nov 16 2006, 16:12) *
переделал все, прошил контролер, поставил на плату а толку никакого sad.gif все равно не светится. а когда убираю второй таймер, то все нормально....из за чего это может происходить???

Вопросы приблизительно такие, как если я оказался за штурвалом самолета :-)

Несколько советов.
1. Атмега 32 дороже на копейки по сравнению с потраченным временем. Можно сделать проект на Атмеге, которая поддерживает JTAG. Тогда отладка и поиск ошибок легки и непринужденны.
2. В городе есть специалисты по AVR? Советую найти, придти с бутылкой, поплакаться и договориться. Я вот студентов учу за бесплатно, за бутылку я бы горы перевернул. laugh.gif

Ясно одно - ступеньку непонимания Вы самостоятельно не перешагнете, а тут за Вас никто двухконтроллерный проект не заваяет.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 16 2006, 13:59
Сообщение #32


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

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



2 Dog Pawlowa спасиба Вам за дельный совет....повезло Вашим студентам
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 16 2006, 14:10
Сообщение #33


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

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



за меня не надо ваять проект, я просто хочу понять почему он не работает со вторым таймером
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 17 2006, 06:58
Сообщение #34


Местный
***

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



Цитата(Terapefft @ Nov 16 2006, 15:12) *
переделал все, прошил контролер, поставил на плату а толку никакого sad.gif все равно не светится. а когда убираю второй таймер, то все нормально....из за чего это может происходить???

Для того, чтобы найти ОЧЕРЕДНУЮ АСиПку smile.gif нужен ОЧЕРЕДНОЙ текст.


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 17 2006, 09:05
Сообщение #35


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

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



а сейчас возникла очередная проблема sad.gif даже при отключеном втором таймере, когда запускаешь устройство, проходит цикл, загорается первая, вторая и третья лампочка, и индикатор гаснет, а затем опять точно также, хотя он должен гореть постояно. хекс которым прошивают щас работает нормально, ничего не гаснет, но дело в том что исходника к нему нетsad.gif . А тот который я нашел тоже работает нормально , вот тока почему то гаснет после каждого цикла
Прикрепленные файлы
Прикрепленный файл  avtomat.txt ( 70.15 килобайт ) Кол-во скачиваний: 51
 
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 17 2006, 09:17
Сообщение #36


Местный
***

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



Цитата(Terapefft @ Nov 17 2006, 11:05) *
а сейчас возникла очередная проблема sad.gif даже при отключеном втором таймере, когда запускаешь устройство, проходит цикл, загорается первая, вторая и третья лампочка, и индикатор гаснет, а затем опять точно также, хотя он должен гореть постояно. хекс которым прошивают щас работает нормально, ничего не гаснет, но дело в том что исходника к нему нетsad.gif . А тот который я нашел тоже работает нормально , вот тока почему то гаснет после каждого цикла

Т.е. ты (и я) пытаемся разобраться в нерабочем исходнике??????????? ohmy.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 17 2006, 09:47
Сообщение #37


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

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



ну я думаю эту проблему я решу, главное со вторым таймером разобратся

просто я это только седня обнаружил
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 17 2006, 10:15
Сообщение #38


Местный
***

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



Цитата(Terapefft @ Nov 17 2006, 11:47) *
ну я думаю эту проблему я решу, главное со вторым таймером разобратся

просто я это только седня обнаружил

Как я писал раньше: Студия имеет хорошие возможности для отладки. Создавать отдельные окна, в них писать куски програмы, отлаживать, и потом вставлять в основной текст прогрвммы. При отладке сразу большой программы всегда возникает много вопросов и найти ошибки не так то просто.
А отлаживать сразу на железе мм...
В TIMER2 ошибок вроде нет, но вначале програмы:
.cseg
.org $000
rjmp main ; reset Handle
;.org $004
; reti
; rjmp timer2 ; Timer 2 overflow Handle 0.1 ñåêóíäû
.org $008
; reti ;
rjmp timer1 ; Timer 1 overflow Handle
.org $009
; reti
rjmp timer0 ; Timer 0 overflow Handle 0.1 ñåêóíäû
.org $00E
; reti
rjmp adc_preob ; ADC convertion complete
.org $010
; reti
rjmp ancomp ; Analog Comparator handle

заремлины RETI, а у тебя в TIFR появляются лишние флаги (это только то что я увидел) и прерывания летят не туда куда ты думаешь. На все неиспользуемые прерывания корректней ставить RETI для уменьшения головной боли от отладки, т.к. при возникновении непредвиденного прерывания програма продолжит выполнение дальше ничего не изменив. А если нет RETI, в точке прерывания, РС идет дальше и выполняет RJMP другого прерывания, что не есть хорошо.
И я согласен с Dog Pawlowa : бери бутылку и на поиски smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 17 2006, 10:25
Сообщение #39


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

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



дык яб с удовольствием smile.gif тока где его достать такого умельца....
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 17 2006, 10:30
Сообщение #40


Местный
***

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



Цитата(Terapefft @ Nov 17 2006, 12:25) *
дык яб с удовольствием smile.gif тока где его достать такого умельца....

Ну ни зачто не поверю что в вашем городе только ты занимаешься AVR. Дай объявление в газету и ты будешь приятно удивлен!! smile.gif


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Alex_Pol
сообщение Nov 17 2006, 10:52
Сообщение #41


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

Группа: Свой
Сообщений: 192
Регистрация: 23-03-05
Из: Украина. Днепропетровск
Пользователь №: 3 626



Цитата(Wild007 @ Nov 17 2006, 11:17) *
Т.е. ты (и я) пытаемся разобраться в нерабочем исходнике??????????? ohmy.gif

Это у терапеффта вечная проблема: несоответствие представляемых исходников реально работающей программе. Причём, несоответствия не велики, но разобраться невозможно.
2Terapefft @. Возьмите ваш hex - файл. Засуньте его в "Студию". Она кинется его отлаживать и выдаст дезассемблированный искомый исходник. Формат жутковатый, полуфабрикат, но разобраться можно.
С помощью этого полуфабриката приведите исходник, имеющийся у вас, в соответствие с прошивкой. Работы на пол - дня максимум. После этого можете выкладывать исходник, будем помогать. В ходе выполнения работы по сравнению двух файлов, просветление может наступить само. Тогда отпишите нам, где лежали грабли. Вот всё, что могу пока посоветовать. smile.gif
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 17 2006, 11:20
Сообщение #42


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

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



вроде все исправил, теперь работает нормально, индикатор не гаснет после каждого цикла smile.gif. Но со вторым таймером все равно никак...
Прикрепленные файлы
Прикрепленный файл  avtomat.txt ( 70.14 килобайт ) Кол-во скачиваний: 32
 
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 17 2006, 11:28
Сообщение #43


Местный
***

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



Цитата(Terapefft @ Nov 17 2006, 13:20) *
вроде все исправил, теперь работает нормально, индикатор не гаснет после каждого цикла smile.gif. Но со вторым таймером все равно никак...

Так ведь в приложенном файле он заремлен!


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


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

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



так я и говорю что без него теперь все нормально работает как и должно (раньше и без него индикация гасла после каждого цикла). А теперь как тока убираешь ";" перед .org $004, то после подачи питания, на плате индикации вобще ничего не высвечивается
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 17 2006, 11:57
Сообщение #45


Местный
***

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



Цитата(Terapefft @ Nov 17 2006, 13:49) *
так я и говорю что без него теперь все нормально работает как и должно (раньше и без него индикация гасла после каждого цикла). А теперь как тока убираешь ";" перед .org $004, то после подачи питания, на плате индикации вобще ничего не высвечивается

А в стек переменную RIN отправлять не пробовал в прерывани? smile.gif


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


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

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



щас попробовал, все равно плата индикации не светится sad.gif
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 17 2006, 13:37
Сообщение #47


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Terapefft @ Nov 17 2006, 15:11) *
щас попробовал, все равно плата индикации не светится sad.gif

Код
;---------------    Timer0        --------------------------------------


    ldi    rin,0b00000001; Подключаем только Timer0
    out    timsk,rin; overflow timer0

;---------------    Timer2        --------------------------------------

    ldi    rin,0b01000000; Подключаем только Timer2
    out    timsk,rin; overflow timer2

Вот он Ваш еггор smile.gif
Если Вам необходимы прерывания всех трех таймеров, то
нужно написать один раз:
ldi rin,0b01000101
out timsk,rin
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 17 2006, 14:31
Сообщение #48


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

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



во засветился smile.gif))) осталось теперь сделать так чтоб после выставления флага на включение насоса, выполнялось прерывание которое выдерживало бы насос во включеном состоянии..Займусь на выходных smile.gif))
Go to the top of the page
 
+Quote Post
yung
сообщение Nov 18 2006, 21:19
Сообщение #49


Местный
***

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



Извиняюсь за offtop, не "Эльф-4М" в очередной раз потеряло единственного инженера и теперь вновь принятый за все отдувается? По тематике похоже.
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 20 2006, 09:06
Сообщение #50


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

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



2 yung имено так smile.gif)) попал блин под расдачу...
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 20 2006, 14:01
Сообщение #51


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

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



Я вот тут посидел подумал и у меня возник вопрос: у меня же процесс включения насоса будет находится в одном цикле с процесами нагрева продольных и поперечных губок автомата, и следовательно если я после выставления флага на включение насоса, перейду на ПП поддержания насоса во включеном состоянии, то у меня сдвинется весь рабочий цикл на величину поддержания насоса во включеном состоянии ??? а это не есть гуд.... подскажите пожалуста возможные пути решения этой проблемы. И еще вопрос, вот у меня есть второй счетчик

timer2:
push rin
ldi rin,$3c ; $3c=60
out tcnt2,rin ;
ldi rin,TNASOS ;
prov:

dec rin
cpi rin,0
brne prov
pop rin

reti
Как сделать так чтобы в рабочем цикле после включения насоса выдерживалось время TNASOS с помощью этого счетчика???
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 20 2006, 14:50
Сообщение #52


Местный
***

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



Цитата(Terapefft @ Nov 20 2006, 13:01) *
Я вот тут посидел подумал и у меня возник вопрос: у меня же процесс включения насоса будет находится в одном цикле с процесами нагрева продольных и поперечных губок автомата, и следовательно если я после выставления флага на включение насоса, перейду на ПП поддержания насоса во включеном состоянии, то у меня сдвинется весь рабочий цикл на величину поддержания насоса во включеном состоянии ??? а это не есть гуд.... подскажите пожалуста возможные пути решения этой проблемы. И еще вопрос, вот у меня есть второй счетчик

timer2:
push rin
ldi rin,$3c ; $3c=60
out tcnt2,rin ;
ldi rin,TNASOS ;
prov:

dec rin
cpi rin,0
brne prov
pop rin

reti
Как сделать так чтобы в рабочем цикле после включения насоса выдерживалось время TNASOS с помощью этого счетчика???

Выставить в прерывании флаг, типа
SBR FLAG,1<<timer_2
а в рабочий цикл, типа
SBRS FLAG,timer_2
RJMP <метка>
ldi rin,TNASOS ;
prov:

dec rin
cpi rin,0
brne prov
<метка>
и будет тебе счастье smile.gif smile.gif
А возможные пути решения этой проблемы... Возми бумажку и нарисуй какой алгоритм тебя устраивает и по нему пиши програму.

Сообщение отредактировал Wild007 - Nov 20 2006, 14:58


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


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

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



что то я не совсем понял, судя по этому:
SBR FLAG,1<<timer_2
это мне надо какому нить свободному регистру назначить имя flag, а timer_2 будет в нем просто битом ??? и вставить эту строку в процедуру обработки прерываний от таймера2 как нить так? :
timer2:
push rin

ldi rin,$3c ; $3c=60
out tcnt2,rin ;
sbr Flag,1<<timer_2
pop rin ;
reti


А рабочий цикл тогда получится будет таким ?:
.....................

sbr svet,0b00010000 ; светить Т1
ldi rin,0 ; включить поперечный нагрев
rcall nagr ;
rcall delay ; выдерживаем вермя для заварки Т1

ldi radr,doza_1 ; дозатор на всасывание
rcall decod ;
cbr reg_flgs,0b00000001 ; флаг на начало всасывания
SBRS Flag,timer_2
RJMP M10
ldi rin,TNASOS ;
prov:

dec rin
cpi rin,0
brne prov


M10:

cbr svet,0b00010000 ;погасить Т1
sbr svet,0b00100000 ; светить Т2

.......................................
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 20 2006, 15:43
Сообщение #54


Местный
***

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



Ну да! Я тебе про это несколько постов назад говорил biggrin.gif .


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


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

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



понятно smile.gif а подскажите пожалуста как и ОЗУ в ППЗУ считать (мне надо значение TNASOS считать из ячейки $77 ) ???
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 20 2006, 16:19
Сообщение #56


Местный
***

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



Цитата(Terapefft @ Nov 20 2006, 15:13) *
понятно smile.gif а подскажите пожалуста как и ОЗУ в ППЗУ считать (мне надо значение TNASOS считать из ячейки $77 ) ???

Не совсем понял вопрос? Из EEPROM в RAM или как?


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


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

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



из RAM в EEPROM
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 20 2006, 16:38
Сообщение #58


Местный
***

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



Цитата(Terapefft @ Nov 20 2006, 15:24) *
из RAM в EEPROM

LDI ZL,LOW(метка на переменную)
LDI ZH,hi(метка на переменную)
LPM ; и в R0 имеешь свою переменную.
....
Assembly Code Example
EEPROM_write:
; Wait for completion of previous write
sbic EECR,EEWE
rjmp EEPROM_write
; Set up address (r18:r17) in address register
out EEARH, r18
out EEARL, r17
; Write data (r16) to data register
out EEDR,r16
; Write logical one to EEMWE
sbi EECR,EEMWE
; Start eeprom write by setting EEWE
sbi EECR,EEWE
ret
Это из любого DS/


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


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

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



просто вот здесь вот считываются уставки с 60 по 67-й адрес из ОЗУ в ППЗУ
ozu_pzu:
clr zh ;
clr zl ;
cli
ewrite:
sbic eecr,eewe ;
rjmp ewrite ;
out eearh,zh ;
out eearl,zl ;
subi zl,$A0 ;мне
ld rin,z ;вот эта
subi zl,$5F ;часть не понятна
out eedr,rin ;
sbi eecr,eemwe ;
sbi eecr,eewe ;
nop
nop
nop
cpi zl,24 ; и вот здесь причем тут 24?
brne ewrite ;
ret ;

может просто вот так сделать? (чтоб с 77-й ячейки считать) :
ozu_pzu:
clr zh ;
clr zl ;
cli
ewrite:
sbic eecr,eewe ;
rjmp ewrite ;
ldi zl,LOW(TNASOS) ;
ldi zh,HI(TNASOS)
ld rin,z ;
out eedr,rin ;
sbi eecr,eemwe ;
sbi eecr,eewe ;
brne ewrite ;
ret
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 20 2006, 17:23
Сообщение #60


Местный
***

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



Извини срочно уезжаю на объект. Посмотрю и отвечу только завтра.


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 09:57
Сообщение #61


Местный
***

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



В решение с флагом TIMER_2 вкраась существенная ошибка, надо:
brne prov
CBR FLAG,1<<TIMER_2
M10:
По поводу записи в EEPROM:
ewrite:
sbic eecr,eewe ;
rjmp ewrite ;

Это ожидание окончания предыдущего цикла записи.
out eearh,zh ;
out eearl,zl ;

Это адрес в EEPROM, куда пишем данные.
subi zl,$A0 ;мне
ld rin,z ;вот эта
subi zl,$5F ;часть не понятна

Это вычисление адреса и загрузка переменной для записи в EEPROM и адрес для следующего цикла записи.
out eedr,rin ;
sbi eecr,eemwe ;
sbi eecr,eewe ;

Это запись переменной RIN в EEPROM.
cpi zl,24 ; и вот здесь причем тут 24?
brne ewrite ;

24 это "конечная" точка. Я не вычислял какие адреса переписываются, но прошелся по логике програмы. А твой опус будет работать нерпедсказуемо smile.gif . Логика работы с EEPROM стандартна и менять ничего не надо. (смотри DATA_SHEET или два поста выше)

Сообщение отредактировал Wild007 - Nov 21 2006, 09:58


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 21 2006, 09:58
Сообщение #62


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

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



и еще один вопросик...судя вот по этому:
...............................
sbr svet,0b00010000 ; светить Т1
ldi rin,0 ; включить поперечный нагрев
rcall nagr ;
rcall delay ; выдерживаем время для заварки Т1

ldi radr,doza_1 ; дозатор на всасывание
rcall decod ;
cbr reg_flgs,0b00000001 ; флаг на начало всасывания

SBRS Flag,timer_2
RJMP M10
ldi rin,TNASOS ;
prov:

dec rin
cpi rin,0
brne prov
M10:

cbr svet,0b00010000 ; погасить Т1
sbr svet,0b00100000 ; светить Т2
ldi rin,1 ; включить продольный нагрев
rcall nagr ;
rcall delay ; выдерживаем время для заварки Т2
.................................................
импульс поперечного нагрева заканчмвается раньше, чем импульс прододольного. А на циклограме которая идет в паспорте с даным дозатором нарисовано что импульс продольного нагрева заканчивается раньше чем импульс поперечного. Это реально???
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 10:25
Сообщение #63


Местный
***

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



Цитата(Terapefft @ Nov 21 2006, 08:58) *
и еще один вопросик...судя вот по этому:
...............................
sbr svet,0b00010000 ; светить Т1
ldi rin,0 ; включить поперечный нагрев
rcall nagr ;
rcall delay ; выдерживаем время для заварки Т1

ldi radr,doza_1 ; дозатор на всасывание
rcall decod ;
cbr reg_flgs,0b00000001 ; флаг на начало всасывания

SBRS Flag,timer_2
RJMP M10
ldi rin,TNASOS ;
prov:

dec rin
cpi rin,0
brne prov
M10:

cbr svet,0b00010000 ; погасить Т1
sbr svet,0b00100000 ; светить Т2
ldi rin,1 ; включить продольный нагрев
rcall nagr ;
rcall delay ; выдерживаем время для заварки Т2
.................................................
импульс поперечного нагрева заканчмвается раньше, чем импульс прододольного. А на циклограме которая идет в паспорте с даным дозатором нарисовано что импульс продольного нагрева заканчивается раньше чем импульс поперечного. Это реально???

Сделать программно "реально" можно что угодно. Я такие проблемы решаю по другому. Запускаешь какой нить таймер на определенный "тик" (в милисекундах или тому подобное), в прерываниях изменяешь какие нить переменные, устанавливаешь флаги, а в MAIN_LOOP анализируешь их и включаешь\выключаешь, что угодно и как тебе угодно. И "поперечный нагрев" начинается раньше\позже "продольного" или наоборот smile.gif


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


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

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



то есть грубо говоря допустим есть у меня таймер2 с точностью о,1с, в рабочем цикле я просто включаю насос и выставляю флаг которым запускается счетчик, а ПП обработки счетчика по истечению некоторого времени (допустим TASOS) насос отключается. так?
и если сделать запись таким образом:
ldi rin,TNASOS
ewrite:
sbic eecr,eewe
rjmp ewrite
out eear,..... вот сюда что надо написать если у меня переменая TASOS в 77-й ячейке ОЗУ
out eedr,rin
sbi eecr,eempe
sbi eecr,eepe
ret

а чтение вот так:
ldi z, TNASOS

eread:

sbic eecr,eewe
rjmp eread
out eear,z
sbi eecr,eere
in rin,eedr

поправьте пожалуста если что не так, просто у меня уже мозг опух...smile.gif
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 11:30
Сообщение #65


Местный
***

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



ldi rin,TNASOS
ewrite:
sbic eecr,eewe
rjmp ewrite
АДРЕС СЕСТРА, АДРЕС!!! smile.gif smile.gif smile.gif
out eear,..... вот сюда что надо написать если у меня переменая TASOS в 77-й ячейке ОЗУ
out eedr,rin
sbi eecr,eempe
sbi eecr,eepe
ret
Включил чево-то -- выставил флаг -- в прерывании декрементируешь время (переменную равную (необходимое_время/"тик")) -- по нулю выключаешь чево-то, снимаешь флаг. Если надо включать\выключать много чиво -- надо много флагов и много переменных и все они включаются\выключаются так как нам надо не зависят от всяких DELAY. smile.gif А MAIN_LOOP крутится без всяких задержек и тормозов, можно добалять разные фичи без головной боли что не успеем. Прерывания неизбежны и включение\выключение устройств происходит по правильному алгоритму smile.gif


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


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

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



вот я сделал отключение насоса в счетчике2:
timer2:
push rin
push rin1
ldi rin1,$a
ldi rin,$3c ; $3c=60
out tcnt2,rin

tm:
dec rin1
brne tm


pop rin ;
pop rin1

ldi radr,doza_0 ; отключаем насос
rcall decod
cbr reg_flgs,0b00000001
reti

в главном цикле просто:
...........................
ldi radr,doza_1 ; включаем насос
rcall decod
cbr reg_flgs,0b00000000
.................................
Но теперь происходит следующее: проходит 5 нормальных рабочих циклов и потом насос не включается не выключается. А остальное нормально работает. Причем длительность поддержания насоса во включеном состоянии не зависит от того какое значение я вношу в rin1.
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 14:30
Сообщение #67


Местный
***

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



Цитата(Terapefft @ Nov 21 2006, 12:24) *
вот я сделал отключение насоса в счетчике2:
timer2:
push rin
push rin1
ldi rin1,$a
ldi rin,$3c ; $3c=60
out tcnt2,rin

tm:
dec rin1
brne tm


pop rin ;
pop rin1

ldi radr,doza_0 ; отключаем насос
rcall decod
cbr reg_flgs,0b00000001
reti

в главном цикле просто:
...........................
ldi radr,doza_1 ; включаем насос
rcall decod
cbr reg_flgs,0b00000000
.................................
Но теперь происходит следующее: проходит 5 нормальных рабочих циклов и потом насос не включается не выключается. А остальное нормально работает. Причем длительность поддержания насоса во включеном состоянии не зависит от того какое значение я вношу в rin1.

О какой "длителности" зависимой от RIN1 может идти речь, если период прерывания 0,1 сек, а цикл
tm:
dec rin1
brne tm
даже при RIN1 = &FF (для 2МГЦ) будет 0,1 милисек? biggrin.gif


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


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

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



ну а как же тогда сделать???
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 15:34
Сообщение #69


Местный
***

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



Смотри два поста назад:

Цитата(Wild007 @ Nov 21 2006, 10:30) *
Включил чево-то -- выставил флаг -- в прерывании декрементируешь время (переменную равную (необходимое_время/"тик")) -- по нулю выключаешь чево-то, снимаешь флаг. Если надо включать\выключать много чиво -- надо много флагов и много переменных и все они включаются\выключаются так как нам надо не зависят от всяких DELAY. smile.gif А MAIN_LOOP крутится без всяких задержек и тормозов, можно добалять разные фичи без головной боли что не успеем. Прерывания неизбежны и включение\выключение устройств происходит по правильному алгоритму smile.gif


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


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

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



ну вот мне надо выдержать 1 секунду, я заношу в rin1 число $a
ldi rin1,$a
и дикрементирую его, по достижении нуля выключаю насос
dec rin1
brne tm

ldi radr,doza_0 ; отключаем насос
rcall decod

вроде все так как Вы говорили....
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 16:00
Сообщение #71


Местный
***

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



Цитата(Terapefft @ Nov 21 2006, 14:45) *
ну вот мне надо выдержать 1 секунду, я заношу в rin1 число $a
ldi rin1,$a
и дикрементирую его, по достижении нуля выключаю насос
dec rin1
brne tm

ldi radr,doza_0 ; отключаем насос
rcall decod

вроде все так как Вы говорили....

Я говорил -- в прерывании декрементируешь время , а не создаешь цикл из декркментации. Декрементируется ОДИН РАЗ в каждом прерывании, а так как прерывание возникает КАЖДЫЕ 0,1 сек, то общее время и сложится из количества проведенных прерываний и декркментации до нуля.


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


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

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



как нить вот так:
timer2:
push rin
push rin1
ldi rin1,$a;

ldi rin,$3c ; $3c=60
out tcnt2,rin ;

dec rin1
cpi rin1,0
brne tm

ldi radr,doza_0 ; отключаем насос
rcall decod
tm:


pop rin ;
pop rin1
reti
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 21 2006, 17:04
Сообщение #73


Местный
***

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



Нет, что-то такое:
MAIN_LOOP:
.......
SBRC FLAG,MOT1
RJMP NNN
LDI мотор включить
SBR FLAG,1<<MOT1 флаг включения мотора
LDI T_MOT1, &XX
NNN:

TIMER2:
.....
SBRS FLAG,MOT1
RJMP MMM
DEC T_OT1
BRNE MMM
CBR FLAG,1<<MOT1
LDI мотор выключить
MMM:
.....


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 21 2006, 17:50
Сообщение #74


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

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



сейчас сделал так как Вы сказали, но теперь он вобще перестал включатся. вот исходник, все вроде должно работать....я уже не знаю почему так
Прикрепленные файлы
Прикрепленный файл  avtomat.txt ( 71.06 килобайт ) Кол-во скачиваний: 54
 
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 22 2006, 09:19
Сообщение #75


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

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



вернее насос только включается но не выключается потом, а если в главном цикле вместо SBRC FLAG,MOT1 поставить SBRS FLAG,MOT1, то он и включается и выключается, но время поддержания во включеном состоянии никак не изменяется. Насос просто выключается когда проходит весь цикл
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 22 2006, 09:51
Сообщение #76


Местный
***

Группа: Свой
Сообщений: 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:


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 22 2006, 10:35
Сообщение #77


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

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



теперь вобще не работает.....sad.gif
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 22 2006, 10:56
Сообщение #78


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

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



то есть цикл идет а насос не включается
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 22 2006, 11:58
Сообщение #79


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

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



я вот щас попробовал еще раз так как вы мне вчера написали, насос не включался из за того что в ПП delay параметр FDOZ выставлялся в "1" и поэтому вот здесь
sbrc reg_flgs,FDOZ ;
rjmp NNN

ldi radr,doza_1 ; вкл насос
rcall decod ;
SBR reg_flgs,1<<FDOZ ;флаг вкл насоса
LDI T_NAS1,$5
насос не включался. щас он включается но не выключается.
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 22 2006, 12:23
Сообщение #80


Местный
***

Группа: Свой
Сообщений: 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
насос не включался. щас он включается но не выключается.

Потому что нарушен старый алгоритм работы програмы, а я предлагал (по моим подсказкам) создать новый алгоритм. Сейчас насос выключается и сразу опять включается smile.gif. Существующий алгоритм слишком прямой и запутаный, с ним разбираться -- полный рабочий день надо потратить, а времени и так в обрез.


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 22 2006, 12:33
Сообщение #81


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



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


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 23 2006, 13:37
Сообщение #82


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

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



сегодня переделал все очередной раз, насос включается и выключается (выключение в п/п обработки прерывания таймера2), но почему то время в течении которого насос включен не изменяется (пробовал заносить туда разные значения), дикрементируется время в п/п таймера2. насос выключается после всего цикла. почему же таймер не считает???
Прикрепленные файлы
Прикрепленный файл  avt.txt ( 70.35 килобайт ) Кол-во скачиваний: 66
 
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 23 2006, 14:35
Сообщение #83


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Terapefft @ Nov 23 2006, 13:37) *
сегодня переделал все очередной раз, насос включается и выключается (выключение в п/п обработки прерывания таймера2), но почему то время в течении которого насос включен не изменяется (пробовал заносить туда разные значения), дикрементируется время в п/п таймера2. насос выключается после всего цикла. почему же таймер не считает???

В процедуре обработки прерывания Timer2 нужно ОБЯЗАТЕЛЬНО сохранять SREG.
посмотрите как это сделано в Timer0.
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 23 2006, 14:59
Сообщение #84


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

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



пробовал уже, все равно не помогает. причем когда меняешь параметры (время нагрева например), уже когда контролер находится в устройстве, никак не связаные со вторым таймером, насос все равно отключается только когда проходит весь цикл
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 24 2006, 09:32
Сообщение #85


Местный
***

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



Цитата(Terapefft @ Nov 23 2006, 13:59) *
пробовал уже, все равно не помогает. причем когда меняешь параметры (время нагрева например), уже когда контролер находится в устройстве, никак не связаные со вторым таймером, насос все равно отключается только когда проходит весь цикл

Програма изобилует SEI и CLI и скорее всего где-то запрещается прерывание и до окончания цикла оно не возобнавляется. (Пробовал в отладчике).


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


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

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



я уже щас попробовал убрать почти все CLI все равно выключается только когда проходит весь цикл sad.gif а из за чего еще может такое происходить???
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 24 2006, 14:27
Сообщение #87


Местный
***

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



Цитата(Terapefft @ Nov 24 2006, 12:14) *
я уже щас попробовал убрать почти все CLI все равно выключается только когда проходит весь цикл sad.gif а из за чего еще может такое происходить???

Прогони програму через DEBUG (CTRL+F7) и САМ определишь где глюк. Потратишь 2-3 часа на отладку и найдешь. За тебя никто не будет этого делать smile.gif . Потом нам раскажешь smile.gif .


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 24 2006, 17:47
Сообщение #88


Гуру
******

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



Цитата(Wild007 @ Nov 24 2006, 14:27) *
За тебя никто не будет этого делать smile.gif . Потом нам раскажешь smile.gif .

Сломался, коллега? wink.gif
Я бы может и занял место в строю, но ассемблер совсем не знаю. blink.gif


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
singlskv
сообщение Nov 24 2006, 23:21
Сообщение #89


дятел
*****

Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065



Цитата(Wild007 @ Nov 24 2006, 14:27) *
За тебя никто не будет этого делать smile.gif . Потом нам раскажешь smile.gif .

2 Terfpefft
Если Вы реально хотите разобраться как это все работает,
то ИМХО, Вам стоит потратить пару дней, на выяснение всех подробностей
работы прерываний, и прерываний таймеров в частности...
Попробуйте на время забыть про все Ваши насосы с нагревателями,
и просто напишите тестовую программу такого вида:
1.Используем 1 таймер, например таймер1 (только 1 таймер!!!)
2. В качестве испольнительных механизмов выбираем "светодиоды" ну
например на порту B, "1" горит ,"0" не горит, 4-8 штук.
3.Для каждого диода на порту В заданы, время сколько он должен гореть и
сколько "не гореть".
4.и так до бесконечности smile.gif
Если Вы не поленитесь выполнить данное задание (если будут вопросы- поможем),
то, ИМХО, без труда исправите все ошибки в "Вашем" коде,
хотя, скорее всего после этого, Вы его перепишите полностью, причем в
худшем случае, неделя писать, неделя отлаживать... smile.gif

А отлаживать(искать ошибки) в 70+Кб чужого кода не будет никто... sad.gif
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 27 2006, 08:53
Сообщение #90


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

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



2 singlskv
харашо smile.gif) попробую....только с этой прогой я уже не успел, оборудование уже отгружать надо...придется аппаратно решать проблему
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 27 2006, 09:52
Сообщение #91


Гуру
******

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



Цитата(Terapefft @ Nov 27 2006, 08:53) *
2 singlskv
харашо smile.gif) попробую....только с этой прогой я уже не успел, оборудование уже отгружать надо...придется аппаратно решать проблему

В этой связи хочется выразиться матом по поводу руководства Вашего.
Козлы. cranky.gif
Будете увольняться (или Вас будут увольнять), скажите им это.
Но уже сейчас начинайте искать работу.


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 27 2006, 10:00
Сообщение #92


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

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



уже начал.....внутренняя политика компании оставляет желать лучшего.
2 Dog Pawlowa у меня уже давно есть желание все им высказать, вот жду не дождусь моментаsmile.gif
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 27 2006, 10:04
Сообщение #93


Местный
***

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



Цитата(Dog Pawlowa @ Nov 24 2006, 16:47) *
Цитата(Wild007 @ Nov 24 2006, 14:27) *

За тебя никто не будет этого делать smile.gif . Потом нам раскажешь smile.gif .

Сломался, коллега? wink.gif
Я бы может и занял место в строю, но ассемблер совсем не знаю. blink.gif

Да нет smile.gif .Просто найти ошибку програме в которой метки переходов не несут ни какой информации, а написаны так, как будто дезассемблированный исходник HEX файл... Так пишут начинающие, а после полугода (если приходится возвращаться к програме) сам не могут разобраться что имели ввиду. И начинают понимать что сэкономив время на длине меток потеряли читабельность програмы, а особенно для разброра другими людьми. Мне часто приходится консультировать таких "програмистов" и после нескольких отправок "домой на переделку" понимают как не надо писать и теперь очань благодарны. Я програму TERAPEFFTa просматривал кусками и пытался наставить его на путь истинный (за неделю переписать програму по другому алгоритму отладить ее и представить на обсуждение), а не вставлять куски кода в чужую програму у которой очень прямолинейный алгоритм (нужна задержка -- крутим цикл, делаем что-то -- опять задержка -- крутим цикл и т. д.) Я считаю что это принципиально не верно, для этого и существуют таймера в AVR. Научится правильно пользоваться ими -- великое дело для TERAPEFFTa т.к. он управляет железом в реалном времени и останавливать MAIN_LOOP на всякие задержки типа "цикл" это неразумное исползование ресурсов процессора.
И как сказал singlskv:"А отлаживать(искать ошибки) в 70+Кб чужого кода не будет никто... "


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Dog Pawlowa
сообщение Nov 27 2006, 10:25
Сообщение #94


Гуру
******

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



Цитата(Wild007 @ Nov 27 2006, 10:04) *
Я считаю что это принципиально не верно, для этого и существуют таймера в AVR. Научится правильно пользоваться ими -- великое дело для TERAPEFFTa т.к. он управляет железом в реалном времени и останавливать MAIN_LOOP на всякие задержки типа "цикл" это неразумное исползование ресурсов процессора.

То, что автор без должного обучения и опыта, это, надеемся временное smile.gif
Но меня действительно затронуло, что он оказался в этом месте в это момент. Фигню вот так напроизводят, в ящики заколотят, и отправят...


--------------------
Уходя, оставьте свет...
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 27 2006, 10:41
Сообщение #95


Местный
***

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



Цитата(Dog Pawlowa @ Nov 27 2006, 09:25) *
Цитата(Wild007 @ Nov 27 2006, 10:04) *

Я считаю что это принципиально не верно, для этого и существуют таймера в AVR. Научится правильно пользоваться ими -- великое дело для TERAPEFFTa т.к. он управляет железом в реалном времени и останавливать MAIN_LOOP на всякие задержки типа "цикл" это неразумное исползование ресурсов процессора.

То, что автор без должного обучения и опыта, это, надеемся временное smile.gif
Но меня действительно затронуло, что он оказался в этом месте в это момент. Фигню вот так напроизводят, в ящики заколотят, и отправят...

Надо узнать точные адреса куда отправили. На доводке "такого" оборудования можно хорошие дивиденты срубить smile.gif .


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


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

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



Оборудование будет работать нормально, просто возьму старую програму, зашью ее туда. Сигнал с ПУ будет поступать на частотник, а с него на насос. Цикл равномерный, небольшие отклонения можно отрегулировать с помошью частотника. Я уже попробовал...smile.gif жаль конечно что не дали мне времени попробовать переделать всю прогу...

ну а с таймерами все равно буду разбиратся...попробую сделать прогу чтоб включала и выключала светодиоды как посоветовал singlskv
Go to the top of the page
 
+Quote Post
Семён
сообщение Nov 27 2006, 11:47
Сообщение #97


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

Группа: Свой
Сообщений: 196
Регистрация: 19-07-06
Из: Москва
Пользователь №: 18 922



ИМХО: Попробуйте объяснить начальству, что бы сделать нормально, нужно с нуля переписать код, в противном случаи начинайте искать другую работу.


--------------------
Тяжелое детство - 8-битные игрушки на 8-дюемовых дискетах
Go to the top of the page
 
+Quote Post
Terapefft
сообщение Nov 28 2006, 11:24
Сообщение #98


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

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



я тут пробовал испытывать оборудование, работает в принципе болеменее, тока вот насос надо немного позже включать. для этого ведб можно использовать компаратор на таймере1. я все расчитал за сколько тактов выполнится необходимая мне задержка. оцените пожалуста мою идею, если сделать таким образом
при инициализации таймера1:

;-------------- Timer1 -------------------------------------
; ldi rin,0b10000000
out timsk,rin

clr rin ; CK=2MHz
out tccr1a,rin
ldi rin,0b00000101 ; /1024
out tccr1b,rin

ldi Ttemp,0x07
out OCR1AH,Ttemp
ldi Ttemp,0xA1
out OCR1AL,Ttemp

а в п/п обработки прерывания

Taimer1_comp:
ldi Ttemp,0
out TCNT1H,Ttemp
out TCNT1L,Ttemp

ldi radr,doza_1
rcall decod

reti

а выключатся он будет в главном цикле. Просто непонятно по какому вектору переходить, в даташите их 2 timer1 compA и timer1 compB???
Go to the top of the page
 
+Quote Post
Wild007
сообщение Nov 28 2006, 12:10
Сообщение #99


Местный
***

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



Цитата(Terapefft @ Nov 28 2006, 10:24) *
я тут пробовал испытывать оборудование, работает в принципе болеменее, тока вот насос надо немного позже включать. для этого ведб можно использовать компаратор на таймере1. я все расчитал за сколько тактов выполнится необходимая мне задержка. оцените пожалуста мою идею, если сделать таким образом
при инициализации таймера1:

;-------------- Timer1 -------------------------------------
; ldi rin,0b10000000
out timsk,rin

clr rin ; CK=2MHz
out tccr1a,rin
ldi rin,0b00000101 ; /1024
out tccr1b,rin

ldi Ttemp,0x07
out OCR1AH,Ttemp
ldi Ttemp,0xA1
out OCR1AL,Ttemp

а в п/п обработки прерывания

Taimer1_comp:
ldi Ttemp,0
out TCNT1H,Ttemp
out TCNT1L,Ttemp

ldi radr,doza_1
rcall decod

reti

а выключатся он будет в главном цикле. Просто непонятно по какому вектору переходить, в даташите их 2 timer1 compA и timer1 compB???

Как не понятно? Ты же используешь загрузку в регистр совпадений COMPA, ну и вектор должен быть соответствующий.


--------------------
Ничто так не ограничивает полет мысли программиста, как компилятор
Go to the top of the page
 
+Quote Post
Alex_Pol
сообщение Nov 28 2006, 12:47
Сообщение #100


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

Группа: Свой
Сообщений: 192
Регистрация: 23-03-05
Из: Украина. Днепропетровск
Пользователь №: 3 626



Цитата(Terapefft @ Nov 28 2006, 10:24) *
Просто непонятно по какому вектору переходить, в даташите их 2 timer1 compA и timer1 compB???
Регистров совпадения 2. А и В. Прерывания соответствуют регистрам. Загрузи программу в AVRСтудию, поставь брекпоинты и посмотри по какому прерыванию будет срабатывать. Очень показательно.
З.Ы. Wild007 Опередил. smile.gif

Сообщение отредактировал Alex_Pol - Nov 28 2006, 12:49
Go to the top of the page
 
+Quote Post

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

 


RSS Текстовая версия Сейчас: 23rd July 2025 - 21:28
Рейтинг@Mail.ru


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