Тема: Arduino
Показать сообщение отдельно
Старый 20.01.2017, 18:36   #19
impersonalis
Зануда с интернетом
 
Аватар для impersonalis
 
Регистрация: 04.09.2005
Сообщений: 14,014
Написано 6,798 полезных сообщений
(для 20,935 пользователей)
Ответ: Статика

Сообщение от Phantom Посмотреть сообщение
Синхронизация осуществляется при помощи манипуляции битов в различных регистрах. Есть бит, которым можно разрешить или запретить все прерывания одним махом, но кроме того есть биты в разных регистрах для манипуляции каждым прерыванием по отдельности. По умолчанию в компиляторах Си предлагается к использованию макрос при объявлении функции-прерывания, который блокирует все прерывания при входе в прерывание и разрешает при выходе. Таким образом все прерывания будут выполняться последовательно (прерывание непрерывно, лол). Но при желании можно добиться поведения, когда прерывания будут вклиниваться в другие прерывания, но говорят, что это может привести к проблемам. Я с ассемблером знаком мало, но вроде бы для компилятора вызов каждого прерывания - это довольно напряжная ситуация, потому что это происходит в непредсказуемый момент времени и нужно правильно эти ситуации разруливать. А при нескольких вложенных прерываниях, то ли регистров общего назначения на всё может не хватить, то ли ещё чо-то там. Может кто-то из булочников разъяснит подробнее.
Ok. Кажись, в универе кодили такое.
__________________
http://nabatchikov.com
Мир нужно делать лучше и чище. Иначе, зачем мы живем? tormoz
А я растила сына на преданьях
о принцах, троллях, потайных свиданьях,
погонях, похищениях невест.
Да кто же знал, что сказка душу съест?
(Offline)
 
Ответить с цитированием