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

 
 
> Как перейти к началу функции по внешнему прерыванию?, подробнее внутри
Зверюга
сообщение Aug 15 2008, 13:30
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 413
Регистрация: 15-12-06
Пользователь №: 23 563



Господа есть код в CodeVision примерно такой:

Код
void  loop()
{
for (i=0;i<360;i++)
  {
     .................      
  }


}

void afterINT()
{
.....
}


void main ()
{
  while (1==1)
    {
      ......
       loop();
      .....
   }
}



Как сделать чтобы по внешнему прерыванию от пина AVR функция loop завершала свою работу? выполнялась функция afterINT(), после чего вновь запускалась функция loop(). Пишу в CodeVision, но буду рад примеру и в WinAVR.


И еще - в ATMEGA32 INT0, INT1 и INT2 чемн-ниьбудь отличаются?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
aaarrr
сообщение Aug 16 2008, 12:36
Сообщение #2


Гуру
******

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



Цитата(rezident @ Aug 16 2008, 16:17) *
Я не понимаю как continue в одной функции (main) может вернутся к прерванному циклу в другой функции (loop)?


Так задача-то была прервать и перезапустить loop, насколько я могу понять:
Цитата
Как сделать чтобы по внешнему прерыванию от пина AVR функция loop завершала свою работу? выполнялась функция afterINT(), после чего вновь запускалась функция loop().
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 16 2008, 12:40
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(aaarrr @ Aug 16 2008, 18:36) *
Так задача-то была прервать и перезапустить loop, насколько я могу понять:
Добавьте внутри "вечного цикла" перед вызовом loop() несколько операторов и/или вызовов других функций и попробуйте перезапустить с помощью continue только loop(). Для пояснения цитирую кусок исходного текста автора.
Код
void main ()
{
  while (1==1)
    {
      ......
       loop();
      .....
   }
}
Многоточие, как я понимаю, обозначает один или несколько операторов до и после вызова loop().
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 16 2008, 12:52
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Цитата(rezident @ Aug 16 2008, 14:40) *
Добавьте.....

Для начала ответьте, что за пургу тут несли с goto в черт-те-знает-куда sad.gif
потом ответьте на вопрос чем код:
Код
while (1==1)
    {
      blabla1();
       loop();
      blabla2();
   }

принципиально отличается от:
Код
for(;; )
    {
       loop();
      blabla2();
      blabla1();
   }

После первого прохода. Если захотите ИЗМЕНИТЬ условия задачи, то тогда как минимум стоит их публично огласить а не тихонько высасывать из пальца дополнительные условия. Повторяю, я НЕ собираюсь возражать против способа решения задачи (мне сама постановка представляется совершенно уродливой) все мной написаное относится только к корявому коду.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
rezident
сообщение Aug 16 2008, 13:23
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 10 920
Регистрация: 5-04-05
Пользователь №: 3 882



Цитата(zltigo @ Aug 16 2008, 18:52) *
Для начала ответьте, что за пургу тут несли с goto в черт-те-знает-куда sad.gif
Не уходите от ответа. Я первый задал вопрос.
Цитата(zltigo @ Aug 16 2008, 18:52) *
потом ответьте на вопрос чем код:
Поскольку нам неизвестно какие операции выполняют функции blabla и не влияют ли они на какие-либо общие глобальные переменные, то отвечаю - да, в общем случае порядок вызова функций имеет значение.
Цитата(zltigo @ Aug 16 2008, 18:52) *
Если захотите ИЗМЕНИТЬ условия задачи, то тогда как минимум стоит их публично огласить а не тихонько высасывать из пальца дополнительные условия.
Вы это .... не гоните...лошадей. wink.gif Я не менял условий задачи и в сообщении #13 привел пример, модифицировав исходный текст вопрошающего, под его условия. Вы же, вырвав из контекста задачи, привели исправления отдельных операторов, при подстановке которых в мой исходник работа программы меняется. Если внимательно приглядитесь, то у меня (в сообщении #13) как и у вопрошающего, имеются многоточия, обозначающие какие-либо операции до и после вызова loop в "вечном цикле" main. Тупая подстановка ваших замен изменяет функционирование программы. Поэтому я и пытаюсь от вас добиться пояснений, почему вы считаете эти замены полностью эквивалентными для функционирования программы? А вы же почему-то упираетесь в стилистику написания. laughing.gif
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- Зверюга   Как перейти к началу функции по внешнему прерыванию?   Aug 15 2008, 13:30
- - GDI   ЦитатаКак сделать чтобы по внешнему прерыванию от ...   Aug 15 2008, 13:38
- - Зверюга   Цитатапрерывания, или вам надо чтобы после прерыва...   Aug 15 2008, 13:46
- - GDI   Можно в цикле что внутри loop() проверять некий фл...   Aug 15 2008, 14:00
- - AHTOXA   Можно в прерывании подменять адрес возврата. Но эт...   Aug 15 2008, 14:14
|- - bzx   Цитата(AHTOXA @ Aug 15 2008, 18:14) Можно...   Aug 15 2008, 16:14
- - rezident   В plain Си функция не может перезапустить саму себ...   Aug 15 2008, 15:01
- - Kuzmi4   2 Зверюга ЦитатаА все-таки? 0 от 1 отличаются вро...   Aug 15 2008, 15:01
- - Зверюга   ЦитатаТолько не забудьте присвоить переменной флаг...   Aug 15 2008, 16:00
|- - zltigo   Цитата(Зверюга @ Aug 15 2008, 18:00) Так ...   Aug 15 2008, 16:16
- - rezident   Цитата(Зверюга @ Aug 15 2008, 22:00) Так ...   Aug 15 2008, 16:27
- - Зверюга   Цитата{ cntr--; } Эта строчка "от балды...   Aug 15 2008, 16:57
|- - rezident   Цитата(Зверюга @ Aug 15 2008, 22:57) Эта ...   Aug 15 2008, 17:17
|- - zltigo   Цитата(rezident @ Aug 15 2008, 19:17) ......   Aug 15 2008, 17:49
|- - rezident   Цитата(zltigo @ Aug 15 2008, 23:49) грамо...   Aug 15 2008, 19:42
|- - zltigo   Цитата(rezident @ Aug 15 2008, 21:42) ......   Aug 15 2008, 20:53
|- - rezident   Цитата(zltigo @ Aug 16 2008, 02:53) Масло...   Aug 15 2008, 21:18
|- - zltigo   Цитата(rezident @ Aug 15 2008, 23:18) ..м...   Aug 15 2008, 22:05
|- - Aesthete Animus   Цитата(rezident @ Aug 16 2008, 01:18) К т...   Aug 15 2008, 23:12
|- - rezident   Цитата(Aesthete Animus @ Aug 16 2008, 05...   Aug 15 2008, 23:34
- - Зверюга   Спасибо, теперь я разобрался. Это точно для CodeVi...   Aug 15 2008, 17:37
- - zltigo   Цитата(rezident @ Aug 16 2008, 01:34) ОК....   Aug 16 2008, 08:58
|- - rezident   Цитата(zltigo @ Aug 16 2008, 14:58) Э... ...   Aug 16 2008, 12:17
|- - zltigo   Цитата(rezident @ Aug 16 2008, 14:17) Я н...   Aug 16 2008, 12:35
|- - aaarrr   Цитата(rezident @ Aug 16 2008, 17:23) Пос...   Aug 16 2008, 13:43
|- - zltigo   Цитата(rezident @ Aug 16 2008, 15:23) А в...   Aug 16 2008, 13:52
- - SSerge   Вообще-то для таких "фокусов" придуманы ...   Aug 16 2008, 21:20
|- - aaarrr   Цитата(SSerge @ Aug 17 2008, 01:20) Вообщ...   Aug 16 2008, 21:43
|- - SSerge   Цитата(aaarrr @ Aug 17 2008, 04:43) Не дл...   Aug 17 2008, 11:03
|- - zltigo   Цитата(SSerge @ Aug 17 2008, 13:03) Вот к...   Aug 17 2008, 11:10
|- - aaarrr   Цитата(SSerge @ Aug 17 2008, 15:03) Вы и...   Aug 17 2008, 11:14
- - SSerge   Цитата(zltigo @ Aug 17 2008, 18:10) Рассу...   Aug 17 2008, 17:42
|- - aaarrr   Цитата(SSerge @ Aug 17 2008, 21:42) Чтобы...   Aug 17 2008, 22:00
|- - zltigo   Цитата(SSerge @ Aug 17 2008, 19:42) Требу...   Aug 17 2008, 22:15
|- - @Ark   Цитата(SSerge @ Aug 17 2008, 21:42) ... Р...   Aug 18 2008, 13:37
|- - AndrewN   Прежде всего, спасибо всем за возможность освежить...   Aug 18 2008, 15:25
|- - aaarrr   Цитата(AndrewN @ Aug 18 2008, 19:25) Для ...   Aug 18 2008, 15:31
|- - @Ark   Цитата(AndrewN @ Aug 18 2008, 19:25) ... ...   Aug 18 2008, 17:28
|- - AndrewN   Цитата(@Ark @ Aug 18 2008, 20:28) Вы, воз...   Aug 18 2008, 19:06
- - GDI   не кажется что за спором вы забыли одну важную вещ...   Aug 18 2008, 10:04
- - MMos   Недавно в одной ветке, я обмолвился, что пишу на а...   Aug 19 2008, 08:25
|- - SSerge   Цитата(MMos @ Aug 19 2008, 15:25) Почитал...   Aug 19 2008, 09:08
|- - zltigo   Цитата(MMos @ Aug 19 2008, 10:25) В ассем...   Aug 19 2008, 09:21
- - MMos   Я суть темы понял так: при наступлении некоего соб...   Aug 19 2008, 10:19
|- - aaarrr   Цитата(MMos @ Aug 19 2008, 14:19) Я суть ...   Aug 19 2008, 10:25
|- - MMos   Цитата(aaarrr @ Aug 19 2008, 12:25) Не по...   Aug 19 2008, 10:36
- - aaarrr   Я тоже много лет программирую на ассемблерах (если...   Aug 19 2008, 10:53
|- - MMos   Язык, на котором пишет программист, для меня не яв...   Aug 19 2008, 11:16
|- - Herz   Цитата(MMos @ Aug 19 2008, 13:16) Язык, н...   Aug 19 2008, 12:02
|- - zltigo   Цитата(Herz @ Aug 19 2008, 14:02) А что, ...   Aug 19 2008, 13:34
- - SysRq   Как вариант, функцию loop можно сделать полностью ...   Aug 19 2008, 22:19
- - Dog Pawlowa   Цитата(SysRq @ Aug 20 2008, 01:19) Как ва...   Aug 20 2008, 05:54


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

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 14:39
Рейтинг@Mail.ru


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