Дополним наш пример про Васю и Таню из заметке 4.1 тем, что во время разговора с Таней телефон оповестил Васю, что до него в это же время, звонит жена. Еще одно событие, причем более важное, чем Таня, которое нужно, срочно обработать. Что будем делать?
А будем мы прерывать Таню, поставив ее на удержание, и «обрабатывать» жену. В случае с STM, мы можем прервать обрабатывание одного прерывания для срочной обработки другого, а после вернуться к первому. Однако, все это необходимо предусмотреть заранее с помощью функции:
Продолжим разбираться с прерываниями, начало чему положено в заметке 4.1.
В кубе мы выбрали линии, по которым будут приходить события, для дальнейшей их обработки в прерывании. Так же мы определили эти события – изменение сигнала с 0 на 1. Как теперь это пойманное изменение сигнала, которое пришло по выбранной линии, обработать?
Как писалось в заметке 4.1, существует две возможности обработки:
External Interrupt – обработка внешних прерываний;
External Event – обработка событий
Отличаются они между собой тем, что, в первом случае, вызывается обработчик прерывания, а во втором только устанавливается флаг. Нужно так же добавить, что каждое прерывание вызывается событием, но не каждое событие вызывает прерывание.
Прерывание (англ.interrupt) — сигнал от программного или аппаратного обеспечения, сообщающий процессору о наступлении какого-либо события, требующего немедленного внимания. Прерывание извещает процессор о наступлении высокоприоритетного события, требующего прерывания текущего кода, выполняемого процессором. Процессор отвечает приостановкой своей текущей активности, сохраняя свое состояние и выполняя функцию, называемую обработчиком прерывания (или программой обработки прерывания), которая реагирует на событие и обслуживает его, после чего возвращает управление в прерванный код.
А теперь простыми словами и на примере из жизни. Едет Вася на машине. В это время по телефону звонит давняя подруга Васи – Таня. Так как нельзя одновременно ехать и разговаривать с Таней, Вася останавливается и поднимает трубку. Пообщавшись, он продолжает свой путь.
Так вот Вася – это микропроцессор, который исполняет свою программу – едет на машине. Внезапно позвонившая Таня – это событие, которое вызвало прерывание основной программы. Остановка – это функция, которая называется обработчик прерывания. Телефон – это линия по которой пришло оповещение о событии.