Bonjour
Bonjour
je voudrais programmer une boucle qui s'exécute avec un temps fixe, éventuellement paramétrable, avec à l'intérieur des instructions de calcul et de commande de servos moteurs qui peuvent avoir un temps variable. Si le temps des instructions est supérieur au temps permis par la boucle, je sors un message d'erreur, si le temps des instructions est inférieur au temps permis par la boucle, c'est le temps de la boucle qui est pris en compte.
comment faire ?
L'objectif est d'avoir un cycle régulier en temps quelque soit le temps pris par les instructions si évidemment leur temps est inférieur au temps visé.
Je ne sais pas si ma question est claire ? je pourrais préciser si besoin.
Merci !
Bonjour,
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique
L'inscription sur ce forum et les premiers messages sont modérés par un Administrateur.
Ce n'est pas très convivial mais malheureusement nécessaire suite au spam intensif de nos amis russes.
Cordialement,
Dominique
Programmation boucle temps fixe
Forum rules
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).
Merci de suivre les recommandations suivantes.
Pensez à:
Vous aimez MicroPython? Nous aussi! Ces forums sont destinés aux amoureux de Python sur MicroContrôleur.
Le support se fait sur base volontaire et uniquement pour des produits officiels (pas de copie SVP).
Le forum de MicroPython.org sera une excellente référence documentaire (en anglais).
Merci de suivre les recommandations suivantes.
Pensez à:
- Titre claire: permettant d'identifier le produit et le problème
- Contenu complet: schema, message d'erreur, etc (tout ce qui permet d'aider à distance).
- Fichier joint: Max 300 Ko
- Courtoisie et précision
Re: Programmation boucle temps fixe
Bonjour,
Tu pourrais peut-être
1) memoriser la valeur du temps (en ms ou µs) en début de boucle
2) effectuer tes déplacements de servos,
3) reprendre la valeur du temps
4) calculer la différence entre les deux valeurs ce qui estme la durée de déplacement des servos
5.1) Si cette durée est inférieure à la durée prévue, tu patientes le temps nécessaire
5.2) sinon, tu envoies un message d'erreur
C'est une piste, il y en a certainement d'autres,
Coyotte
Tu pourrais peut-être
1) memoriser la valeur du temps (en ms ou µs) en début de boucle
2) effectuer tes déplacements de servos,
3) reprendre la valeur du temps
4) calculer la différence entre les deux valeurs ce qui estme la durée de déplacement des servos
5.1) Si cette durée est inférieure à la durée prévue, tu patientes le temps nécessaire
5.2) sinon, tu envoies un message d'erreur
C'est une piste, il y en a certainement d'autres,
Coyotte
Re: Programmation boucle temps fixe
Bonjour,
Je suis tout a fait d'accord avec la réponse de Coyotte, qui est tombé pendant que je rédigeait . En concret ça donnes quelque chose comme ça pour une boucle de 1s :
Fred
Je suis tout a fait d'accord avec la réponse de Coyotte, qui est tombé pendant que je rédigeait . En concret ça donnes quelque chose comme ça pour une boucle de 1s :
Code: Select all
import time
while (1):
debut = time.ticks_ms()
# TRAITEMENT SERVO
# durée traitement servo
duree = time.ticks_diff(time.ticks_ms(), debut
if duree >= 1000 :
# routine d'erreur
else:
time.sleep_ms(1000-duree)
Re: Programmation boucle temps fixe
Mâtin !
Quel travail d'équipe !
Merci Fred d'avoir concrétisé les choses ( Suis pas encore assez calé en Python pour sortir une solution "on the fly" )
Coyotte
Quel travail d'équipe !
Merci Fred d'avoir concrétisé les choses ( Suis pas encore assez calé en Python pour sortir une solution "on the fly" )
Coyotte
Re: Programmation boucle temps fixe
Salut Coyotte,
Il faut relativiser l'exploit. C'est du code réchauffé que j'avais fait pour un client. J'ai juste gardé le squelette et un peu renommé les variables.
A cette heure-ci, je suis en hypoglycémie et ne fait rien de critique, sous peine de devoir refaire
Fred
Il faut relativiser l'exploit. C'est du code réchauffé que j'avais fait pour un client. J'ai juste gardé le squelette et un peu renommé les variables.
A cette heure-ci, je suis en hypoglycémie et ne fait rien de critique, sous peine de devoir refaire
Fred