Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Поясните код
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему
sergey sva
Поясните код пожалуйста такой, вопрос глупый но хотелось услышать что нибуть от вас smile.gif
Код
void main(void)
{
//inicil

for(;;)
{
critical{
              // что сдесь,программа после прерывания ?  
          }
//*****

//...
}

}//end main

void interr(void)  critical interrupt (4)
{


}
MrYuran
абсолютно пустая кожура
for(;;)
{
...
} - это бесконечный цикл основного потока

void interr(void) critical interrupt (4)
{


} - прерывание, что такое 4 - непонятно.
TookeR
Как я понял его интересует попадет ли программа после прирывания опять в безконечный цикл или попадет после него. верно?
Kuzmi4
Чтото мне эти critical scmRTOS напоминают...
Можно по детальнее
sergey sva
Сегодня на работе видел этот код, только не понял как это работает.
интересует вот эта строка
Код
critical{
              // что программа должна сюда вернуться после прерывания?  и не важно где выполнялась программа когда было прерывание.
          }
MrYuran
Цитата(sergey sva @ Aug 8 2008, 17:10) *
Сегодня на работе видел этот код, только не понял как это работает.

Работает очень просто. Входит в мэйн и остаётся там навсегда.
sergey sva
Цитата(MrYuran @ Aug 8 2008, 17:13) *
Работает очень просто. Входит в мэйн и остаётся там навсегда.


В майн понятно , а какую роль играет critical{} smile.gif
zltigo
Цитата(sergey sva @ Aug 8 2008, 15:16) *
..а какую роль играет critical{} smile.gif

Ваш исходник - Вам виднее, что такое critical и с чем его едят.
one_man_show
Уважаемый sergey sva! Будьте добры, укажите хотя бы средство разработки, которое Вы используете, и было бы неплохо, указать, из какой области взяли пример. если речь идет о какой-то RTOS, то скорее всего, это место в коде, которое необходимо защитить от возможных прерываний.
sKWO
В любом случае Вам будет полезно почитать эту ветку.
sergey sva
Цитата(one_man_show @ Aug 8 2008, 17:37) *
Уважаемый sergey sva! Будьте добры, укажите хотя бы средство разработки, которое Вы используете, и было бы неплохо, указать, из какой области взяли пример. если речь идет о какой-то RTOS, то скорее всего, это место в коде, которое необходимо защитить от возможных прерываний.


Операционки нет, компилятор Sdcc.
Всегда делал так :
Код
void interr(void) interrupt (4)
{

}

а тут в примере увидел еще kritikal ; uses(1);
раньше это не использовал, поэтому такой вопрос.
one_man_show
В SDCC служебное слово critical используется для "мягкого" (локально) запрета прерываний для части кода. Обо всем этом есть в документации, очень советую почитать
sergey sva
Благодарю сейчас на sdcc буду читать на их сайте полно документации smile.gif .
Еще у меня есть такой вопрос по прерываниям .
такой алгоритм:
выполняется программа мэйн, происходит прерывание, прерывание запрещается выполняются какието
действия ,прерывание разрешается и программа возвращается в то место, кде она выполнялась
до прерывания. или(Как это сделать не знаю) что бы программа вышла из прерывания но не до конца smile.gif , а в определенный участок где она ждет еще прерываний, если их нет в течение 10мс то тогда уже возвращается в то место где она работала до прерывания. Может поможите как это можно сделать или где что прочитать по этому вопросу.
Прошу сильно не ругаться smile.gif с прерываниями много не работал
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.