embarqué en C Retard dans une boucle while continue

W

winses

Guest
Salut à tous

J'ai besoin d'une aide. Je suis sur la voie à la conception d'un nouveau produit basé sur LCD.The code que j'utilise est de C.

Maintenant, j'ai un tout continu (1) de boucle pour une opération RTC dans le code principal.

Mais j'ai besoin d'un retard de 2 à 3 secondes dans la boucle while (1) pour certains operation.I buzzer liées besoin de faire cela sans affecter le fonctionnement du CCF.

Quelqu'un peut-il m'aider s'il vous plaît .. comment puis-je surmonter question Tho.

merci
winses

 
Ma première pensée serait: pourquoi pas le code du CCF qui fonctionnerait sur un timer interrupt?

Toutefois, en supposant que vous avez une bonne raison pour faire vos mises à jour CCF en dehors des interruptions, alors la façon dont je l'approche est d'inclure un temporisateur logiciel dans la boucle du CCF, afin que lorsque vous avez besoin de générer le retard 2-3 secondes , au lieu d'arrêter la boucle pour tout ce temps, vous courez le temporisateur logiciel en parallèle avec le CCF et, seulement lorsque ce compte à rebours a atteint la valeur requise, alors souhaitez-vous effectuer toute action que vous devez effectuer après ce délai.

Pseudo-exemple de code:
Code:unsigned char | int | delay_timeout long; / / variable de type de choix basée sur la valeur de délai d'attente maximale requise ...delay_timeout = 0;

pendant que

(

do_rtc_stuff ();/ / Lorsque vous avez besoin de générer le retard buzzer, ensemble delay_timeout à la non appropriées valeur différente de zéro ...

if (retard est requis)

(

delay_timeout = [nombre de tiques dans le délai nécessaire];

)if (delay_timeout)

(

if (- delay_timeout == 0)

(

do_buzzer_stuff (); / / cette fonction / bloc de code a besoin d'exécuter le plus rapidement possible ...

)

)

)

 

Welcome to EDABoard.com

Sponsor

Back
Top