Easyelectronics.ru

Электроника для всех
Текущее время: 06 дек 2019, 02:47

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



JLCPCB – Прототипы печатных плат за $2/10pcs (Любой цвет!)
Крупнейший производитель печатных плат и прототипов. Более 600000 клиентов и свыше 10000 заказов в день!
Получите скидку на почтовую отправку при первом заказе в JLCPCB!

Начать новую тему Ответить на тему  [ Сообщений: 4 ] 
Автор Сообщение
 Заголовок сообщения: Как правильно использовать прерывания.
СообщениеДобавлено: 01 дек 2015, 01:42 
Только пришел

Зарегистрирован: 10 фев 2015, 19:28
Сообщения: 27
Собственно интересует организация прерываний так, чтобы они не перекрывали друг друга, никакие данные не терялись и ничего не подвисало. К примеру имеется uart, spi и i2c устройства. Я хочу получать данные по uart, слать их по spi и в это же время периодически опрашивать i2c. Плюс основной цикл программы тоже должен успевать выполняться. Сейчас я понятия не имею, как это можно организовать. Если есть хорошие книги или статьи на эту тему, прошу дать название/ссылку. Англоязычная литература приветствуется.

Естественно, я понимаю, что все это зависит от конкретной ситуации, но об общей организации кода хотелось бы знать. Существует ли что-то вроде аналога шаблонов проектирования в ООП?


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно использовать прерывания.
СообщениеДобавлено: 01 дек 2015, 12:09 
Старожил

Зарегистрирован: 06 фев 2011, 15:16
Сообщения: 617
Откуда: Челябинск
kripton писал(а):
Собственно интересует организация прерываний так, чтобы они не перекрывали друг друга, никакие данные не терялись и ничего не подвисало. К примеру имеется uart, spi и i2c устройства. Я хочу получать данные по uart, слать их по spi и в это же время периодически опрашивать i2c. Плюс основной цикл программы тоже должен успевать выполняться. Сейчас я понятия не имею, как это можно организовать. Если есть хорошие книги или статьи на эту тему, прошу дать название/ссылку. Англоязычная литература приветствуется.

Естественно, я понимаю, что все это зависит от конкретной ситуации, но об общей организации кода хотелось бы знать. Существует ли что-то вроде аналога шаблонов проектирования в ООП?

Тут все зависит от архитектуры используемого процессора. Существуют одноуровневые и многоуровневые (nested) системы прерываний. В одноуровневыз системах прерывания никогда не прерывают друг друга. В многоуровневых системах прерывания с более низким приоритетом могут прерываться прерываниями, имеющими более высокий приоритет.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно использовать прерывания.
СообщениеДобавлено: 04 дек 2015, 08:58 
Старожил

Зарегистрирован: 21 мар 2012, 14:33
Сообщения: 542
Прерывания, которые вызываются очень часто, должны быть хорошо оптимизированы. Иначе они могут забить всё свободное время между их вызовами.


Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Как правильно использовать прерывания.
СообщениеДобавлено: 04 дек 2015, 23:27 
Старожил
Аватара пользователя

Зарегистрирован: 01 ноя 2011, 23:51
Сообщения: 843
Вообщем как мне кажется общее правило - "делать прерывания как можно короче.(шустрее)" Например если увас есть UART и прерывание по нему то максимум что оно должно сделать это положить данные из приемника в ваш буфер. И взаести флаг о том чтоони там есть. Впрочем этого можно и не делать если буфер циклический то разность указателей и так покажет что где лежит и сколько его там.. Ну и возможно флаг переполнения.


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

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


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

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


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

Найти:
Перейти:  

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB