Телесистемы
 Разработка, производство и продажа радиоэлектронной аппаратуры
На главную   | Карта сайта | Пишите нам | В избранное
Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс.
e-mail:jobsmp@pochta.ru

Телесистемы | Электроника | Конференция «Микроконтроллеры и их применение»

Некорректно.

Отправлено vitalyn 01 февраля 2008 г. 11:34
В ответ на: Возврат из функции в С... отправлено <font color=gray>DC</font> 01 февраля 2008 г. 11:16

Ты делаешь очень сильное предположение о том, что SP у тебя не изменится. Это справедливо только для совсем простой системы, когда тебе просто не нужны такие извраты - ничто не мешает в одном цикле проверять поступление байтов и состояние счётчика, вываливаясь с разным кодом возврата в соответствующих случаях. В более-менее сложных программах крайне некорректно таким образом манипулировать с указателем стека.

Прекращать процесс из прерывания можно только в многозадачных ОС, и то, для этого требуется специальные фичи. Например, семафор с таймаутом. Задача становится на ожидание на семафоре, который взведут либо обработчик прерываний приёма байтов, либо обработчик прерывания от таймера. Проснувшаяся задача смотрит, по какой причине она проснулась, не тратя процессорного времени на поллинг.

Другой вариант. Задача тратит время на поллинг, а обработчик прерываний от таймера по таймауту меняет контекст соответствующего процесса, так что когда произойдёт возврат из прерывания, управление будет передано на возврат в main(). Это менее красивое решение.


Составить ответ | Вернуться на конференцию

Ответы


Отправка ответа
Имя*: 
Пароль: 
E-mail: 
Тема*:

Сообщение:

Ссылка на URL: 
URL изображения: 

если вы незарегистрированный на форуме пользователь, то
для успешного добавления сообщения заполните поле, как указано ниже:
введите число 89:

Перейти к списку ответов | Конференция | Раздел "Электроника" | Главная страница | Карта сайта

Rambler's Top100 Рейтинг@Mail.ru
 
Web telesys.ru