carrefo4 TP HC11

12

Click here to load reader

Transcript of carrefo4 TP HC11

Page 1: carrefo4 TP HC11

I) Présentation:

Actuellement, la densité de la circulation dans toutes les grandes villes nécessite de plus en plus unegestion informatisée des carrefours.

Ainsi de nombreux carrefours comportent des dispositifs de détection (radars ou détection au solpar boucle d'induction). La commande des feux tricolores est alors réalisée par un systèmemicroprogrammé propre à chaque carrefour, et la durée des feux s'ajuste automatiquement afin deréduire les temps d'attente en fonction de la présence ou non de véhicules. Chaque système microest en communication avec un système de gestion permettant la visualisation des flux instantanés,et la transmission de nouvelles consignes aux carrefours afin d'améliorer la circulation en cas defortes densité.

Ces systèmes permettent à l'heure actuelle, l'étude de nouvelles méthodes de gestion des feux, etl'élaboration de programmes dont la séquence varie en fonction des heures de la journée (Ex:heures de pointe), mais aussi en fonction de critères imprévisibles (Ex: accidents). Ces programmesfont de plus en plus appel à des techniques proches de l'intelligence artificielle (Ex: Logique floue,méthode de contrôle très utilisée dans les grands ascenseurs).

On se propose d'étudier la fonction traitement microprogrammé et commande des feux tricoloresde ces dispositifs, en simulation sur UMPS. On utilisera comme ressource dans UMPS l'équivalentd'une carte d'interface appelée carte carrefour, matérialisant les feux tricolores sur une intersectionà 2 voies (pour gagner du temps on configurera les ressources, mais dès l'ouverture de la fenêtreressource, on utilisera directement le fichier "CARREFO1.ENV") .

La carte de commande comporte un interrupteur à trois positions accessible seulement par despersonnes habilitées (Personnel de maintenance et policiers), permettant d'imposer soit unfonctionnement automatique sur une séquence de nuit (Clignotement des feux oranges), soit un

Mr COTTETCARREFO3

Voie 2

Voie 1

V 1

O 1

R 1

V 2O 2

R 2

Gestion microprogramméed'un carrefour

CARREFO4 Page N°1

Gestion microprogrammée de la circulation

Sytème de gestion

microprogrammé

- Centralisation des données- Visualisation des flux- Elaboration des nouvellesconsignes

Carrefour N°1

détectioncaptage

Traitementmicroprogrammé

Commandedes feuxtricolores

Carrefour N°2

Carrefour N°(n-1)

Carrefour N°n

Carrefour N°3

communication

communication

Page 2: carrefo4 TP HC11

fonctionnement manuel en pas à pas, soit le fonctionnement automatique sur séquence de jour(Passage périodique du vert au jaune puis rouge etc...). Nous ajouterons en temps voulu uneressource permettant de simuler cet interrupteur.

Le dessin du carrefour est représenté ci contre.

Les feux sont matérialisés par des diodesélectroluminescentes de couleurs rouges, jaunes etvertes.

II) Analyse structurelle:

1) En étudiant l'en-tête du programme fourni,retrouvez les connections matérielles entre lemicrocontrôleur 68HC11 et l'extérieur. Complétezla feuille réponse N°1.

Remarque : On utilisera les abréviations suivantes V1, O1, R1 et V2, O2, R2 pour lescommandes des lampes du carrefour. V1, O1, R1 et V2, O2, R2 correspondront respectivementau vert, orange et rouge des voies 1 et 2.

On appellera P le bouton poussoir pour le fonctionnement manuel, et N ainsi que J les sorties del'interrupteur à 3 positions permettant d'assurer le fonctionnement dans les modes Nuit, Manuel etJour. La position centrale correspondra au fonctionnement manuel, autorisant un fonctionnementdu carrefour en mode pas à pas à l'aide de P.

Précisez pour le bouton et l'interrupteur, quels sont les états logiques sur les brochescorrespondantes du 68HC11 pour chaque position (réponse sur la feuille rep N°1).

2) Indiquez quel doit être le contenu du registre DDRC de direction du port C, après l'initialisationdu port, sachant qu'on veut pouvoir lire les états du bouton Jour / Manuel / Nuit.

Exemple: Si DDRC.bit 5 = 1 alors le bit 5 du port C sera en sortie.

Inversement, si DDRC.bit 5 = 0 (DDRC5=0) alors PortC.bit 5 (PC5) du port sera en entrée.

DDRC

III) Analyse et synthèse d'un programme et d'un ordinogramme:

Rem: Tous les programmes écrits en assembleur seront prévus en utilisant des étiquettes à la placedes constantes numériques (ex: DDRC, PortC, PortB ....), et non $1007, $1003...

1) Complétez l'organigramme et le programme en assembleur (CAREFO21.ASM), permettant lagestion du carrefour selon une séquence programmée dans une table de donnée appelée SEQ1?correspondant à la séquence de jour (Voir page suivante).

Rem: On ne se préoccupera pas de la position des boutons dans ce programme (ceux-ci pourrontdonc être dans une position quelconque), on devra néanmoins éviter toute détérioration lié à uncourt-circuit d'une sortie avec une alimentation (Il est préférable de mettre en entrée, une brochenon utilisée).

La séquence sera organisée de la façon suivante: (chaque étape sera définie par deux octetssuccessifs. Le premier indiquera l'allumage des différentes lampes des feux. Le deuxième indiquerala durée de l'étape (en seconde)). Le programme comportera donc une temporisation de référence(durée = 1s). On devra calculer le ou les nombres (valeur d'initialisation du ou des compteurs)pour obtenir la tempo de 1s en prenant les tableaux d'instructions du microprocesseur utilisé.

CARREFO4 Page N°2

Voie 2

Voie 1

V1

O1

R1

V2O2

R2

Dessin du carrefour

Page 3: carrefo4 TP HC11

La fin de la séquence sera signalée par un octet nul (le programme reprendra alors la séquence dèsla première étape).

2) Commentez les séquences suivantes sur la feuille réponse N°1, en indiquant pour chaque étape,l'état des feux pour les voies 1 et 2 et la durée. (Rem: les valeurs sont en héxadécimal).

SEQ1 : 24 02 0C 20 14 03 24 02 21 20 22 03 00

SEQ2 : 12 01 40 01 00

Expliquez le rôle des valeurs $24 dans la séquence 1.

Expliquez le rôle de la valeur $40 dans la séquence 2. N'y a t'il pas de problème avec

l'interrupteur? (Proposez deux autres valeurs, à la place de $40 qui assurent la même séquence). IV) Synthèse d'un programme avec gestion (Jour / Nuit):

1) Pour permettre le déroulement des 2 séquences (jour ou nuit), on veut modifier le programmeconformément à l'algorithme suivant.

a) Lecture du bouton (jour/manuel/nuit).

b) Si le bouton est sur: "Nuit", alors positionnement sur la séquence de nuit, sinonpositionnement sur la séquence de jour.

c) Déroulement de la séquence complète (un seul sous programme: déroulement séquence(SEQEN) devra permettre l'exécution des deux séquences).

d) Retour au: a).

Le bouton poussoir ne sera pas utilisé. La position manuelle devra être identique à la position jour.

Rem: Il faut attendre la fin de la séquence pour passer à l'autre. Interdiction de pouvoir passer àtout moment de l'une à l'autre. (problème de sécurité routière).

Commentez le passage de la SEQ1 à la SEQ2 et réciproquement. La sécurité est elle assurée? V) Analyse et synthèse d'un programme avec gestion Jour / Nuit et Manuel (Pas à pas):

REM: la position manuelle donne la séquence de jour uniquement, mais le passage d'une étape à lasuivante se fait par appui sur le bouton poussoir P (attention la tempo relative à chaque étape seraexécutée: pour éviter que l'on puisse provoquer des changements rapides (sécurité)).

Le bouton poussoir P provoquera une interruption /IRQ du HC11.

1) On demande alors de modifier l'organigramme et le programme pour tenir compte de la positionmanuelle et du bouton poussoir, avec gestion de l'interruption /IRQ sur front descendant.

CARREFO4 Page N°3

Page 4: carrefo4 TP HC11

III.1) Programme de gestion du carrefour . (fichier CAREFO21.ASM)

****************************************************** Fichier CAREFO21.ASM Mr COTTET* (gestion du carrefour PROGRAMME JOUR) ** pour UMPS (ou 68HC811E2 ou E9)** (adr $F000 à $FFFF), RAM de $0000 à $00FF (interne * au 68HC11)* Définition de la partie opérative* PortC: Pc7 Pc6 Pc5 Pc4 Pc3 Pc2 Pc1 Pc0* J N R2 O2 V2 R1 O1 V1* J et N correspondent aux informations de l'inter 3 positions* (Jour / Manuel / Nuit)* J N = 0 1 indique position jour (J et N actifs à l'état bas)* J N = 1 1 indique position manuelle* J N = 1 0 indique la position nuit* Les lampes représentatives des feux R2, O2, V2, R1, O1, V1* sont actives à l'état haut* Pour la suite /IRQ sera utilisé pour le mode pas à pas*********** définition des constantes et variables *****

**************** CONSTANTES ************PortC equ $1003 ;Port C*DDRC equ $1007 ;Direction du port CNT1 equ 1 ; Valeurs réelles à voirNT2 equ 4000 ; Valeurs pour simulation NT1=1, NT2=4000

************** PROGRAMME PRINCIPAL *********************

ORG $F000 ; programme en EPROM

DEBUT Lds #$00FF ;Pile à la fin de la RAM LDAA STAA DDRC ;

JOUR LDX #SEQ1 LDAA ;Prend donnée pointée N1 SUIT1 STAA PortC ;COMMANDE DES DELS INX LDAB ;LECTURE DE LA DUREE N2 PSHX ;sauvegarde de X car utilisé dans TEMPO JSR TEMPO ;rappel du pointeur de donnée X INX LDAA $0,X B SUIT1 ;FIN DE SEQUENCE SI OCTET NUL B JOUR;**********************************************************TEMPO LDX #NT1 ;TEMPO DE DUREE (B = N2 secondes)Bouc1 LDY #NT2Bouc2 DEY CPY #$0000 B Bouc2 DEX CPX #$0000 B Bouc1 DECB B TEMPO RTS;***********************************************************SEQ1 fdb $2402 ;SEQUENCE DE JOUR fdb $0C20 fdb fdb fdb fdb $2203 fcb

;****************** vecteurs interruptions **************RESET ORG FDB end

Début

Initialisations(Pile, Ports)

Init pointeur

de donnée

Prendre donnéepointée N1

incrémente

pointeur

Prendre donnée

pointée N2

incrémente

pointeur

Prendre donnée

pointée N1

N1<>0

?

oui

non

CARREFO4 Page N°4

Page 5: carrefo4 TP HC11

- Feuille RéPONSE N°1:Feuille RéPONSE N°1: Nom: _

II.1) Analyse structurelle.

1.) Tableau N°1:

Labels utilisés dans le sujet par rapportaux broches de Port du 68HC11:

Etats logiques actifs:

Etats logiques sur les broches du HC11.

III.2) Analyse et synthèse logicielle.

Valeur à envoyer au port C.

Analyse de la séquence "seq1"

Explication des valeurs 24h: N° étape Valeuraffichée

Voie 1 Voie 2 temps

1 24h Rouge Rouge 2s

2

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0/IRQ

Position

Jour Nuit Manuel

PC7

PC6

BP

/IRQ

Relâché Appuyé

PC7 PC6 PC5 PC4 PC3 PC2 PC1 PC0

CARREFO4 Page N°5

Page 6: carrefo4 TP HC11

LE CARREFOUR (CORRIGÉ).

Algorithme de gestion du carrefour (séquence de Jour uniquement).

1- Initialisation (pile et direction des ports).2- Initialisation du pointeur des données au début de la table (séquence jour).3- Prendre la donnée pointée (valeur à afficher = N1).4- Sortir donnée sur partie opérative (allumage des feux).5- Incrémenter le pointeur.6- Prendre nouvelle donnée pointée (valeur de la tempo = N2).7- Executer temporisation de N2 secondes.8- Incrémenter le pointeur.9- Prendre la donnée pointée (valeur à afficher = N1).10- Si N1=0 alors retour à l'étape 2.11- Sinon retour à l'étape 4.

1) Traduction sous forme d'organigramme.

(Voir Programme et organigramme page suivante).

Calcul de la temporisation de 1s.

Méthode des boucles imbriquées, pour les temporisations longues: Voir organigramme ci contre (ou ajout d'instructions inutiles comme NOP pour un petit ajustement).

Les tableaux d'instructions et/ou le listing après assemblage donnent le nombre de cycle de chaque instruction.

[ 3 ] TEMPO LDX #NT1 ;TEMPO DE DUREE (B secondes)[ 4 ] Bouc1 LDY #NT2[ 4 ] Bouc2 DEY[ 5 ] CPY #$0000[ 3 ] BNE Bouc2[ 3 ] DEX[ 4 ] CPX #$0000[ 3 ] BNE Bouc1[ 2 ] DECB[ 3 ] BNE TEMPO[ 5 ] RTS

Le 68HC11 provoque une division par 4 de la fréquence du quartz. Le temps de cycle est donc ici: Tcycle= 1/(Fcycle) = 4*(1/FQuartz) = 0.5µS (avec FQuartz= 8MHz).

On en déduit alors le nombre de cycles total en fonction des nombres N1, N2 et du nombrecontenu dans le registre B (Nb), puis le temps total correspondant:

Soit: Ncycle = (3 + {4+(4+5+3)*NT2+3+4+3}*NT1 + 2+3)*Nb + 5

Or pour Nb=1 on veut Tcycle =1 seconde.

1s = Ncycle * 0.5*10-6 s = (13 + {12*NT2+14}*NT1 )* 0.5*10-6

soit (13 + {12*NT2+14}*NT1 ) = 2000000 (>65535) Ce nombre ne peut donc pas être codé sur16 bits.

Si on prend NT2 = 4, il faut NT1= 32257 soit $7E01.

C1=0

?

oui

non

Temporisation

InitialisationsCompteur C1

InitialisationsCompteur C2

Décrémente C2

C2=0

?oui

non

Décrémente C1

FIN

CARREFO4 Page N°6

Page 7: carrefo4 TP HC11

III.1) Programme de gestion du carrefour . (fichier CAREFO21.ASM)****************************************************** Fichier CAREFO21.ASM Mr COTTET* (gestion du carrefour PROGRAMME JOUR) ** pour UMPS (ou 68HC811E2 ou E9)** (adr $F000 à $FFFF), RAM de $0000 à $00FF (interne * au 68HC11)* Définition de la partie opérative* PortC: Pc7 Pc6 Pc5 Pc4 Pc3 Pc2 Pc1 Pc0* J N R2 O2 V2 R1 O1 V1* J et N correspondent aux informations de l'inter 3 positions* (Jour / Manuel / Nuit)* J N = 0 1 indique position jour (J et N actifs à l'état bas)* J N = 1 1 indique position manuelle* J N = 1 0 indique la position nuit* Les lampes représentatives des feux R2, O2, V2, R1, O1, V1* sont actives à l'état haut* Pour la suite /IRQ sera utilisé pour le mode pas à pas*********** définition des constantes et variables *****

**************** CONSTANTES ************PortC equ $1003 ;Port C*DDRC equ $1007 ;Direction du port CNT1 equ 1 ; Valeurs réelles NT1=4, NT2=$7E01NT2 equ 4000 ; Valeurs pour simulation NT1=1, NT2=4000

************** PROGRAMME PRINCIPAL *********************

ORG $F000 ; programme en EPROM

DEBUT Lds #$00FF ;Pile à la fin de la RAM LDAA #$3F ;PC7 et PC6 EN ENTREE STAA DDRC ;

JOUR LDX #SEQ1 LDAA $0,X SUIT1 STAA PortC ;COMMANDE DES DELS INX LDAB $0,X ;LECTURE DE LA DUREE PSHX ;sauvegarde de X car utilisé dans TEMPO JSR TEMPO PULX ;rappel du pointeur de donnée INX LDAA $0,X BNE SUIT1 ;FIN DE SEQUENCE SI OCTET NUL BRA JOUR

TEMPO LDX #NT1 ;TEMPO DE DUREE (B secondes)Bouc1 LDY #NT2Bouc2 DEY CPY #$0000 BNE Bouc2 DEX CPX #$0000 BNE Bouc1 DECB BNE TEMPO RTS

SEQ1 fdb $2402 ;SEQUENCE DE JOUR fdb $0C20 fdb $1403 fdb $2402 fdb $2120 fdb $2203 fcb $00

;****************** vecteurs interruptions **************RESET ORG $FFFE FDB DEBUT end

Début

Initialisations(Pile, Ports)

Init pointeur

de donnée

Prendre donnéepointée N1

sortie (affichage)de la donnée N1

incrémente

pointeur

Prendre donnée

pointée N2

Temporisation

N2 secondes

incrémente

pointeur

Prendre donnée

pointée N1

N1<>0

?

oui

non

CARREFO4 Page N°7

Page 8: carrefo4 TP HC11

6) Programme de gestion du carrefour avec séquence de jour et séquence de nuit.

******************************************************** Programme: carefo22.asm Auteur: Mr COTTET* Lycée: Maurice GENEVOIX INGRE * (gestion du carrefour PROGRAMME JOUR/NUIT)* attention le bouton jour/nuit est indispensable.* version 68HC811E2 EPROM (adr $F800 … $FFFF)* RAM de $0000 … $00FF (interne au 68HC11) ** Définition de la partie opérative* PortC: Pc7 Pc6 Pc5 Pc4 Pc3 Pc2 Pc1 Pc0* J N R2 O2 V2 R1 O1 V1* J et N correspondent aux information de l'interrupteur 3 positions* (Jour / Manuel / Nuit)* J N = 0 1 indique position jour (J et N sont actifs à l'état bas)* J N = 1 1 indique position manuelle* J N = 1 0 indique la position nuit* Les lampes représentatives des feux R2, O2, V2, R1, O1, V1* sont actives à l'état haut* /IRQ est utilisé pour le mode pas à pas (bouton poussoir)************ définition des constantes et variables *****

TREF equ $1000 ; DUREE DE REFERENCE (pour la simulation)

ORG $0000 ; **** VARIABLES ************REF rmb 2

************** PROGRAMME PRINCIPAL *********************

ORG $F800 ; Programme en EEPROM 68HC811E2

DEBUT Lds #$00FF LDAA #$3F ; PC7 et PC6 EN ENTREE STAA DDRC ; LES AUTRES EN SORTIEDEPAR LDX #TREF STX REF ; durée de référence en RAM pour modif JSR TEST ; Test du bouton CMPA #$80 BEQ NUIT ; Séquence de nuitJOUR LDX #SEQ1 ; Séquence de Jour JSR SEQEN BRA DEPAR

;*******************************************************NUIT LDX #SEQ2 JSR SEQEN BRA DEPAR

;*************** Sous Programmes ***********************TEST LDAA PortC ;TEST DE LA POSITION DU BOUTON ANDA #$C0 ; à 3 positions (Jour/Manuel/Nuit) RTS

;*******************************************************SEQEN LDAA $0,X ;PROGRAMME SEQUENCEURSUIT1 STAA PortC ;COMMANDE DES DELS INX LDAB $0,X ;LECTURE DE LA DUREE PSHX JSR TEMPO PULXSUIT2 INX LDAA $0,X BNE SUIT1 ;FIN DE SEQUENCE SI OCTET NUL RTS

CARREFO4 Page N°8

Page 9: carrefo4 TP HC11

;*******************************************************TEMPO LDX REF ;TEMPO DE DUREE B*REFATEN DEX BNE ATEN DECB BNE TEMPO RTS

;*******************************************************SEQ1 fdb $2402 ;SEQUENCE DE JOUR fdb $0C20 fdb $1403 fdb $2402 fdb $2120 fdb $2203 fcb $00

;*******************************************************SEQ2 fdb $1201 ;SEQUENCE DE NUIT fdb $4001 fcb $00

****************** vecteurs interruptions **************RESET ORG $FFFE ;* Vecteur RESET FDB DEBUT end

CARREFO4 Page N°9

Page 10: carrefo4 TP HC11

ORGANIGRAMMES DU CARREFOUR

1) programme principal

début

initialisation

du PIA

lecture bouton

jour / nuit

positionnement

sur séquence jour

positionnement

sur séquence nuit

oui

non

prend donnée

état des feux

commande

feux

lit bouton

jour/manuel/nuit

manuel

incrémente

pointeur données

prend donnée

durée étape

temporisation

T=durée lue

fin desdonnées

fin séquence

non

oui

non

oui

séquence

déroulement

déroulement

séquence

appui? non

oui

Nuit

Indicateur

SP interruption IRQ

positionneindicateur d'appui

FIN SP IRQ

Raz indicateur d'appui

CARREFO4 Page N°10

Page 11: carrefo4 TP HC11

III) Programme de gestion du carrefour avec séquence de jour et séquence de nuit.

********************************************************* Programme: Carefo23.asm* (gestion du carrefour PROGRAMME JOUR/Manuel/NUIT)* attention le bouton jour/nuit est indispensable.* version 68HC811E2 EPROM (adr $F800 … $FFFF)* RAM de $0000 … $00FF (interne au 68HC11) ** Définition de la partie opérative* PortC: Pc7 Pc6 Pc5 Pc4 Pc3 Pc2 Pc1 Pc0* J N R2 O2 V2 R1 O1 V1* J et N correspondent aux information de l'interrupteur 3 positions* (Jour / Manuel / Nuit)* J N = 0 1 indique position jour (J et N sont actifs à l'état bas)* J N = 1 1 indique position manuelle* J N = 1 0 indique la position nuit* Les lampes représentatives des feux R2, O2, V2, R1, O1, V1* sont actives à l'état haut* /IRQ est utilisé pour le mode pas à pas (bouton poussoir)************ définition des constantes et variables ****** OPTION equ $1039 ; ADPU, CSEL,IRQE,DLY,CME,0,CR1,CR0* valeur par défaut $00* IRQE =1 => /IRQ déclenchée sur frontTREF equ $1000 ; DUREE DE REFERENCE (pour la simulation)

ORG $0000 ; **** VARIABLES ************REF rmb 2INDIC Rmb 1 ; Indicateur d'appui sur le bouton poussoir

************** PROGRAMME PRINCIPAL *********************

ORG $F800 ; Programme en EEPROM 68HC811E2

DEBUT Lds #$00FF LDAA #$3F ; PC7 et PC6 EN ENTREE STAA DDRC ; LES AUTRES EN SORTIE LDX #TREF STX REF ; durée de référence en RAM pour modif LDAA #$20 STAA OPTION ; /IRQ déclenchée sur front descendant CLR INDIC ; initialisation indicateur d'appui sur le poussoir CLI ; autorise les interruptions

DEPAR LDX #SEQ1 ; Prépositionnement sur séquence jour LDAA PortC ; TEST DE LA POSITION DU BOUTON ANDA #$C0 ; à 3 positions (Jour/Manuel/Nuit) CMPA #$80 BNE JOUR ; Séquence de nuit si $80 uniquementNUIT LDX #SEQ2JOUR JSR SEQEN ; Séquence de Jour (automatique ou manuelle) BRA DEPAR

;*************** Sous Programmes ***********************SEQEN LDAA $0,X ;PROGRAMME SEQUENCEURSUIT1 STAA PortC ;COMMANDE DES DELSTEST LDAA PortC ; TEST DE LA POSITION DU BOUTON ANDA #$C0 ; à 3 positions (Jour/Manuel/Nuit) CMPA #$C0 ; pour position Manuelle BEQ MANUEL SUIT2 INX LDAB $0,X ;LECTURE DE LA DUREE PSHX JSR TEMPO PULX INX

CARREFO4 Page N°11

Page 12: carrefo4 TP HC11

LDAA $0,X BNE SUIT1 ;FIN DE SEQUENCE SI OCTET NUL RTS

MANUEL LDAA INDIC CMPA #1 BNE TEST CLR INDIC BRA SUIT2

;*******************************************************TEMPO LDX REF ;TEMPO DE DUREE B*REFATEN DEX BNE ATEN DECB BNE TEMPO RTS

;************* Sous Programme d'interruption IRQ *******SPIRQ LDAA #1 ;sous programme d'interruption IRQ STAA INDIC RTI

;*******************************************************SEQ1 fdb $2402 ;SEQUENCE DE JOUR fdb $0C20 fdb $1403 fdb $2402 fdb $2120 fdb $2203 fcb $00

;*******************************************************SEQ2 fdb $1201 ;SEQUENCE DE NUIT fdb $4001 fcb $00

****************** vecteurs interruptions ************** ORG $FFF2VIRQ FDB SPIRQ ; définition du vecteur d'interruption IRQ ORG $FFFE ; Vecteur RESETRESET FDB DEBUT end

CARREFO4 Page N°12