Td temporisation logicielle - informatique industrielle - té

Informatique Industrielle : TD TEMPORISATION LOGICIELLE

Télécharger PDF

Temporisation Logicielle

La temporisation logicielle permet d’attendre un laps de temps entre deux événements : clignotement d’un voyant, attente entre l’affichage de deux messages successifs, etc. Elle permet aussi de laisser le temps à un périphérique d’accomplir une tâche : conversion analogique-numérique et numérique-analogique, exécution d’une instruction d’un afficheur, etc.

Temporisation à une seule boucle

Programme en assembleur 68HC11

Pour réaliser une temporisation logicielle à une seule boucle, on utilise le programme suivant :

TEMPO LDAA #n    ; [2] cycles
CONT  DECA       ; [3] cycles
      BNE CONT   ; [5] cycles si Z=0
      RTS        ; [5] cycles

Calcul du nombre de cycles

Le nombre total de cycles exécutés par ce programme est donné par la formule :

Nombre de cycles = n * (5) + 7

Calcul de la valeur de n pour une temporisation de 500 µs

Sachant qu’un cycle machine dure 542,5 ns, on déduit la valeur de n pour obtenir une temporisation de 500 µs :

durée / 542,5.10^-9 = n * (5) + 7
n = ((durée / 542,5.10^-9) – 7) / 5
n ≈ 183

Limites du programme

L’accumulateur A, limité à 8 bits, ne peut contenir que des valeurs maximales de 255. Ainsi, la durée maximale de temporisation avec ce programme est :

duréeMAX = (255 * 5 + 7) * 542,5.10^-9
duréeMAX = 695,485 µs

Exemple : Temporisation de 100 ms

Pour obtenir une temporisation de 100 ms, la valeur de n serait :

n = ((100.10^-3 / 542,5.10^-9) – 7) / 5
n ≈ 36865

Cette valeur dépasse la capacité de l’accumulateur A, qui ne peut contenir que des entiers jusqu’à 255.

Augmentation de la durée de la temporisation

Solution avec un registre 16 bits

Pour augmenter la durée, on utilise le registre d’index X, qui est un registre 16 bits. Voici le programme modifié :

TEMPO LDX #n    ; [3] cycles
CONT  DEX        ; [3] cycles
      BNE CONT   ; [5] cycles si Z=0
      RTS        ; [5] cycles

Calcul du nombre de cycles avec un registre 16 bits

Le nombre total de cycles exécutés par ce programme est donné par la formule :

Nombre de cycles = n * (6) + 8

Durée maximale avec un registre 16 bits

La durée maximale de temporisation obtenue avec ce programme est :

duréeMAX = (65535 * 6 + 8) * 542,5.10^-9
duréeMAX = 213,320765 ms

Calcul de n pour une temporisation de 100 ms

Pour obtenir une temporisation de 100 ms avec un registre 16 bits, la valeur de n est :

n = ((100.10^-3 / 542,5.10^-9) – 8) / 6
n ≈ 30721

Temporisation à plusieurs boucles

Programme en assembleur 68HC11 avec boucles imbriquées

Pour augmenter davantage la durée, on utilise plusieurs boucles imbriquées. Voici le programme associé :

TEMPO LDAA #NBTEMP   ; [2] cycles
CONT1 LDX #n        ; [3] cycles
CONT2 DEX          ; [3] cycles
      BNE CONT2    ; [5] cycles si Z=0
      DECA         ; [2] cycles
      BNE CONT1    ; [3] cycles si Z=0
      RTS          ; [5] cycles

Calcul du nombre de cycles avec plusieurs boucles

Le nombre total de cycles exécutés par ce programme est donné par la formule :

Nombre de cycles = NBTEMP * [n * (6) + 8] + 7

Durée maximale avec plusieurs boucles

La durée maximale de temporisation obtenue avec ce programme est :

duréeMAX = {255 * [65535 * (6) + 8] + 7} * 542,5.10^-9
duréeMAX = 54,39679887 secondes

Calcul des valeurs de n et NBTEMP pour une temporisation de 3 secondes

Pour obtenir une temporisation de 3 secondes, on choisit la valeur de NBTEMP qui permet d’avoir la valeur de n immédiatement inférieure à 65535. Voici un exemple avec NBTEMP = 15 :

n = {[(3 / 542,5.10^-9) – 7] / 15 – 8} / 6
n ≈ 61443

FAQ

1. Pourquoi arrondir à la valeur entière la plus proche pour n ?

Un accumulateur ou un registre ne peut contenir que des nombres entiers. L’arrondi permet de s’assurer que la temporisation calculée est la plus précise possible en utilisant une valeur entière valide.

2. Quels sont les avantages d’utiliser plusieurs boucles imbriquées ?

Les boucles imbriquées permettent d’obtenir des durées de temporisation beaucoup plus longues, en combinant plusieurs registres (8 bits et 16 bits), tout en gardant une précision acceptable.

3. Comment calculer la durée exacte d’une temporisation logicielle ?

La durée exacte se calcule en multipliant le nombre total de cycles par la durée d’un cycle machine (542,5 ns). Il est important de vérifier que les valeurs de n et NBTEMP restent dans les limites des registres utilisés.

Cela peut vous intéresser :

Partagez vos remarques, questions , propositions d'amélioration ou d'autres cours à ajouter dans notre site

Enregistrer un commentaire (0)
Plus récente Plus ancienne