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

 
 
> FIQ и регистры, IAR использует R0-R2
Sagittarius
сообщение Jan 27 2010, 17:42
Сообщение #1


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Здравствуйте.

Подскажите по проблемке. Подключил таймер на FIQ (SAM7X, 48МГц, таймер 50кГц). смотрю листинг что выдает IAR - а он в начале сохраняет R0-R2, потом их использует и восстанавливает. А как сделать чтоб использовались R8-R14, чтоб не сохранять ничего? Оптимизацию по скорости включал, но не помогло. Между прерываниями всего 961 такт и тратить их попусту жалко.

Спасибо.
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
zltigo
сообщение Jan 27 2010, 18:11
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 13 372
Регистрация: 27-11-04
Из: Riga, Latvia
Пользователь №: 1 244



Не вызывать подпрограммы.


--------------------
Feci, quod potui, faciant meliora potentes
Go to the top of the page
 
+Quote Post
Sagittarius
сообщение Jan 27 2010, 19:05
Сообщение #3


Местный
***

Группа: Свой
Сообщений: 207
Регистрация: 26-01-06
Из: СПб
Пользователь №: 13 659



Цитата(zltigo @ Jan 27 2010, 21:11) *
Не вызывать подпрограммы.


ничего не вызывается, просто инкрементится dword и сбрасываются таймер и AIC

__fiq __arm __ramfunc void FIQTimer2Handler(void){
dword dumm;
dumm=AT91C_BASE_TC2->TC_SR;
time2++;
AT91C_BASE_AIC->AIC_EOICR=0xffffffff;
}

кусок листинга:
243 __fiq __arm __ramfunc void FIQTimer2Handler(void){
\ FIQTimer2Handler:
\ 00000000 03002DE9 PUSH {R0,R1}
244 //
245 dword dumm;
246 dumm=AT91C_BASE_TC2->TC_SR;
..........
..........
249 }
\ 0000002C 0300BDE8 POP {R0,R1}
\ 00000030 04F05EE2 SUBS PC,LR,#+4 ;; return
Go to the top of the page
 
+Quote Post



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

 


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


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