pyroman 2 27 сентября, 2012 Опубликовано 27 сентября, 2012 · Жалоба Приветствую. Привык в своих IAR С-проектах на AVR писать процедуры обработки прерываний как отдельные файлы на ассемблере. Не хочу менять привычку и на AVR32. Кто знает как? Документация IAR-ра этого не описывает... Нужен скелет. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
Артём__ 0 27 сентября, 2012 Опубликовано 27 сентября, 2012 · Жалоба Привык в своих IAR С-проектах на AVR писать процедуры обработки прерываний как отдельные файлы на ассемблере. А зачем? Какой выигрыш? Не замеряли? Документация IAR-ра этого не описывает... Нужен скелет. Наверное не в том разделе ищите... Должен быть какой-то Assembler Reference Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 28 сентября, 2012 Опубликовано 28 сентября, 2012 · Жалоба Решение найдено методом научного тыка и копания startup-кода :rolleyes: #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: Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 2 октября, 2012 Опубликовано 2 октября, 2012 · Жалоба Приветствую. Привык в своих IAR С-проектах на AVR писать процедуры обработки прерываний как отдельные файлы на ассемблере. Не хочу менять привычку и на AVR32. Кто знает как? Документация IAR-ра этого не описывает... Нужен скелет. В документе: "ARM® IAR C/C++ Compiler Reference Guide" есть глава - Part 1. Using the compiler, которая содержит раздел - Assembler interface, где и находится - CREATING SKELETON CODE. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
pyroman 2 4 октября, 2012 Опубликовано 4 октября, 2012 · Жалоба В документе: "ARM® IAR C/C++ Compiler Reference Guide" есть глава - Part 1. Using the compiler, которая содержит раздел - Assembler interface, где и находится - CREATING SKELETON CODE. 1. Вопрос был про AVR32, а не ARM. 2. AVR32® IAR C/C++ Compiler Reference Guide ответа на тему топика не даёт Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться
skyvmicro 0 5 октября, 2012 Опубликовано 5 октября, 2012 · Жалоба 1. Вопрос был про AVR32, а не ARM. 2. AVR32® IAR C/C++ Compiler Reference Guide ответа на тему топика не даёт Вы заметили, что наименования разделов в документах одинаковы? Ссылка на ARM Compiler была дана в качестве направления поиска. А что касается содержания раздела Assembler language interface, то мне он как раз и помог создать скелет кода на ассемблере, который я потом правил под себя и его уже вставлял в проект. Цитата Поделиться сообщением Ссылка на сообщение Поделиться на другие сайты Поделиться