Разработка, производство и продажа радиоэлектронной аппаратуры
|
Требуется программист в Зеленограде - обработка данных с датчиков; ColdFire; 40 тыс.
e-mail: jobsmp@pochta.ru
|
непонятно по какому праву (+)
Отправлено
bp (78.37.186.120) 18 февраля 2010, г. 23:03
В ответ на:
вопрос по IAR для AVR (+) отправлено
bp 18 февраля 2010, г. 22:35
если компилятору предложить конструкцию:
#pragma vector = INT0_vect
__interrupt void int0_ISR()
{
asm(" sbi 0x18,0x00");
int0_ISR_slow();
}
он вытворяет вот такое:
\ 00000000 938A ST -Y,R24
\ 00000002 93FA ST -Y,R31
\ 00000004 93EA ST -Y,R30
\ 00000006 923A ST -Y,R3
\ 00000008 922A ST -Y,R2
\ 0000000A 921A ST -Y,R1
\ 0000000C 920A ST -Y,R0
\ 0000000E 937A ST -Y,R23
\ 00000010 936A ST -Y,R22
\ 00000012 935A ST -Y,R21
\ 00000014 934A ST -Y,R20
\ 00000016 933A ST -Y,R19
\ 00000018 932A ST -Y,R18
\ 0000001A 931A ST -Y,R17
\ 0000001C 930A ST -Y,R16
\ 0000001E B78F IN R24,0x3F
\ 00000020 9AC0 sbi 0x18,0x00
\ 00000022 .... RCALL int0_ISR_slow
\ 00000024 BF8F OUT 0x3F,R24
\ 00000026 9109 LD R16,Y+
\ 00000028 9119 LD R17,Y+
\ 0000002A 9129 LD R18,Y+
\ 0000002C 9139 LD R19,Y+
\ 0000002E 9149 LD R20,Y+
\ 00000030 9159 LD R21,Y+
\ 00000032 9169 LD R22,Y+
\ 00000034 9179 LD R23,Y+
\ 00000036 9009 LD R0,Y+
\ 00000038 9019 LD R1,Y+
\ 0000003A 9029 LD R2,Y+
\ 0000003C 9039 LD R3,Y+
\ 0000003E 91E9 LD R30,Y+
\ 00000040 91F9 LD R31,Y+
\ 00000042 9189 LD R24,Y+
а не засовывает все st/ld в функцию int0_ISR_slow()
Составить ответ | Вернуться на конференцию
Ответы
- в яре так и будет... были какие-то настройки, но, видать пропали. делай выход из инта. и живи как есть. прога длинная? тогда он всегда так делать бует. - Ациль Шифер (19.02.2010, 06:09:13 95.25.249.226, пустое)
- Не вызывайте функций в обработчике прерывания, тогда компилятор будет сохранять только те регистры, которые ему нужны, а не те, которые функция может использовать в соответствии с соглашениями о вызовах. - vmp (18.02.2010, 23:11:35 80.90.120.6, пустое)
- а если функцию разместить по фиксированному адресу а в обработчике вставить асмовую строку с перескоком? - колян безпарольный (18.02.2010, 23:07:36 193.200.150.125, пустое)