Vous êtes sur la page 1sur 9

République Algérienne démocratique et populaire

Ministère de l’enseignement supérieur et de la


recherche scientifique

Université Abou Bekr Belkaid Tlemcen

Faculté de Technologie

Département de génie électrique et


électronique
Travaux pratique de Systèmes Embarqués et systèmes
temps réel
Travaux pratiques 2: INITIALISATION ET
CONFIGURATIONS DES PORTS I/0 SUIVANT UN CAHIER
DE CHARGE
Nom : SOUIDI / SENHADJI
Prénom :Youcef / MOHAMMED RYAD
M1 ALL groupe :2
Année universitaire :2022/2023.
Introduction :

Les microcontrôleurs sont des composants synchrones, c’est-à-dire que toutes


les opérations (au niveau du processeur) y sont synchronisées par une horloge
commune appelé horloge système. Dans le cas d’un microcontrôleur, le
nombre de Million d’Instructions Par Seconde (MIPS) exécutées par le
processeur est directement proportionnel à la fréquence d’horloge (Fcy). Ainsi
il est logique de penser que l’idéal est d’utiliser l’horloge la plus élevée
possible (en fréquence) car les performances seront ainsi maximisées. Ce
raisonnement est juste, mais maladroit, car une autre chose qui est
directement proportionnelle à la fréquence d’horloge est la consommation
électrique du composant.

Dans notre TP on a travaillé avec DSPIC33FJ128MC802

Pour la simulation on a utilisé proteus et pour écrire le code de


microcontrôleurs on a utilisé MPLAB X IDE v5.30

Le travail demandé :

Exo01 :

Apres le cahier de charge établi on a développé un programme sur MPLAB X


IDE v5.30 pour avoir le même résultat obtenir

Le programme est comme suit :


Pour la vérification on a testé notre programme sur ISIS de Proteus en

Utilisant le circuit
Interprétation du programme :

Si on appuyé sur la Botton de keyenter la led infoled allume ,si on appuyé


deuxième fois la led infoled étendre et runningled allume et si on appuyé
troisième fois les deux leds étendre

Répondre sur les questions :

a- Configuration des registres non volatile

1- Pourquoi avons-nous choisi la configuration PRI pour le registre FNOSC


Le registre FNOSC est un registre de mécanisme d’horloge et on a utilisé
PRI (primery oscillateur ) car on a utilisé directement le quartz comme il
est montré sur la figure du proteus
2- Pourquoi doit-on choisir la configuration HS pour le registre POSCMD
On a choisi la configuration HS pour le registre POSCMD car on a travaillé
avec un quartz de 10MHz
3- Pourquoi avons-nous choisi la configuration OFF pour le registre
FWDTEN
On a choisi la configuration OFF pour le registre FWDTEN car tous est
active ,on n’est pas besoin d’un mode vielle

b- Configurations et déclarations

- Compléter les déclarations des différentes constantes :


#define RunningLED _RB15
#define InfoLED _RB13
#define KeyEnter _RB2
On a choisi RB15 et RB13 car ils contient des modules on a pas besoin
- Compléter la configuration et l’initialisation des différents SFRs suivants
:
AD1PCFGL = 0x 0xFFFC ; // AD1PCFGL=0b1111 1111 1111 1100

TRISA=0xFFFF ;// Tous les bits du registre sont configurées en Input

PORTA=0x0000 ;// Initialisation du PORTA

TRISB=0x5FFF ;// Quelques bits sont configurées en Input et Output

PORTB=0x0000 ;//Initialisation du PORTB

c- Validation des résultats

1-on a développé notre programme en réel et en proteus , on n’a pas vu une


différence entre les deux ,ça nous confirme que proteus est un logiciel de
simulation en virtuelle qui nous donne de même résultat

2- la conclusion

On conclure que le proteus est un logiciel de simulation pour les cartes de


développement et pour le code on modifier selon le microcontrôleur ,si il a un
horloge interne ou externe ,dans notre exo elle était externe (quartz) et la
fréquence ,on a configurer les ports ,on a utilisé le registre RB

2EME TRAVAIL : DETERMINATION DES TEMPS DE CALCUL

Dans cette partie, nous allons déterminer le temps mis par notre processeur
pour faire quelques opérations arithmétiques, suivant l’horloge système
sélectionnée Fcy = 5MIPS, sur des variables Integer puis Float.

La procédure à suivre consiste à exécuter l’opération arithmétique entre


l’allumage et l’extinction d’une LED InfoLED ou RunningLED (choix arbitraire).

1ère étape : Mesure du temps d’allumage/extinction de la LED.

Notre programme est :


Interprétation :

On va mesurer le temps Entre les instructions d’allumage et d’extinction de la


LED InfoLED du programme en différente opération arithmétique et on
visualise à nouveau la sortie de la LED sur l’oscilloscope pour mesurer le temps
global tg mis pour : allumer, ensuite exécuter l’opération et en fin éteindre
cette LED.

REPONSE AUX QUESTIONS :

a- Opérations sur les variables Integer :

1- la Représentation du graphe obtenu sur l’oscilloscope de la sortie de la LED


InfoLED pour les

opérations arithmétiques suivantes :


a)c=a+b;

b)c = a*b ;

c)c = a/b ;

d) c = a>>2 ;

Le temps de calcule de chaque opérations :

Pour l’addition prennent 1000ns ,la multiplication :1.18us ;la division :4us ;le
décalage : 730ns
3- Le décalage de bits est une opération effectuée sur tous les bits d'une valeur
binaire dans laquelle ils sont déplacés d'un nombre déterminé de places vers la
gauche ou la droite. Le décalage de bits est utilisé lorsque l'opérande est utilisé
comme une série de bits plutôt que comme un tout. En d'autre termes,
l'opérande est traité comme des bits individuels qui représentent quelque
chose et non comme une valeur.

4- la conclusion :
chaque instruction est comptabilisé par le nombre de cycle (horloge
système)
plus le nombre de cycle augmente pus on doit augmente la fréquence
donc le temps d’instruction augmente , Multiplicateur et la division 17
bits x 17 bits à grande vitesse , Additionneur/soustracteur 40 bits ; c’est
pour ça la division prennent du temps plus que le décalage ou l’addition

b- Opérations sur les variables Float :

1- la représentation du graphe obtenu sur l’oscilloscope de la sortie de la LED


InfoLED pour l’opération arithmétique suivante : c=a/b ;

On remarque que pour le float prendre énormément de temps , la division :


8us

c- Validation des résultats :

1- Comparer entre le temps de calcul d’une variable Interger avec celle d’une
variable

Float ?
La comparaison : on remarque que pour la division en integer prendre 3us et
pour float prendre 8us , car le nombre de cycle en float est plus grand que
integer c’est pour ça prendre beaucoup de temps

2- A votre avis, quel est la déclaration optimale : Integer ou Float ? Justifier


votre réponse ?

la déclaration optimale est Integer car elle fait le calcul plus rapide que float
,elle demande nombre d’instruction moins que float

Vous aimerez peut-être aussi