NikP 0 17 июня, 2014 Опубликовано 17 июня, 2014 · Жалоба На основе примера от STM написал свою программу. Но есть одна тонкость - надо чтоб один из циклов не прерывался (выполнялся за определённое время). А реально случайным образом длительность "дёргается"- подозреваю , что происходит прерывание в программе-исходнике. Вопросы такие: можно ли определить, какое прерывание происходит ( может, есть регистр, в котором сохраняется информация, или в отладчике кейл-микровижен)?Как запретить ВСЕ прерывания на время цикла ? Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
adnega 11 17 июня, 2014 Опубликовано 17 июня, 2014 · Жалоба На основе примера от 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 разными цветами в зависимости от источника. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться