реклама на сайте
подробности

 
 
> Помогите начинающему. Как написать на IAR-ассемблере процедуру обработки прерывания
piroman
сообщение Sep 27 2012, 16:42
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 27-09-12
Пользователь №: 73 712



Приветствую. Привык в своих IAR С-проектах на AVR писать процедуры обработки прерываний как отдельные файлы на ассемблере. Не хочу менять привычку и на AVR32. Кто знает как? Документация IAR-ра этого не описывает... Нужен скелет.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
piroman
сообщение Sep 28 2012, 14:19
Сообщение #2


Участник
*

Группа: Участник
Сообщений: 49
Регистрация: 27-09-12
Пользователь №: 73 712



Решение найдено методом научного тыка и копания startup-кода rolleyes.gif
Код
#pragma handler = AVR32_TC_IRQ_GROUP,0
__interrupt void AVR32_TC_IRQ_GROUP_ISR(void)
{
}

И его эквивалент на ассемблере:

  //обработчик группы прерываний таймеров
  name    EXT_AVR32_TC_IRQ_GROUP
  #include <avr32\iouc3b0256.h>
  extern  AVR32_TC_IRQ_GROUP_ISR
  rseg    HTAB:ROOT(2)
  // LVL[1:0] | Index[5:0] | Offset[23:0]
  DC32 (AVR32_INTC_IPR_INTLEVEL_INT0 << AVR32_INTC_IPR_INTLEVEL_OFFSET) | (AVR32_TC_IRQ_GROUP << 24) | ((AVR32_TC_IRQ_GROUP_ISR-0x80004000) & 0x00FFFFFF)
  endmod        
        
  name    AVR32_TC_IRQ_GROUP_ISR
  #include <avr32\uc3b0256.h>
  public  AVR32_TC_IRQ_GROUP_ISR
  rseg    EVSEG:ROOT(2)
  //процедура обработки прерываний
AVR32_TC_IRQ_GROUP_ISR:
  //код сюда...
  
  rete
                
  end


Недочёт: AVR32_TC_IRQ_GROUP_ISR-0x80004000 - не получилось подставить начальный адрес сектора EVSEG, 0x80004000 - его абсолютный адрес, полученный при отладке
Скорость вызова прерывания, по-моему, на С и асме одинаковая. Но на асме в некоторых случаях можно выиграть в скорости обработки самой процедуры прерывания. beer.gif
Go to the top of the page
 
+Quote Post



Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 19th July 2025 - 19:13
Рейтинг@Mail.ru


Страница сгенерированна за 0.02465 секунд с 7
ELECTRONIX ©2004-2016