Bienvenue aux nouveaux arrivants sur FantasPic !
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
- Pensez à lire les règles durant votre visite, il n'y en a pas beaucoup, mais encore faut-il les respecter .
- N’hésitez pas à faire des remarques et/ou suggestions sur le Forum, dans le but de l'améliorer et de rendre vos prochaines visites plus agréables.
- Vous pouvez regarder votre "panneau de l'utilisateur" afin de configurer vos préférences.
- Un passage par "l'utilisation du forum" est recommandé pour connaître les fonctionnalités du forum.
--- L’équipe FantasPic ---
Modérateur : Jérémy
Interrupt Timer strappée
- paulfjujo

Maître- Messages : 3260
- Âge : 75
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
tu ne désactives jamais la validation de INT
si, TMR1IE_bit=0 lorsque la tempo est atteinte
Code : Tout sélectionner
void Interrupt_LOW() iv 0x0018 ics ICS_AUTO
{
// ----- timer 1 ----------------
if ( (TMR1IE_bit==1) && ( TMR1IF_bit==1))
{ // Test "Peripheral Interrupt Request Register 1" for Timer1 Flag
Cpt1++;
if (Cpt1 >=Max_Timer1) // x100 ms
{
Cpt1=0;
Flag_Timer1=1;
TMR1ON_bit=0;
TMR1IE_bit=0;
}
TMR1H= 0x0B; // Hi (3035);
TMR1L= 0xDB; // Lo (3035);
PIR1.TMR1IF=0;
}
}TMR1IF_bit = 0; a bon, si =1, tu ne serais pas la mais dans l'int , et dans la même,
Non, pas forcement dans l'interupt, car si la tempo est atteinte alors TMR1IE_bit=0;
on ne traite plus l'IT timer1.
mais je te l'accorde , c'est une fois de trop, le 2em TRM1IF_bit=0;
de meme pour les 3 premieres lignes , pour une optimisation
Code : Tout sélectionner
TMR1IF_bit = 0;
TMR1H = 0x0B;
TMR1L = 0xDC;On pourrait aussi utiliser le timer1 en comptage (sans IT) dans une autre partie de programme
et avoir un TMR1IF déja armé .
Bref c'est mettre Ceinture et Bretelles , pour un contexte bien figé.
Avec le 18F87J50 ou le 18F46K22 j'ai de la place en ROM et RAM .. et donc ne cherche pas l'optimisation absolue
mais je vais suivre ton conseil.
Code : Tout sélectionner
void Arme_Timer1()
{
Cpt1=0;
Flag_Timer1=0;
TMR1ON_bit=1; // Timer0 ON
}Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 3 invités
