Dmitry Zuikov wrote:
:
__attribute__((naked, section(".init3"))) void __low_level_init(void)
{
 WDTCTL = 0x5A00 + 0x0080;
    P5DIR = 0x20|0x10;
    P5OUT = 0;

    P3OUT &= ~(0x0010 +0x0020);
    P3SEL = 0x30;
    UCA0CTL1 |= (1<<6);
    UCA0BR0 = 0x03;
    UCA0BR1 = 0x00;
    UCA0MCTL = (0x04) + (0x02);
    UCA0CTL1 &= ~(0x01);
    IE2 |= (1<<0);


}

int main(void)
{



    for(;;) {
    }
}


void __attribute__((interrupt (14))) USCI0RX_ISR(void)
{
    P5DIR = 0x20|0x10;
    P5OUT |= 0x20;
    P5OUT |= 0x10;


}

Ok, if I understand correctly, you never get P5.4 and P5.5 set to one? You also have tested enabling interrupts with eint() in main()? (because in the above version interrupts are disabled and thus the ISR will never be called...). Also the ISR will only called once.

__low_level_init() and main() are reached? What are the actual register values in gdb if you have reached main(), esp R1 would be of interest.

Have you checked the interrupt vectors at 0xffc0-0xffff? What are they showing?

As stated before from Roberto(?), you have to include the "msp430x241x.h", not the "msp430x24x.h"! Interrupt mapping is differently. Also it would be great, if you lett the compiler run with "msp430-gcc -v".

Hardy

Reply via email to