Page 1 sur 1

intérruption par overflow du timer2 récalcitrant

Publié : 09 avr. 2008 21:51
par halifax
bonjour,
j'ai un problème sur mon code.
c'est surement une erreur toute bette mais je la vois pas
enfaite quand je le simule il rentre dans l'interruption int0 sans problème
après il devrait autorisé une interruption par comparaison du timer 2 mais le problème c'est que le timer 2 dépasse ocr2 sans exécuté l'interruption du timer 2.

je pense que vous avez l'œil plus averti que moi sur le sujet, pouvez vous m'aidez????
merci


j'ai mis que un bout du programme bien sur ya le reste du wizzard
petite précision c'est sur atmega16l.

Code : Tout sélectionner

 int A=0;    
 int C=1;
 
interrupt [EXT_INT0] void ext_int0_isr(void)
{
A=1;
TIMSK=0x80;

}


interrupt [TIM2_COMP] void timer2_comp_isr(void)
{
switch (A)    {   


   case 1:
     while(6)
     OCR2=0x94; //horizontal  
     A=2;
      break; 
    }
    }

void main(void)
{
PORTD=0x80;
DDRD=0x80;
TCCR2=0x7B;
TCNT2=0x00;
OCR2=0x08;
GICR|=0x40;
MCUCR=0x00;
MCUCSR=0x00;
GIFR=0x40;
TIMSK=0x00;


?

Publié : 10 avr. 2008 19:13
par halifax
enfait le probleme c'est qu'a la fin de l'interruption du INT0
il revient a dans le while(1) entre les acolade
while (1)
{

};
}

puis il execute toutes les instruction après le main, les initialisation et moi je voudrais qu'il revienne dans la boucle while(1) pour exécuter la prochaine interruption du timmer2.

pourquoi il revient toujours juste après le main???
faut il absolument ecrire dans le main????