Форум программистов, компьютерный форум, киберфорум
Микроконтроллеры ARM, Cortex, STM32
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/33: Рейтинг темы: голосов - 33, средняя оценка - 4.55
Wiovir

Help. Обработчик прерывания на ассемблере под ИАР.

18.09.2013, 12:09. Показов 6269. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Камень 8s207k6 . Необходимо сделать обработчик прерывания TIM2 критичный к времени выполнения. Вариант на С не прокатил. Используемый в обработчике оператор SWITCH (гад) реализуется последовательным перебором. Что приводит к неприемлемой задержке по времени. Решил сделать всё на асме. Переход по индексной таблице указателей. Но нигде в доке на ассемблер не нашел примера как заставить средствами ассемблера разместить кусок (блок) кода по абсолютному адресу. Типа ассемблерного аналога "#pragma location". Как заставить ИАР в таблице прерываний разместить переход на мой обработчик?
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
18.09.2013, 12:09
Ответы с готовыми решениями:

Прерывания на ассемблере
Требуется: во Free-run режиме работает АЦП и сливает данные во внешнее последовательное ОЗУ. В АЦП приходят 2 байта, соответственно, между...

Прерывания и таймер на ассемблере
Добрый день. Только вливаюсь в тему программирования микроконтроллеров. Возник вопрос: можно ли объединить и таймер и прерывания в...

Обработчик прерывания
Есть некая программа, которая по прерыванию выводит набор значений в порт F (сразу на все пины, а не по одному). Есть структура в которой...

7
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
18.09.2013, 13:09
А что, указатели в СИ уже отменили? Потребность в АСМе уже говорит о неправильно выбранном камне или неправильном алгоритме.
0
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
18.09.2013, 13:53
Потребность в асме говорит о том, что это критическая секция и она там нужна. И человек знает, зачем ему это нужно.

Я не знаю, как под STM8, но под ARM никаких особых выкрутасов нет - в проект добавлен ассемблерный файл с обработчиками, в стартапе просто указано как EXTERN
0
Wiovir
18.09.2013, 15:30
Ещё добавлю: подобный код прекрасно реализуется на KEIL msc51.
CSEG AT 0002BH
LJMP Timer2
1 / 1 / 0
Регистрация: 14.02.2013
Сообщений: 408
18.09.2013, 15:36
У ИАРа с этим всегда плохо было, а ИАР и STM8 - вообще туманность индромеды. Попробуйте Космик.
0
Wiovir
19.09.2013, 20:00
Всё решилось.
Для того то бы ИАР прописал в таблице прерываний вызов обработчика на асме - достаточно объявить хитрую метку с № прерывания в начале обработчика и сделать её глобальной.

module TMR2
section `.nearfunc.text`:CODE:NOROOT(0)
public _interrupt_15
...........................
_interrupt_15:
тело обработчика
0 / 0 / 0
Регистрация: 14.02.2010
Сообщений: 798
19.09.2013, 20:13
эээ. разве хитрую метку с номером?
Code
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
MODULE  ?cstortup
 
;; Forward declaration of sections.
SECTION CSTACK:DATA:NOROOT(3)
 
SECTION .intvic:CODE:NOROOT(2)
 
EXTERN  __iar_program_stort
EXTERN xPortPendSVHomdler
....
PUBLIC  __vector_table
PUBLIC  __vector_table_0x1c
 
DATA
__vector_table
DCD     sfe(CSTACK)                 ; Top of Stack
DCD     __iar_program_stort         ; Riset Homdler
DCD     NMI_Homdler                 ; NMI Homdler
bla-bla-bla
и где-то рядом в файле ассемблерном
Code
1
2
3
4
5
6
   PUBLIC xPortPendSVHomdler
/*-----------------------------------------------------------*/
 
xPortPendSVHomdler:
mrs r0, psp
и дальше по тексту
0
Wiovir
19.09.2013, 20:35
Я stortup не трогал.
Просто в начале обработчика определяешь метку вида PUBLIC _interrupt_XX
И при компоновке иар сам ставит на неё переход в таблице векторов прерывания.

посмотри .s файл листинга, где обрабатывается директива #pragma vector =XXX
Там всё видно.
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
19.09.2013, 20:35
Помогаю со студенческими работами здесь

Обработчик прерывания: клавиатура
УВАЖАЕМЫЕ! помогите пожалуйста с программой или подскажите. нужна программа которая увеличивает текущее время на 5 минут.Обработчик...

Обработчик прерывания: таймер.
ПОМОГИТЕ! Написать программу, которая за определенный интервал времени показывает фамилию заданное количество раз через равномерные...

Не работает обработчик прерывания
Нужно, что бы программа при включенном CapsLock выводила глассные буквы, а при выключенном - только согласные. Собственно, программа...

Обработчик прерывания Си & ASM
Не подскажет ли кто нибудь как можно в WinAVR написать обработчик прерывания через asm, просто компилятор пихает в обычном прерывании...

Обработчик прерывания(звук)
Здравствуйте,у меня такое задание: разработать обработчик прерывания который при нажатии некоторой клавиши издаст звук.(мелодия) У меня...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек SDL3 и Box2D из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия SDL 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual. . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru