Académique Documents
Professionnel Documents
Culture Documents
Fin de
Temporisation 2. Augmentation de la durée de la temporisation
• Proposer une modification de ce programme afin d’augmenter la durée de la temporisation.
• Exprimer le nombre de cycles machines effectués par ce programme en fonction de n.
Solution N°1 : On utilise un registre 16 bits :
Nombre de cycles = 2 + n * ( 2 + 3 ) + 5
[ 3 ] TEMPO LDX #n * Initialisation de la variable n.
Nombre de cycles = n * ( 5 ) + 7
[ 3 ] CONT DEX * A-1 résultat stocké dans A.
• En déduire la valeur de n pour obtenir une temporisation de 500µs sachant qu’un cycle machine [ 3 ] BNE CONT * Branchement conditionnel: Z=0? si oui
dure 542,5ns.
* branchement à CONT.
La durée de la temporisation est égale au nombre de cycles fois 542,5.10-9s donc :
[ 5 ] RTS * Fin du S/prg TEMPO.
Nombre de cycles = durée / 542,5.10-9
durée / 542,5.10-9 = n * ( 5 ) + 7
• Exprimer le nombre de cycles machines effectués par ce nouveau programme en fonction de n.
n = ( (durée / 542,5.10-9) – 7 ) / ( 5 )
n = 182,9 Nombre de cycles = 3 + n * ( 3 + 3 ) + 5
n ≈ 183 On arrondit le résultat à la valeur entière la plus proche car un Nombre de cycles = n * ( 6 ) + 8
accumulateur ne peut contenir que des nombres entiers • Quelle est la durée maximale de la temporisation obtenue avec ce programme ?
TEMPORISATION LOGICIELLE TD PAGE 2 / 2
Le registre d’index X est un registre 16 bits. La valeur maximale qu’il peut contenir est • Retrouver le programme associé à cet algorigramme. On appellera NBTEMP le nombre de
16 temporisations élémentaires. On utilisera l’accumulateur A pour NBTEMP et le registre X pour
2 –1 = 65535.
n.
Nombre de cycles =n*(6)+8 or Nombre de cycles = durée / 500.10-9 [ 2 ] TEMPO LDAA #NBTEMP * Initialisation du nombre temporisation
-9
durée / 545,5.10 =n*(6)+8 * élémentaire.
-9 [ 3 ] CONT1 LDX #n * Initialisation de la variable n.
durée = ( n * ( 6 ) + 8 ) * 545,5.10
[ 3 ] CONT2 DEX * X-1 résultat stocké dans X
duréeMAX = ( nMAX * ( 6 ) + 8 ) * 545,5.10-9
[ 3 ] BNE CONT2 * Branchement conditionnel: Z=0? si oui
duréeMAX = ( 65535 * ( 6 ) + 8 ) * 545,5.10-9
* branchement à CONT2.
duréeMAX = 213,320765ms [ 2 ] DECA * A-1 résultat stocké dans A
[ 3 ] BNE CONT1 * Z=0? si oui branchement à CONT1
• Calculer la valeur de n pour obtenir les 100ms désirées. [ 5 ] RTS * Fin du S/prg TEMPO
durée / 545,5.10-9 = n * ( 6 ) + 8
• Exprimer le nombre de cycles machines effectués par ce programme en fonction de NBTEMP
n = ( (durée / 545,5.10-9) – 8 ) / ( 6 ) et n.
n = 30720,63
Nombre de cycles = 2 + NBTEMP * [ 3 + n * ( 3 + 3 ) + 2 + 3 ] + 5
n ≈ 30721 un registre ne peut contenir que des nombres entiers
Nombre de cycles = NBTEMP * [ n * ( 6 ) + 8 ] + 7
• Quelle est la durée maximale de la temporisation obtenue avec ce programme ?
II. Temporisation à plusieurs boucles
Pour augmenter la durée des temporisations, on utilise plusieurs boucles imbriquées. Durée = { NBTEMP * [ n * ( 6 ) + 8 ] + 7 } * 500.10-9
A. Algorigramme DuréeMAX = { NBTEMPMAX * [ nMAX * ( 6 ) + 8 ] + 7 } * 500.10-9
Temporisation
DuréeMAX = { 255 * [ 65535 * ( 6 ) + 8 ] + 7 } * 542,5.10-9
Initialisation du nombre de
temporisations élémentaires DuréeMAX = 54,39679887 secondes
Initialiser de n • Déterminer les valeurs de n et NBTEMP pour obtenir une temporisation de 3s.
Méthode :
Exprimer n en fonction de NBTEMP et de la Durée de la temporisation.
Décrémenter n
Calculer n pour des valeurs de NBTEMP. La valeur de NBTEMP à retenir est celle
qui permet d’avoir la valeur de n immédiatement inférieure à 65535.
=0? Le fait d’arrondir à la valeur entière la plus proche introduit une erreur sur la temporisation. Il vaut donc mieux
NON
arrondir la plus grande valeur (n sur 16 bits) ceci introduit une plus faible erreur relative (voir graph2).
OUI
Décrémenter le nombre de Durée / 542,5.10-9 = NBTEMP * [ n * ( 6 ) + 8 ] + 7
temporisations élémentaires
n = { [ ( Durée / 542,5.10-9 ) – 7 ] / NBTEMP – 8 } / 6
NON
=0? Si NBTEMP = 1 on a n = { [ ( 3 / 542,5.10-9 ) – 7 ] / 1 – 8 } / 6 = 921656 non retenue car > 65535
OUI
(…)
Fin
Si NBTEMP = 14 on a n = { [ ( 3 / 500.10-9 ) – 7 ] / 15 – 8 } / 6 = 65831 non retenue car > 65535
Si NBTEMP = 15 on a n = { [ ( 3 / 500.10-9 ) – 7 ] / 30 – 8 } / 6 = 61443 retenue car < 65535