roboforum.ru

Технический форум по робототехнике.
Текущее время: 30 ноя 2024, 05:08

Часовой пояс: UTC + 4 часа




Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Ожидание событий в контроллере...
СообщениеДобавлено: 11 дек 2004, 00:50 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
Есть контроллер MEGA16.
Есть функция, которая должна дождаться выполнения прерывания. Как это сделать? Мое предложение такое...

volatile unsigned char val=0;

void function()
{
...
while(!val); //<------------- Ожидание.
...
}

INTERRUPT
{
   val = 1;
}

Это единственный способ?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 дек 2004, 15:21 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
Брр я не очень силён в Си но ожидать прерывания не нужно!

На то и есть оно чтобы по нему направить прогу на отработку.

вот пример на ASM :

Код:
.org T0OVaddr                     ; Вектор прерывания по переполнению таймера0
rjmp start_pwm
.........



sei                           ; Разрешение глобальных прерываний

;Основной цикл.

idle:
   ldi r16, (1<<SE)               ; Enable sleep
   out MCUCR, r16
   sleep
   NOP
   rjmp idle



start_pwm:
.........




А вообще если задача стоит именно так что функция в процессе выполнения должна дождаться выполнения прерывания то активную её часть выделяем в другую функцию, вход в которую делаем по флагу отработки прерывания.
А зацикливать на пустом месте - не правильно.

Другими словами есть основной цикл просмотра флагов - что делать а что нет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 15 дек 2004, 18:16 
Не в сети
Аватара пользователя

Зарегистрирован: 08 окт 2004, 16:43
Сообщения: 2114
Откуда: St. Petersburg
Skype: quark-bot
ФИО: Клебан Виталий
А почему плохо-то?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения:
СообщениеДобавлено: 16 дек 2004, 15:21 
Не в сети
Site Admin
Аватара пользователя

Зарегистрирован: 04 окт 2004, 12:58
Сообщения: 10989
Откуда: St.Petersburg
Skype: taranenko.sergey
ФИО: Сергей Тараненко
плохо потому что ничего не делаем, а энергию кушаем!
к тому же если прерывание не произойдёт можно подвиснуть ;)
да и правильнее просто пробегать циклично по всем задачам и смотреть требуют они внимания или пока нет.
Так сказать многозадачтость выше.


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 4 ] 

Часовой пояс: UTC + 4 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 5


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
phpBB SEO