Que hay compañeros, Feliz Año, empezamos con problemas jajaja

Les platico que, me he armado de valor, y he borrado todo vestigio de CCS Compiler para por fin migrar mis proyectos a Atmel........bueno no he borrado nada aun, pero si quiero pasarme ya a estos micros jajaja
He comenzado a migrar uno de mis proyectos, que mas me interesa, y una parte esencial es la interrupcion externa, he logrado hacerla funcionar en parte, digo en parte porque me ocurre un problema que seguramente debe ser algo mal echo de mi parte, aunque sospecho del compilador o del IDE (AVRgcc y Microchip Studio)
La interrupcion entra y se ejecuta, pero, en ella, coloco una bandera, algo asi.....
interrupcion (vect_int....)
{
flag=1;
}
la cosa no es de sintaxis, por si ya me van a regañar que algo no esta bien escrito, es solo para ilustrar y es que el problema no esta en la declaracion de la rutina de interrupcion ni en si entra o no, de que entra, entra, probado, lo que no hace es ponerme la variable flag en 1
en el main( ), especificamente en el ciclo while, infinito, reviso esa bandera, y nunca se cumple el condicional IF que revisa a flag, esto se observa porque nunca enciende el led que le he mandado encender cuando flag sea 1.
algo asi....
void main(void)
{
while(true)
{
if(flag==1)
{
flag=0;
PORTE &= ~(1<<PIN_E4); //(logica negativa)
}
}
}
Bueno pues si coloco, directamente la instruccion de encendido, en la rutina de interrupcion todo va de maravilla, enciende apenas se genera la interrupcion externa en el pin correspondiente
Pero si se me ocurre hacerlo, atraves de la variable flag, no funciona
No se si es un tema de tipos de variables, uso una tipo uint_8, he probado cambiandola a int, y char, pero eso no hace ningun cambio, sigue igual.
Que sera que cuando uso flag, no funciona
Que hace falta?
En CCS jamas tuve un problema similar, que no me colocara una bandera a 1 ó 0, segun el caso, y es que estoy mas que seguro que si funciona la interrupcion.
De antemano muchas gracias por su ayuda y comentarios
Saludos