Richard,
> At 10:02 AM 6/28/2003 +0100, Paul Curtis
wrote:
> >ISO/ANSI C does define two variants of main(). It's either int
> >main(int argc, char **argv) or void main(void), and others if
> >documented by the language translator. ...
>
> Yup, the former for "normal" C compilers, the latter for use by
these
> annoying little devices w/o an OS, something about in (the)
> bed system or
> something
Yeah, freestanding implementation is how the ISO standard phrases it.
-- Paul.
MSPGCC vs IAR?
Started by ●June 27, 2003
Reply by ●June 28, 20032003-06-28
Reply by ●June 28, 20032003-06-28
To answer the original question...
IAR and MSPGCC do interrupt declarations a little differently. In IAR it
looks like this:
interrupt[TIMERA0_VECTOR] void Timer_A (void)
For MSPGCC, it should look like this:
interrupt (TIMERA0_VECTOR) Timer_A (void)
The "void" that is was referring to was the void in the interrupt
declaration, not main(). I also had to include <signal.h> so it would
know
what _EINT() was, but somehow you didn't get that error...
I used the following command to compile it (calling the source file
blink-int.c):
msp430-gcc -O2 -mmcu=msp430x1101 -Wall -o blink-int blink-int.c
HTH,
Ale
Ah_Chieh said:
> i got this demo program and compile it on IAR and MSPGCC.
>
> RESULTS :
> IAR = no error
>
> MSPGCC > fet1101_ta01.c: In fucntion 'main' :
> fet1101_ta01.c:28: warning: return type of 'main' is not
'int'
> fet1101_ta01.c: At top level:
> fet1101_ta01.c: syntax error before "void"
>
> //*******************************************************************
> // MSP-FET430X110 Demo - Timer_A Toggle P1.0, CCR0 Contmode ISR, //
> DCO SMCLK
> // Description; Toggle P1.0 using using software and TA_0 ISR.
> // Toggle rate is
> // set at 50000 DCO/SMCLK cycles. Default DCO frequency used for //
> TACLK.
> // Durring the TA_0 ISR P0.1 is toggled and 50000 clock cycles are //
> added to
> // CCR0. TA_0 ISR is triggered exactly 50000 cycles. CPU is
> // normally off and
> // used only durring TA_ISR.
> // ACLK = n/a, MCLK = SMCLK = TACLK = DCO ~ 800k.
> //
> // MSP430F1121
> // ---------------
> // /|\| XIN|-
> // | | |
> // --|RST XOUT|-
> // | |
> // | P1.0|-->LED
> //
> // M.Buccini
> // Texas Instruments, Inc
> // January 2002
> // Built with IAR Embedded Workbench Version: 1.25A
>
> #include <msp430x11x1.h>
>
> void main(void)
> {
> WDTCTL = WDTPW + WDTHOLD; // Stop WDT
> TACTL = TASSEL1 + TACLR; // SMCLK, clear TAR
> CCTL0 = CCIE; // CCR0 interrupt enabled
> CCR0 = 50000;
> P1DIR |= 0x01; // P1.0 output
> TACTL |= MC1; // Start Timer_A in
> continuous mode
> _EINT(); // Enable interrupts
>
> for (;;)
> {
> _BIS_SR(CPUOFF); // CPU off
> _NOP(); // Required only for C-spy
> }
> }
>
> // Timer A0 interrupt service routine
> interrupt[TIMERA0_VECTOR] void Timer_A (void)
> {
> P1OUT ^= 0x01; // Toggle P1.0
> CCR0 += 50000; // Add Offset to CCR0
> }
>