intérruption par overflow du timer2 récalcitrant

Pour toutes vos questions sur CodeVision et la programmation en C en général

Modérateur : Modérateur

halifax
NOUVEAU
NOUVEAU
Messages : 11
Inscription : 02 avr. 2008 14:05
Contact :

intérruption par overflow du timer2 récalcitrant

Message 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;


halifax
NOUVEAU
NOUVEAU
Messages : 11
Inscription : 02 avr. 2008 14:05
Contact :

?

Message 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????

Répondre