Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: как определить тип прерывания ?
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
NikP
На основе примера от STM написал свою программу. Но есть одна тонкость - надо чтоб один из циклов не прерывался (выполнялся за определённое время). А реально случайным образом длительность "дёргается"- подозреваю , что происходит прерывание в программе-исходнике. Вопросы такие: можно ли определить, какое прерывание происходит ( может, есть регистр, в котором сохраняется информация, или в отладчике кейл-микровижен)?Как запретить ВСЕ прерывания на время цикла ?
adnega
Цитата(NikP @ Jun 17 2014, 11:16) *
На основе примера от STM написал свою программу. Но есть одна тонкость - надо чтоб один из циклов не прерывался (выполнялся за определённое время). А реально случайным образом длительность "дёргается"- подозреваю , что происходит прерывание в программе-исходнике. Вопросы такие: можно ли определить, какое прерывание происходит ( может, есть регистр, в котором сохраняется информация, или в отладчике кейл-микровижен)?Как запретить ВСЕ прерывания на время цикла ?

Узнать прерывание можно из регистра IPSR.
Считать регистр можно "msr r0,IPSR".
Младшие 9 бит указывают текущее состояние процессора:
Цитата
ISR_NUMBER:
This is the number of the current exception:
0: Thread mode
1: Reserved
2: NMI
3: Hard fault
4: Memory management fault
5: Bus fault
6: Usage fault
7: Reserved
....
10: Reserved
11: SVCall
12: Reserved for Debug
13: Reserved
14: PendSV
15: SysTick
16: IRQ0(1)
....
....
83: IRQ67(1)
see Exception types on page 34 for more information.

Запретить можно либо ВСЕ прерывания (с конфигурируемым приоритетом) через PRIMASK, либо с уровнем не ниже чем в BASEPRI.
Буквально вчера сделал, чтоб отладочные сообщения выводились в xterm разными цветами в зависимости от источника.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.