[avr-gcc-list] Failing to share a flag between two files/modules :-/

2009-02-08 Thread Vincent Trouilliez
Hello Gents,

I am having problem communicating between main.c and another
file/module, ui.c to name it.

In main.c I set a flag from a timer ISR, every 100ms. 
In ui.c I am watching for that flag, but unfortunately it always
reads zero :-/ However if I watch for the flag in main() then it works
fine.

I am watching the flag in ui.c, so I declared it in ui.h, then ui.h
gets included in main.c so I can set the flag from there. 
Well that was my reasoning, but doesn't quite work sadly !

I must be doing something wrong obviously, just would love to learn what
it is ! ;-)


Regards,

--
Vince, a bit stuck and wondering again...


ui.h
---
static volatile uint8_t flag;



ui.c


if( flag )
{
   flag = 0;
   /* Do some stuff */
}



main.c

#include ui.h

ISR (TIMER0_COMP_vect)
{
flag = 1;
}

main() {}


___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


Re: [avr-gcc-list] Failing to share a flag between two files/modules :-/

2009-02-08 Thread Vincent Trouilliez
Just a quick collective thank you to Dave Hylands and Chris Kuethe who
sorted me out off-list ! :-)

static flag was precisely telling the compiler NOT to share the flag,
extern OTOH does just that. Program works as expected now, thanks
chaps.

--
Vince


___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list


Re: [avr-gcc-list] Failing to share a flag between two files/modules :-/

2009-02-08 Thread Parthasaradhi Nayani
Hello,
I guess there are two variables named flag being created, one in main and the 
other in ui.c. Please define the global variable in one .C file of your choice 
and tell the other file by using extern directive. Hope this solves your 
problem

Nayani



--- On Sun, 2/8/09, Vincent Trouilliez vincent.trouill...@modulonet.fr wrote:
From: Vincent Trouilliez vincent.trouill...@modulonet.fr
Subject: [avr-gcc-list] Failing to share a flag between two files/modules :-/
To: avr-gcc-list@nongnu.org avr-gcc-list@nongnu.org
Date: Sunday, February 8, 2009, 2:02 PM

Hello Gents,

I am having problem communicating between main.c and another
file/module, ui.c to name it.

In main.c I set a flag from a timer ISR, every 100ms. 
In ui.c I am watching for that flag, but unfortunately it always
reads zero :-/ However if I watch for the flag in main() then it works
fine.

I am watching the flag in ui.c, so I declared it in ui.h, then ui.h
gets included in main.c so I can set the flag from there. 
Well that was my reasoning, but doesn't quite work sadly !

I must be doing something wrong obviously, just would love to learn what
it is ! ;-)


Regards,

--
Vince, a bit stuck and wondering again...


ui.h
---
static volatile uint8_t flag;



ui.c


if( flag )
{
   flag = 0;
   /* Do some stuff */
}



main.c

#include ui.h

ISR (TIMER0_COMP_vect)
{
flag = 1;
}

main() {}


___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list



  ___
AVR-GCC-list mailing list
AVR-GCC-list@nongnu.org
http://lists.nongnu.org/mailman/listinfo/avr-gcc-list