Hallo Cracks,
ich habe Probleme mit meinem RAM Bereich und STacküberlauf und so.
Jetzt war ich auf der Suche nach PUSH Befehlen die man rausschmeissen
kann um den STack nicht unnötig vollzukrachen.
Dabei fiel mir auf das in meienr UART Interrupt Routine ein Push R15
auftaucht obwohl R15 garnicht benutz wird ???
Hier meien Quelltext :
C:
interrupt (UART0RX_VECTOR) int_UART0RX (void)
{
if (!(URXIFG0 & IFG2)) // if zeile raus um code zu sparen
{ // Receive Start Edge
RAB.UARTstatus |= StartEdge;
U0TCTL &= ~URXSE;
U0TCTL |= URXSE;
} else
{
RAB.UARTRecByte = RXBUF0;
RAB.UARTstatus |= CharRec;
};
};
MSPGCC ASM:
interrupt (UART0RX_VECTOR) int_UART0RX (void)
{
fa84: 0f 12 push r15 ;
asm ("bit.b #0x01,%0" :: "m" (URXIFG0));
fa86: d2 b3 82 fa bit.b #1, &0xfa82 ;r3 As==01
if (!(URXIFG0 & IFG2)) // if zeile raus um code zu sparen
fa8a: d2 b3 03 00 bit.b #1, &0x0003 ;r3 As==01
fa8e: 07 20 jnz $+16 ;abs 0xfa9e
{ // Receive Start Edge
RAB.UARTstatus |= StartEdge;
fa90: d2 d3 99 02 bis.b #1, &0x0299 ;r3 As==01
U0TCTL &= ~URXSE;
fa94: f2 c2 71 00 bic.b #8, &0x0071 ;r2 As==11
U0TCTL |= URXSE;
fa98: f2 d2 71 00 bis.b #8, &0x0071 ;r2 As==11
fa9c: 05 3c jmp $+12 ;abs 0xfaa8
} else
{
RAB.UARTRecByte = RXBUF0;
fa9e: d2 42 76 00 mov.b &0x0076,&0x029a ;0x0076
faa2: 9a 02
RAB.UARTstatus |= CharRec;
faa4: e2 d3 99 02 bis.b #2, &0x0299 ;r3 As==10
};
};
faa8: 3f 41 pop r15 ;
faaa: 00 13 reti
Wie kann man dem MSPGCC sowas abgewöhnen ?
Danke im Voraus für die Hilfe :-)
Roy
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.