Yahoo Groups archive

AVR-Chat

Index last updated: 2026-04-28 22:41 UTC

Thread

Gcc code error question

Gcc code error question

2005-04-12 by arhodes19044

I am trying out some GCC code.  I started with the BDmicro example 
which sets a timer interrupt and flashes the LED on his board.  I 
then tried to make the interrupt handler toggle the LED avery 1024 
ticks.  I got errors that I can't explain.

Here is the code.  WHite space is slightly trimmed for compactness


--------------------------------------
#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>
#include <inttypes.h>

volatile uint16_t ms_count;
 /* millisecond counter interrupt vector */
 
SIGNAL(SIG_OUTPUT_COMPARE0)
{
  ms_count++;
  If (ms_count == 1024) 
  {
	PORTB ^= 0x01;    /* toggle LED */ /* toggles every second */
	ms_count = 0;
  }
}

void init_timer(void)
{
  /*
   * Initialize timer0 to generate an output compare interrupt, and
   * set the output compare register so that we get that interrupt
   * every millisecond.
   */
  TIFR  |= _BV(OCIE0);
  TCCR0  = _BV(WGM01)|_BV(CS02)|_BV(CS00); /* CTC, prescale = 128 */
  TCNT0  = 0;
  TIMSK |= _BV(OCIE0);    /* enable output compare interrupt */
  OCR0   = 125;          /* match in 1 ms */
}


int main(void)
{
	DDRB = 0x01;  /* enable PORTB 1 as an output */
	init_timer();

  /* enable interrupts */
	sei();
	while (1) 
        {
    /* loop endlessly */
	}

}


----------- and the error I get is:

> "make.exe" all
avr-gcc -g -mmcu=atmega128 -Wall -O   -c -o hw.o hw.c
hw.c: In function `__vector_15':
hw.c:50: warning: implicit declaration of function `If'
hw.c:51: error: parse error before '{' token
hw.c: At top level:
hw.c:55: error: parse error before '}' token
make.exe: *** [hw.o] Error 1

> Process Exit Code: 2


----------------------------------------


The IF statement inside the interrupt handler is the problem.

It looks fine to me.  What is wrong?

-Tony

Re: Gcc code error question

2005-04-12 by arhodes19044

Ahhhhh, yes.  Case sensitivity.  I am out of the habit of seeing 
that.  Stupid me!!!!  Thanks so much!

-Tony


--- In AVR-Chat@yahoogroups.com, "Jesper Hansen" <jesperh@t...> 
wrote:
> You have "if" with a capital "I" in the signal handler.
> Change to "if".
> 
> /Jesper
> 
> ----- Original Message ----- 
> From: "arhodes19044" <spamiam@c...>
> To: <AVR-Chat@yahoogroups.com>
> Sent: Tuesday, April 12, 2005 4:00 PM
> Subject: [AVR-Chat] Gcc code error question
> 
> 
> > 
> > 
> > I am trying out some GCC code.  I started with the BDmicro 
example 
> > which sets a timer interrupt and flashes the LED on his board.  
I 
> > then tried to make the interrupt handler toggle the LED avery 
1024 
> > ticks.  I got errors that I can't explain.
> > 
> > Here is the code.  WHite space is slightly trimmed for 
compactness
> > 
> > 
> > --------------------------------------
> > #include <avr/io.h>
> > #include <avr/interrupt.h>
> > #include <avr/signal.h>
> > #include <inttypes.h>
> > 
> > volatile uint16_t ms_count;
> > /* millisecond counter interrupt vector */
> > 
> > SIGNAL(SIG_OUTPUT_COMPARE0)
> > {
> >  ms_count++;
> >  If (ms_count == 1024) 
> >  {
> > PORTB ^= 0x01;    /* toggle LED */ /* toggles every second */
> > ms_count = 0;
> >  }
> > }
> > 
> > void init_timer(void)
> > {
> >  /*
> >   * Initialize timer0 to generate an output compare interrupt, 
and
> >   * set the output compare register so that we get that interrupt
> >   * every millisecond.
> >   */
> >  TIFR  |= _BV(OCIE0);
> >  TCCR0  = _BV(WGM01)|_BV(CS02)|_BV(CS00); /* CTC, prescale = 128 
*/
Show quoted textHide quoted text
> >  TCNT0  = 0;
> >  TIMSK |= _BV(OCIE0);    /* enable output compare interrupt */
> >  OCR0   = 125;          /* match in 1 ms */
> > }
> > 
> > 
> > int main(void)
> > {
> > DDRB = 0x01;  /* enable PORTB 1 as an output */
> > init_timer();
> > 
> >  /* enable interrupts */
> > sei();
> > while (1) 
> >        {
> >    /* loop endlessly */
> > }
> > 
> > }
> > 
> > 
> > ----------- and the error I get is:
> > 
> >> "make.exe" all
> > avr-gcc -g -mmcu=atmega128 -Wall -O   -c -o hw.o hw.c
> > hw.c: In function `__vector_15':
> > hw.c:50: warning: implicit declaration of function `If'
> > hw.c:51: error: parse error before '{' token
> > hw.c: At top level:
> > hw.c:55: error: parse error before '}' token
> > make.exe: *** [hw.o] Error 1
> > 
> >> Process Exit Code: 2
> > 
> > 
> > ----------------------------------------
> > 
> > 
> > The IF statement inside the interrupt handler is the problem.
> > 
> > It looks fine to me.  What is wrong?
> > 
> > -Tony
> > 
> > 
> > 
> > 
> > 
> > 
> > Yahoo! Groups Links
> > 
> > 
> > 
> > 
> > 
> > 
> > 
> >

Re: [AVR-Chat] Gcc code error question

2005-04-12 by Jesper Hansen

You have "if" with a capital "I" in the signal handler.
Change to "if".

/Jesper

----- Original Message ----- 
Show quoted textHide quoted text
From: "arhodes19044" <spamiam@comcast.net>
To: <AVR-Chat@yahoogroups.com>
Sent: Tuesday, April 12, 2005 4:00 PM
Subject: [AVR-Chat] Gcc code error question


> 
> 
> I am trying out some GCC code.  I started with the BDmicro example 
> which sets a timer interrupt and flashes the LED on his board.  I 
> then tried to make the interrupt handler toggle the LED avery 1024 
> ticks.  I got errors that I can't explain.
> 
> Here is the code.  WHite space is slightly trimmed for compactness
> 
> 
> --------------------------------------
> #include <avr/io.h>
> #include <avr/interrupt.h>
> #include <avr/signal.h>
> #include <inttypes.h>
> 
> volatile uint16_t ms_count;
> /* millisecond counter interrupt vector */
> 
> SIGNAL(SIG_OUTPUT_COMPARE0)
> {
>  ms_count++;
>  If (ms_count == 1024) 
>  {
> PORTB ^= 0x01;    /* toggle LED */ /* toggles every second */
> ms_count = 0;
>  }
> }
> 
> void init_timer(void)
> {
>  /*
>   * Initialize timer0 to generate an output compare interrupt, and
>   * set the output compare register so that we get that interrupt
>   * every millisecond.
>   */
>  TIFR  |= _BV(OCIE0);
>  TCCR0  = _BV(WGM01)|_BV(CS02)|_BV(CS00); /* CTC, prescale = 128 */
>  TCNT0  = 0;
>  TIMSK |= _BV(OCIE0);    /* enable output compare interrupt */
>  OCR0   = 125;          /* match in 1 ms */
> }
> 
> 
> int main(void)
> {
> DDRB = 0x01;  /* enable PORTB 1 as an output */
> init_timer();
> 
>  /* enable interrupts */
> sei();
> while (1) 
>        {
>    /* loop endlessly */
> }
> 
> }
> 
> 
> ----------- and the error I get is:
> 
>> "make.exe" all
> avr-gcc -g -mmcu=atmega128 -Wall -O   -c -o hw.o hw.c
> hw.c: In function `__vector_15':
> hw.c:50: warning: implicit declaration of function `If'
> hw.c:51: error: parse error before '{' token
> hw.c: At top level:
> hw.c:55: error: parse error before '}' token
> make.exe: *** [hw.o] Error 1
> 
>> Process Exit Code: 2
> 
> 
> ----------------------------------------
> 
> 
> The IF statement inside the interrupt handler is the problem.
> 
> It looks fine to me.  What is wrong?
> 
> -Tony
> 
> 
> 
> 
> 
> 
> Yahoo! Groups Links
> 
> 
> 
> 
> 
> 
> 
>

Move to quarantaine

This moves the raw source file on disk only. The archive index is not changed automatically, so you still need to run a manual refresh afterward.