Просветите нас по приоритетам прерываний на АВР. У них у всех одинаковый приоритет.
Просвещаю. Хоть у AVR-ок и нету такого, как на ББ, контроллера прерываний, с разными уровнями и приоритетом, но при условии одновременного наступления двух и более прерываний, первым обработается прерывание с меньшим номером, остальные будут ожидать.
sadman41 в теории железо может увидеть что прерывание еще не обработано и сохранить второй вызов ...
Например - как оно увидит? И где сохранит? Не на бумажке же запишет, что "два на ум пошло". Думаю, что это частный случай, вполне объяснимый стандартным механизмом установки бита прерываний. Ну, там, INT0 по LOW каждый раз переустанавливается, пока нога на земле.
Я смотрю архитектуру многие вообще не изучают.. Даже если произошел переход по вектору прерывания, это не запрещает другому прерыванию выставить флаг и записать в стек. В итоге после выхода из обработчика переход произойдет опять по вектору прерывания. Перед выходом из обработчика надо сбрасывать флаг прерывания. И в добавок вызывать прерывания программно выставляя состояние пина в коде-полдный долбо...зм.
Флаг сбрасывается при переходе по вектору прерывания. Но не блокируется для установки его вновь пока выполняется обработчик. И даже отключение прерываний при входе в обработчик не припятствует выставлению флага и при включении прерываний этот флаг обработается.
Я смотрю архитектуру многие вообще не изучают.. Даже если произошел переход по вектору прерывания, это не запрещает другому прерыванию выставить флаг и записать в стек.
Хорошо изучил? Или стек это у тебя что то своё, личное?
Вроде и осень кончилась и зима на носу, а дефицит галоперидола ощущается.
-----
Кстати задумался - откуда у всяких "стормов" такие легенды в голове? Про стек отложенных прерываний? Я этот бред не первый раз слышу.
Оговорился, теперь елозить будете до скончания времен. Адреса перехода сохраняются в стек. А флаги прерываний выставляются независимо от того включены они или нет. А снятие глобального флага прерываний 'I' их не сбрасывает. И при поднятии этого флага остальные прочитаются. А в каком порядке это уже вопрос.
Просветите нас по приоритетам прерываний на АВР. У них у всех одинаковый приоритет.
Просвещаю. Хоть у AVR-ок и нету такого, как на ББ, контроллера прерываний, с разными уровнями и приоритетом, но при условии одновременного наступления двух и более прерываний, первым обработается прерывание с меньшим номером, остальные будут ожидать.
У них у всех одинаковый приоритет.
Исполняем на Uno/Nano.
И кто кого? Реал или Спартак?
Инты выше таймеров, посему при накоплении флажков в регистре прерываний первыми будут инты а уже потом таймер.
Дядьки, коль пошла такая пьянка, вопрос: а если несколько событий наступит по одному вектору, флаг сработает единожды ??? Прална ???
А как один бит поднять несколько раз одновременно? Прерывание сработавшее определяется битом регистра, как я помню.
sadman41 в теории железо может увидеть что прерывание еще не обработано и сохранить второй вызов ...
Да
sadman41 в теории железо может увидеть что прерывание еще не обработано и сохранить второй вызов ...
Например - как оно увидит? И где сохранит? Не на бумажке же запишет, что "два на ум пошло". Думаю, что это частный случай, вполне объяснимый стандартным механизмом установки бита прерываний. Ну, там, INT0 по LOW каждый раз переустанавливается, пока нога на земле.
И кто кого? Реал или Спартак?
это понятно! за 100 микросекунд это сколько 62-х наносекундных тиков нащёлкает )))
Я смотрю архитектуру многие вообще не изучают.. Даже если произошел переход по вектору прерывания, это не запрещает другому прерыванию выставить флаг и записать в стек. В итоге после выхода из обработчика переход произойдет опять по вектору прерывания. Перед выходом из обработчика надо сбрасывать флаг прерывания. И в добавок вызывать прерывания программно выставляя состояние пина в коде-полдный долбо...зм.
Флаг сбрасывается при переходе по вектору прерывания. Но не блокируется для установки его вновь пока выполняется обработчик. И даже отключение прерываний при входе в обработчик не припятствует выставлению флага и при включении прерываний этот флаг обработается.
Я смотрю архитектуру многие вообще не изучают.. Даже если произошел переход по вектору прерывания, это не запрещает другому прерыванию выставить флаг и записать в стек.
Хорошо изучил? Или стек это у тебя что то своё, личное?
Перед выходом из обработчика надо сбрасывать флаг прерывания.
А перед тем, как что-то постить - читать документацию. И не забывать принимать таблетки по расписанию.
В стек помещается адрес перехода по инструкции RETI.
Вроде и осень кончилась и зима на носу, а дефицит галоперидола ощущается.
-----
Кстати задумался - откуда у всяких "стормов" такие легенды в голове? Про стек отложенных прерываний? Я этот бред не первый раз слышу.
Это называется "ложная память". Им кажется, что они читали документацию.
Медицине известны такие случаи: https://ru.wikipedia.org/wiki/Парамнезия
Оговорился, теперь елозить будете до скончания времен. Адреса перехода сохраняются в стек. А флаги прерываний выставляются независимо от того включены они или нет. А снятие глобального флага прерываний 'I' их не сбрасывает. И при поднятии этого флага остальные прочитаются. А в каком порядке это уже вопрос.
Адреса перехода сохраняются в стек
А в каком порядке это уже вопрос.
Поизучайте ещё, а то больно много у Вас вопросов осталось. Код мой заодно запустите, посмотрите. Заодно узнаете когда и куда адреса сохраняются.