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

 
 
 
Reply to this topicStart new topic
> Поясните код
sergey sva
сообщение Aug 8 2008, 12:50
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Поясните код пожалуйста такой, вопрос глупый но хотелось услышать что нибуть от вас smile.gif
Код
void main(void)
{
//inicil

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

//...
}

}//end main

void interr(void)  critical interrupt (4)
{


}
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 8 2008, 12:55
Сообщение #2


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



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

void interr(void) critical interrupt (4)
{


} - прерывание, что такое 4 - непонятно.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
TookeR
сообщение Aug 8 2008, 13:02
Сообщение #3


Участник
*

Группа: Свой
Сообщений: 32
Регистрация: 6-06-08
Из: Украина, Одесса
Пользователь №: 38 096



Как я понял его интересует попадет ли программа после прирывания опять в безконечный цикл или попадет после него. верно?


--------------------
Lasciate ogni speranza voi ch 'entrate. © Dante Alighieri
Оставь надежду всяк сюда входящий. © Данте Алигьери

TookeR aka Jasfin
Go to the top of the page
 
+Quote Post
Kuzmi4
сообщение Aug 8 2008, 13:03
Сообщение #4


Гуру
******

Группа: Свой
Сообщений: 3 304
Регистрация: 13-02-07
Из: 55°55′5″ 37°52′16″
Пользователь №: 25 329



Чтото мне эти critical scmRTOS напоминают...
Можно по детальнее
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Aug 8 2008, 13:10
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Сегодня на работе видел этот код, только не понял как это работает.
интересует вот эта строка
Код
critical{
              // что программа должна сюда вернуться после прерывания?  и не важно где выполнялась программа когда было прерывание.
          }
Go to the top of the page
 
+Quote Post
MrYuran
сообщение Aug 8 2008, 13:13
Сообщение #6


Беспросветный оптимист
******

Группа: Свой
Сообщений: 4 640
Регистрация: 26-12-07
Из: Н.Новгород
Пользователь №: 33 646



Цитата(sergey sva @ Aug 8 2008, 17:10) *
Сегодня на работе видел этот код, только не понял как это работает.

Работает очень просто. Входит в мэйн и остаётся там навсегда.


--------------------
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Aug 8 2008, 13:16
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



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


В майн понятно , а какую роль играет critical{} smile.gif
Go to the top of the page
 
+Quote Post
zltigo
сообщение Aug 8 2008, 13:36
Сообщение #8


Гуру
******

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



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

Ваш исходник - Вам виднее, что такое critical и с чем его едят.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Aug 8 2008, 13:37
Сообщение #9


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



Уважаемый sergey sva! Будьте добры, укажите хотя бы средство разработки, которое Вы используете, и было бы неплохо, указать, из какой области взяли пример. если речь идет о какой-то RTOS, то скорее всего, это место в коде, которое необходимо защитить от возможных прерываний.


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
sKWO
сообщение Aug 8 2008, 13:45
Сообщение #10


Местный
***

Группа: Участник
Сообщений: 355
Регистрация: 27-03-07
Из: Україна, Чуднів
Пользователь №: 26 530



В любом случае Вам будет полезно почитать эту ветку.


--------------------
нельзя недооценивать предсказуемость глупости
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Aug 8 2008, 13:54
Сообщение #11


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



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


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

}

а тут в примере увидел еще kritikal ; uses(1);
раньше это не использовал, поэтому такой вопрос.
Go to the top of the page
 
+Quote Post
one_man_show
сообщение Aug 8 2008, 13:59
Сообщение #12


Помогу, чем смогу
******

Группа: Админы
Сообщений: 2 786
Регистрация: 28-05-04
Из: Москва
Пользователь №: 25



В SDCC служебное слово critical используется для "мягкого" (локально) запрета прерываний для части кода. Обо всем этом есть в документации, очень советую почитать


--------------------
С уважением,
Ваган Саруханов
Проекты|Форум|Facebook|Linkedin
Go to the top of the page
 
+Quote Post
sergey sva
сообщение Aug 8 2008, 14:39
Сообщение #13


Гуру
******

Группа: Свой
Сообщений: 2 546
Регистрация: 23-05-07
Из: Самарская область Сызрань
Пользователь №: 27 923



Благодарю сейчас на sdcc буду читать на их сайте полно документации smile.gif .
Еще у меня есть такой вопрос по прерываниям .
такой алгоритм:
выполняется программа мэйн, происходит прерывание, прерывание запрещается выполняются какието
действия ,прерывание разрешается и программа возвращается в то место, кде она выполнялась
до прерывания. или(Как это сделать не знаю) что бы программа вышла из прерывания но не до конца smile.gif , а в определенный участок где она ждет еще прерываний, если их нет в течение 10мс то тогда уже возвращается в то место где она работала до прерывания. Может поможите как это можно сделать или где что прочитать по этому вопросу.
Прошу сильно не ругаться smile.gif с прерываниями много не работал
Go to the top of the page
 
+Quote Post

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

 


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


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