AVR-GCC i obsługa przerwań

Witam Jak w gcc pozbyć się prologu i epilogu w obsłudze przerwania ?

************* 73:koderrc.c **** SIGNAL(SIG_OUTPUT_COMPARE1A) 170 .LM19: 171 /* prologue: frame size=0 */ 172 0064 1F92 push __zero_reg__ 173 0066 0F92 push __tmp_reg__ 174 0068 0FB6 in __tmp_reg__,__SREG__ 175 006a 0F92 push __tmp_reg__ 176 006c 1124 clr __zero_reg__ 177 /* prologue end (size=5) */ 74:koderrc.c **** cbi(PORTB, PB3); 179 .LM20: 180 006e C398 cbi 56-0x20,3 75:koderrc.c **** } 182 .LM21: 183 /* epilogue: frame size=0 */ 184 0070 0F90 pop __tmp_reg__ 185 0072 0FBE out __SREG__,__tmp_reg__ 186 0074 0F90 pop __tmp_reg__ 187 0076 1F90 pop __zero_reg__ 188 0078 1895 reti *******************

w sumie wystarczyłoby 180 006e C398 cbi 56-0x20,3 188 0078 1895 reti

a zależy mi na jak najszybszym wykasowaniu tego bitu po przyjściu przerwania. Możeby jakąś wstawkę assemblerową zrobić, tylko nie wiem jak to wkleić w obsugę przerwania.

Pozdrawiam Grzegorz Kurczyk

Reply to
Grzegorz Kurczyk
Loading thread data ...

void SIG_OUTPUT_COMPARE1A(void) __attribute__ ((naked));

void SIG_OUTPUT_COMPARE1A(void) { __asm__ __volatile__ ("cbi 56-0x20,3\n" "reti\n" ::); }

w.

Reply to
Wojtek Kaniewski

Thu, 15 Jul 2004 14:14:59 +0200, na pl.misc.elektronika, Grzegorz Kurczyk napisał(a):

AFAIK tylko pisząc obsługę w asemblerze w oddzielnych modułach .S ( ale nie próbowałem )

Reply to
Jurek Szczesiul

Thu, 15 Jul 2004 14:45:23 +0200, na pl.misc.elektronika, Wojtek Kaniewski napisał(a):

Dzięki za przypomnienie o naked - zupełnie mi wypadło z głowy.

BTW - obie metody działają dobrze - można sobie wybrać wg preferencji. Wersja z naked jest szybka i zgrabna, natomiast oddzielny asm pozwala uniknąć barokowej składni inline-asm i korzystać z preprocesora :

<>

// plik przerwań asemblerowych #define __SFR_OFFSET 0 #include <avr\io.h>

.section .text .global SIG_OUTPUT_COMPARE1A SIG_OUTPUT_COMPARE1A: cbi PORTB,3 reti </>

Reply to
Jurek Szczesiul

Użytkownik Wojtek Kaniewski napisał:

Działa !!! Dzięki serdeczne !!!

Pozdrawiam Grzegorz Kurczyk

Reply to
Grzegorz Kurczyk

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.