Td temporisation logicielle - informatique industrielle - té

Informatique Industrielle : TD TEMPORISATION LOGICIELLE

Télécharger PDF

Obtenir le pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur!

Vous souhaitez maîtriser les microprocesseurs et Microcontrôleurs ? Ne cherchez plus, nous avons le pack parfait pour vous.

pack complet des cours, TDs, TPs et projets sur Informatique Industrielle : Microprocesseur & Microcontrôleur

Accédez à une collection complète des supports de cours, des travaux dirigés (TD) corrigés, des travaux pratiques (TP) et des projets.

Obtenir le pack maintenant

TEMPORISATION LOGICIELLE TD PAGE 1 / 2 TD TEMPORISATI

ON LOGICIELLE

La temporisation logicielle permet d’attendre un lapse de temps entre deux événements : clignotement d’un voyant, at

tente entre l’affichage de deux messages successifs, etc. E

lle 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. Pour r

éaliser une temporisation logicielle il suffit de répéter n fo

is un certain nombre d’instructions. I.

Temporisation à une seule boucle A.

Algorigramme et programme en assembleur 68HC11 •

Ecrire le programme associé à l’algorigramme ci-dessus. Pour la variable n, on utilisera l’accumulateur A. Faire apparaître le nombre de cycles de chaque instruction. [ 2 ]TEMPO LDAA#n [ 2 ]CONT DECA

[ 3 ]BNE CONT

[ 5 ]

RTS •

Exprimer le nombre de cycles machines effe

ctués par ce programme en fonction de n. Nombre de cycles = 2 + n * ( 2 + 3 ) + 5 Nombre de cycles = n * ( 5 ) + 7 •

En déduire la valeur de n pour obtenir une te

mporisation de 500μs sachant qu’un cycle machine dure 542,5ns. La durée de la te

mporisation est égale au nombr

e de cycles fois 542,5.10-9 s donc : Nombre de cycles = durée / 542,5.10-9 durée/ 542,5.10

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

≈ 183 On arrondit le résultat à la vale

ur entière la plus proche car un accumulateur ne peut contenir que des nombres entiers a)

Limite de ce programme• Quelle est la valeur de n pour ob

tenir une temporisation de 100ms ? n = ( (durée / 542,5.10-9 ) – 7 ) / ( 5 )n =

36864,96n ≈ 36865 •

L’accumulateur A peut-il c

ontenir une telle valeur ? Non car la valeur maximale cont

enue par l’accumulateur A est 2

8 –1 = 255. •

Quelle est la durée maximale de la temporis

ation obtenue avec ce programme sachant que l’accumulateur A n’a que 8 bits ?durée /

545,5.10

-9 = n * ( 5 ) + 7durée = ( n * ( 5 ) + 7 ) * 545,5.10-9 duréeMAX = ( n

MAX * ( 5 ) + 7 ) * 545,5.10-9 duréeMAX = ( 255 * ( 5 ) + 7 ) * 545,5.10-9 duréeMAX = 695,485μs 2.

Augmentation de la durée de la temporisation• Proposer une modification de ce programme afin d’augmenter la durée de la temporisation. Solution N°1 : On utilise un registre 16 bits : [ 3 ] TEMPOLDX #n

* Initialisation de la variable n. [ 3 ] CONTDEX * A-1 résultat stocké dans A. [ 3 ]BNE CONT * Branchement conditionnel: Z=0? si oui * branchement à CONT. [ 5 ]RTS * Fin du S/prg TEMPO. •

Exprimer le nombre de cycles machines effectués par ce nouveau programme en fonction de n. Nombre de cycles = 3 + n * ( 3 + 3 ) + 5 Nombre de cycles = n * ( 6 ) + 8 •

Quelle est la durée maximale de la te

mporisation obtenue avec ce programme ? Début de Temporisation Initialisation de la variable n

n = 0 ? Décrémentation de n Fin de Temp orisation oui non TEMPORISATION LOGICIELLE TD PAGE 2 / 2 Le registre d’index X est un registre 16 bits. La valeur maximale qu’il peut contenir est 2

16 –1 = 65535. Nombre de cycles = n * ( 6 ) + 8 or Nombre de cycles = durée / 500.10-9 durée/ 545,5.10

-9 = n * ( 6 ) + 8durée = ( n * ( 6 ) + 8 ) * 545,5.10-9 duréeMAX = ( n

MAX * ( 6 ) + 8 ) * 545,5.10-9 duréeMAX = ( 65535 * ( 6 ) + 8 ) * 545,5.10-9 duréeMAX = 213,320765ms •

Calculer la valeur de n pour obtenir les 100ms désirées.durée /

545,5.10

-9 = n * ( 6 ) + 8 n = ( (durée / 545,5.10-9 ) – 8 ) / ( 6 )n =

30720,63n ≈ 30721 un registre ne peut contenir que des nombres entiers II.

Temporisation à plusieurs boucles Pour augmenter la durée des temporisati

ons, on utilise plusieurs boucles imbriquées. A.

Algorigramme •

Retrouver le programme associé à cet algorig

ramme. On appellera NBTEMP le nombre de temporisations élémentaires. On utilisera l’accumulateur A pour NBTEMP et le registre X pour n. [ 2 ] TEMPO LDAA #NBTEMP

* Initialisation du nombre temporisation * élémentaire. [ 3 ] CONT1 LDX#n * Initialisation de la variable n. [ 3 ] CONT2 DEX

* X-1 résultat stocké dans X [ 3 ]BNE CONT2

* Branchement conditionnel: Z=0? si oui * branchement à CONT2. [ 2 ]DECA * A-1 résultat stocké dans A [ 3 ]BNE CONT1

* Z=0? si oui branchement à CONT1 [ 5 ]RTS * Fin du S/prg TEMPO •

Exprimer le nombre de cycles machines effe

ctués par ce programme en fonction de NBTEMP et n. Nombre de cycles = 2 + NBTEMP * [ 3 + n * ( 3 + 3 ) + 2 + 3 ] + 5 Nombre de cycles = NBTEMP * [ n * ( 6 ) + 8 ] + 7 •

Quelle est la durée maximale de la te

mporisation obtenue avec ce programme ? Durée = { NBTEMP * [ n * ( 6 ) + 8 ] + 7 } * 500.10-9 DuréeMAX = { NBTEMP

MAX * [ n

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

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. ƒ

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. Le fait d’arrondir à la valeur entière la plus proche intr

oduit une erreur sur la temporisation. Il vaut donc mieux arrondir la plus grande valeur (n sur 16 bits) ceci in

troduit une plus faible erreur relative (voir graph2). Durée / 542,5.10

-9 = NBTEMP * [ n * ( 6 ) + 8 ] + 7 n

= { [ ( Durée / 542,5.10

-9 ) – 7 ] / NBTEMP – 8 } / 6 Si NBTEMP = 1

on a n = { [ ( 3 / 542,5.10

-9 ) – 7 ] / 1 – 8 } / 6 = 921656 non retenue car > 65535 ( ... ) 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 OUIOUI Décrémenter n Temporisation Décrémenter le nombre de temporisations élémentaires = 0 ? NON

= 0 ? NON Initialisation du nombre de temporisations élémentaires Initialiser de n Fin

Partagez vos remarques, questions ou propositions d'amélioration ici...

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

Publicité 1

Publicité 2