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.