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

Programmation boucle temps fixe

Le langage MicroPython, l'API machine (I2C, SPI, UART, Pin, etc)
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 à:
  • 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
Post Reply
pmdd
Posts: 3
Joined: Wed 5 Apr 2023 07:49

Programmation boucle temps fixe

Post by pmdd »

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 !
User avatar
Coyotte
Posts: 28
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

Re: Programmation boucle temps fixe

Post by Coyotte »

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
User avatar
fpie
Posts: 36
Joined: Sun 24 May 2020 08:25
Location: Auch, Gers, France, Terre
Contact:

Re: Programmation boucle temps fixe

Post by fpie »

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 :

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)
Fred
User avatar
Coyotte
Posts: 28
Joined: Mon 12 Apr 2021 16:42
Location: Liège (Belgium)

Re: Programmation boucle temps fixe

Post by Coyotte »

Mâtin !
Quel travail d'équipe ! :P
Merci Fred d'avoir concrétisé les choses ( Suis pas encore assez calé en Python pour sortir une solution "on the fly" ;) )

Coyotte
User avatar
fpie
Posts: 36
Joined: Sun 24 May 2020 08:25
Location: Auch, Gers, France, Terre
Contact:

Re: Programmation boucle temps fixe

Post by fpie »

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 :D
Fred
Post Reply