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
Un delay utilisant Timer0 entre deux if statement?
-
Bigheart39
Membre- Messages : 5
- Enregistré en : janvier 2018
Un delay utilisant Timer0 entre deux if statement?
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonjour,
et bienvenu parmi nous ..
Ta question n'est pas suffisament explicite pour qu'on puisse te donner un quelconque avis ..
Essaie de donner un exmple concret de ce que tu veux faire .
quelle est la FOSC utilisée sur ce PIC ?
L'outil MikroC Timer Calculator doit deja te fournir la base pour le timer0 ..
A suivre ..
et bienvenu parmi nous ..
Bigheart39 a écrit : ma question comment je peut mettre un delay utilisant Timer0 d'un pic 16F877a ,entre deux if statement ?
Ta question n'est pas suffisament explicite pour qu'on puisse te donner un quelconque avis ..
Essaie de donner un exmple concret de ce que tu veux faire .
quelle est la FOSC utilisée sur ce PIC ?
L'outil MikroC Timer Calculator doit deja te fournir la base pour le timer0 ..
A suivre ..
Un delay utilisant Timer0 entre deux if statement?
-
Bigheart39
Membre- Messages : 5
- Enregistré en : janvier 2018
paulfjujo a écrit :bonjour,
et bienvenu parmi nous ..Bigheart39 a écrit : ma question comment je peut mettre un delay utilisant Timer0 d'un pic 16F877a ,entre deux if statement ?
Ta question n'est pas suffisament explicite pour qu'on puisse te donner un quelconque avis ..
Essaie de donner un exmple concret de ce que tu veux faire .
quelle est la FOSC utilisée sur ce PIC ?
L'outil MikroC Timer Calculator doit deja te fournir la base pour le timer0 ..
A suivre ..
Salut a tous,merci palufjujo pour ta reaction rapide
mon idee c d'ecrire une conditon if();mais entre la premiere if et la deusieme if(); un minimum du temps "time" <=4minutes
beh je travaille avec le celebre pic16f877a et une crystal de 20Mhz
merci
Un delay utilisant Timer0 entre deux if statement?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Pour ton code ceci me chagrine
Code : Tout sélectionner
trisa.f0=0;=====================>je declare le pin a0 comme une entree
Mettre le registre à 0 correspond à mettre toutes les broches en SORTIE et non en entrée
Un delay utilisant Timer0 entre deux if statement?
-
Bigheart39
Membre- Messages : 5
- Enregistré en : janvier 2018
Salut Jérémy
wi ta raison le port est un entrée donc :
Désolé pour ca car je ss encore dubétant ,avez vous des proposition a propos de ma question ?
merci
wi ta raison le port est un entrée donc :
Code : Tout sélectionner
porta.f0=1;
trisa.f0=1;
Désolé pour ca car je ss encore dubétant ,avez vous des proposition a propos de ma question ?
merci
Un delay utilisant Timer0 entre deux if statement?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Tu dois créer une temporisation . cette temporisation une fois le nombre de boucle nécessaire va lever un drapeau ( flag) t'indiquant que 4 minutes se sont écoulées .
Pour créer une tempo il existe plusieurs solutions ! c'est tu comment faire une temporisation sur interruption et la régler ?
PS attention au langage SMS STP.
Pour créer une tempo il existe plusieurs solutions ! c'est tu comment faire une temporisation sur interruption et la régler ?
PS attention au langage SMS STP.
Un delay utilisant Timer0 entre deux if statement?
-
Bigheart39
Membre- Messages : 5
- Enregistré en : janvier 2018
bonjour
a propos de temporisation ,j'ai essyé avec le programme Timer ,en mettant le Timer0 comme un conteur c'est ce que j'ai trouvé :
le probleme n'est pas au timer mais comment je peut comparais entre la premiere if(1)et la meme if(2) en mettant en compte l'ecart désirer de 4 minute (par exemple) entre les deux [ if(1) = if(2) ] ......es'que je suis en bon sens ou bien vous me proposer d'autre chose ?
merci
a propos de temporisation ,j'ai essyé avec le programme Timer ,en mettant le Timer0 comme un conteur c'est ce que j'ai trouvé :
Code : Tout sélectionner
char timer1,timer2
void InitTimer0(){
OPTION_REG = 0x86;
TMR0 = 100;
INTCON = 0xA0;
}
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 100;
timer1++;
if(timer1==100){ timer1=0; timer2++;}//le sitting est de 10 ms de delay *100fois=1seconde
}
}
le probleme n'est pas au timer mais comment je peut comparais entre la premiere if(1)et la meme if(2) en mettant en compte l'ecart désirer de 4 minute (par exemple) entre les deux [ if(1) = if(2) ] ......es'que je suis en bon sens ou bien vous me proposer d'autre chose ?
merci
Un delay utilisant Timer0 entre deux if statement?
- paulfjujo
Expert- Messages : 2597
- Âge : 73
- Enregistré en : juillet 2015
- Localisation : 01800
- Contact :
bonsoir,
4 mn => 240 sec
donc si le moteur est en marche depuis plus de 4' , tu ne peux pas l'arreter
C'est ce que tu veux ..?
il faut penser à la suite .. il faudra bien l'arreter un jour ce moteur
ATTENTION :
Cpt2 sur 1 byte => 240,241..255,0,1,2..
nota: evite d'utiliser des variables "timer1" et "timer2"
c'est trop sujet à erreur et confusion avec les timer1 et timer2
utilise plutot Cpt0 et Cpt1 ou Cpt2
ou carrement
comptage_IT_Timer0
comptage_Seconde
4 mn => 240 sec
Code : Tout sélectionner
void InitTimer0(){
OPTION_REG = 0x87;
TMR0 = 61;
INTCON = 0xA0;
}
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 61;
Cpt1++;
if(Cpt1>99)
{
Cpt1=0;
Cpt2++;
}
//Enter your code here
}
}
if( (porta.f0==1) || (Cpt2>240))
{
motor=1;
}
else motor =0;
donc si le moteur est en marche depuis plus de 4' , tu ne peux pas l'arreter
C'est ce que tu veux ..?
il faut penser à la suite .. il faudra bien l'arreter un jour ce moteur
ATTENTION :
Cpt2 sur 1 byte => 240,241..255,0,1,2..
nota: evite d'utiliser des variables "timer1" et "timer2"
c'est trop sujet à erreur et confusion avec les timer1 et timer2
utilise plutot Cpt0 et Cpt1 ou Cpt2
ou carrement
comptage_IT_Timer0
comptage_Seconde
Un delay utilisant Timer0 entre deux if statement?
-
Jérémy
Administrateur du site- Messages : 2725
- Âge : 45
- Enregistré en : juillet 2015
- Localisation : Dans le sud
- Contact :
Bonsoir,
J'avoue que ta formulation n'est pas très explicite. essaye de mieux expliquer ce que tu veux faire, pour que l'on puisse mieux t'aider.
Sur cette ligne , essaye de ne pas faire une comparaison d'égalité mais de supérieur ou égale, c'est une bonne habitude a prendre pour éviter les plantages.
J'avoue que ta formulation n'est pas très explicite. essaye de mieux expliquer ce que tu veux faire, pour que l'on puisse mieux t'aider.
Bigheart39 a écrit :Source du message if(timer1==100){ timer1=0; timer2++;}//le sitting est de 10 ms de delay *100fois=1seconde
Sur cette ligne , essaye de ne pas faire une comparaison d'égalité mais de supérieur ou égale, c'est une bonne habitude a prendre pour éviter les plantages.
Un delay utilisant Timer0 entre deux if statement?
-
Bigheart39
Membre- Messages : 5
- Enregistré en : janvier 2018
Bonjour
merci Jérémy ,vous étes raison ce que vous viens de dire la comparaison égale ou supérieur,la temporisation est obligatoire(pas minimum de time>=4minutes) ,mon projet il s'agit d'un régulateur de température "temp" ,ce régulateur doit assuré un écart de temps entre le déclenchement et l'enclenchement pas minimum de time>= 04 minutes
mais ce conteur est 1 byte peut etre lorsque l’exécution de code ce byte,CPT1=0;comme vous disiez
merci Jérémy ,vous étes raison ce que vous viens de dire la comparaison égale ou supérieur,la temporisation est obligatoire(pas minimum de time>=4minutes) ,mon projet il s'agit d'un régulateur de température "temp" ,ce régulateur doit assuré un écart de temps entre le déclenchement et l'enclenchement pas minimum de time>= 04 minutes
Code : Tout sélectionner
char temp,temperature désirée;
void InitTimer0(){
OPTION_REG = 0x87;
TMR0 = 61;
INTCON = 0xA0;
}
void Interrupt(){
if (TMR0IF_bit){
TMR0IF_bit = 0;
TMR0 = 61;
Cpt1++;
if(Cpt1>99)
{
Cpt1=0;
Cpt2++;
}
//Enter your code here
}
}
if( (temp>(temperature désirée+5) && (Cpt2>240))//
{
motor=1;
}
if( temp<=temperature désirée) motor =0;
mais ce conteur est 1 byte peut etre lorsque l’exécution de code ce byte,CPT1=0;comme vous disiez
paulfjujo a écrit :Source du message ATTENTION :
Cpt2 sur 1 byte => 240,241..255,0,1,2..
Qui est en ligne
Utilisateurs parcourant ce forum : Aucun utilisateur enregistré et 54 invités