Gast
#3264436
HI !
Ich brauche einen dauernd laufenden seriellen I/O Strom und benutze
dafür den USART1 des ATMega2560. Zum Programmieren benutze ich Atmel
Studio.
Wenn ich meine Interruptroutine für USART Buffer empty direkt in C
programmiere
ISR(xyx_vect)
{
}
dann funktionierts aber nur mit 250kHz da der Compiler fetten pro/epilog
code macht der schon alle 60 Takte benutzt die ich für den Interrupt
reserviert habe. Ich muss mit 1MHz raustakten und lesen und nebenbei
noch einen zweiten UART bedienen.
Mit der directive "register unsigned char <var> asm("rxx");" blockier
ich mir die register die ich in der Interruptroutine brauche und somit
könnte ich die ganze push/pop action vergessen.
Soweit ok, aber wie sage ich jetzt dem compiler:
1) Häng mir einen Vector ein
-> Habs mit .org Vector und jmp Vector probiert => wird ignoriert ?
2) Optimier mir nicht den INT Assemblercode weg ?
Kurz: Gesucht wird die Möglichkeit C/C++ code mit einer schnellen
Interruptroutine in Assembler zu kombinieren ohne sich die Finger mit
inline assembler zu brechen. Könnte mir jemand ein Beispiel zeigen
(bitte nicht http://nongnu.org/avr-libc/user-manual/group__asmdemo.html)
verlinken, da fehlt genau diese info :)
Thanks in advance
Franz