Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale...

47
Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique & Sécurité numérique Réalisé par : Encadré par : Benjelloun Rachid Mr. NAÂNANI A.Aziz Elbassiti Lamyaa A.U: 2004-2005

Transcript of Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale...

Page 1: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Ecole Nationale Supérieure d’Informat ue iq

et d’Analyse des Systèmes Ingénierie informatique & Sécurité numérique

Réalisé par : Encadré par : Benjelloun Rachid Mr. NAÂNANI A.Aziz Elbassiti Lamyaa

A.U: 2004-2005

مصعب البكدوري
Stamp
Page 2: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

1 page texte

0.5 DH

1 page mixte

1 DH

1 page image

2 DH

1 CD vierge

2 DH

1 pochette double

0.5 DH

1 reliure (baguette + transparent + papier cartonné)

6 DH

3.1. Java Java est à la fois un langage de programmation et une plateforme d'exécution [7]. Le langage Java a la particularité principale d'être portable, puisqu'il peut tourner sur n'importe quelle machine disposant d'un interpréteur Java. Cette portabilité est fondamentale sur Internet,

4. Réalisation Au lancement de l’application, l’utilisateur a le choix entre deux menus : New Project et Load Project.

Page 3: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Nous tenons à remercier chaleureusement notre encadrant Mr.

NAÂNANI A.Aziz pour son soutien et son aide considérables, ses

conseils précieux et ses remarques pertinentes qui nous ont guidé

durant la réalisation de ce projet. Nos sincères remerciements

vont également aux messieurs et mesdames les membres du jury,

pour l’honneur qu’ils nous ont accordé en acceptant de juger notre

travail.

Nous souhaitons également remercier la direction de l’ENSIAS

ainsi que tout le corps professoral et administratif de l’école pour

les efforts qu’ils fournissent afin de nous garantir une formation

de qualité, ainsi que ceux de l’entreprise INTRASYS, et plus

particulièrement le directeur général Mr. M.Mourabih d’avoir

accepté de nous accorder ce stage assez intéressent au sein de

son entreprise.

Finalement, nous espérons que notre travail soit à la hauteur des

exigences formulées.

Page 4: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Contexte général du projet 5

I- Présentation de l’organisme d’accueil 5 I.1. Introduction 6 I.2. Présentation générale 6 I.2.1. Service sécurité numérique 7 I.2.2. Service ingénierie informatique 7

II- Présentation du projet 9

II.1. Présentation du sujet 9 II.2. Planification du projet 11

III- Port parallèle: Composition et Programmation 12

III.1. Introduction 12 III.2. Géométrie du port parallèle 13 III.3. Description des signaux 13 III.4. Programmation du port parallèle 14 III.4.1. Lignes de données 14 III.4.2. Lignes d’état de l’imprimante 14 III.4.3. Lignes de commande de l’imprimante 15 III.4.4. Programmation du port 15 III.4.5. Protection du port 15

IV- PIC 16F84: Composition et Programmation 16

IV.1. Pourquoi ce type de microcontrôleur ? 16 IV.2. Qu’est ce qu’un PIC ? 16 IV.3. Les différentes familles de PICs 17 IV.4. Identification d’un PIC 18 IV.5. Organisation du PIC 16F84 19

3

Page 5: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

IV.5.1. La mémoire programme 20 IV.5.2. La mémoire eeprom 20 IV.5.3. La mémoire RAM 20 IV.6. Quelques « registres spéciaux » 21 IV.6.1. Le registre PORTA 21 IV.6.2. Le registre TRISA 22 IV.6.3. Les registres PORTB et TRISB 22 IV.7. Initialisation des pins d’E/S 22

V- Analyse et conception 24

V.1. Introduction 25 V.2. Schéma de base 25 V.3. Trames émises et reçues 25 V.3.1. Préliminaire 25 V.3.2. Trames émises 26 V.3.3. Trames reçues 27 V.4. Modules du projet 29 V.4.1. Module de transmission 29 V.4.2. Module de prise de décision et navigation 29 V.4.3. Module de contrôle et d’archivage 29

VI- Réalisation 30

VI.1. L’environnement MPLAB 30 VI.1.1. Généralités 30 VI.1.2. Le cas de notre étude 31 VI.2. Les écrans de sortie 37

Conclusion 39 Annexe 41 Bibliographie 45

4

Page 6: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Contexte général du projet

Dans cette partie, nous allons présenter l’environnement 

général de notre projet ainsi que les objectifs du stage. 

 

Ces dernières années, les architectures d’automatismes ont très fortement évolué. Ce phénomène s’est amplifié avec l’avènement des nouvelles technologies de l’information et de la communication (NTIC). En effet, automatiser ne suffit plus, il est nécessaire de communiquer. Bien qu’il ait toujours été possible de présenter une donnée niveau bas (état capteur par exemple) aux niveaux supérieurs (ERP ou maintenance) en utilisant des réseaux de natures différentes, des passerelles ainsi que des drivers dédiés, le dilemme pour un automaticien est de savoir si les données liées à la production se trouvent au bon endroit et au bon moment. Un des premiers besoins des industriels qui plaident en faveur de l’utilisation des NTIC est le souhait de simplifier les mécanismes d’échanges et d’interfaces. On peut alors facilement utiliser son interface opérateur pour communiquer (Client Web par exemple) avec un équipement de terrain sans passer par un élément intermédiaire (automate, PC…) et sans installation de drivers. Ainsi, l’accès à l’information au plus grand nombre, au moindre coût devient facilement réalisable. Un autre intérêt des technologies Internet dans les automatismes est lié au télédiagnostic et à la télémaintenance. Il est possible aujourd’hui de réaliser via Internet le diagnostic, la maintenance et la programmation à distance d’un automate programmable. Ce progrès technologique permet d’économiser beaucoup d’argent et de temps, notamment quand ceci peut éviter le déplacement d’un technicien sur l'installation distante en cas de dysfonctionnement. Dans le cadre de ce dernier qu’entre notre stage réalisé au sein de la société INTRASYS et dont le projet s’intitule «CONCEPTION ET REALISATION D’UNE APPLICATION POUR COMMANDER ET SURVEILLER A DSTANCE L’ETAT D’UN SYSTEME AUTOMATISE», il vise à :

Connecter une interface d’entrée-sortie à un microcontrôleur. Commander un système automatisé par ce microcontrôleur. Réaliser une interface graphique permettant la surveillance de l’état du

système. Archiver les ordres demandés.

Le présent rapport sera structuré de la façon suivante : Dans le premier chapitre « Organisme d’accueil » nous présenterons

l’entreprise INTRASYS au sein de laquelle nous avons effectué notre stage. Pour le second chapitre « Présentation du projet » son objectif est de

définir le cahier de charge du stage ainsi que la conduite du projet et le planning suivi pour sa réalisation.

Les chapitres «Entrée-sortie: port parallèle» et «Microcontrôleur: Pic 16F84» sont dédiés à la description du matériel utilisé pour la réalisation du projet ainsi qu’ils aideront à une bonne compréhension de la suite.

Après nous aborderons Les chapitres «Analyse & Conception» et «Réalisation» où nous exposerons les étapes du développement de notre application ainsi que les résultats obtenus.

Enfin nous terminerons par un « index » où vous trouverez des extensions aidant à mieux comprendre les différentes spécifications du projet, et une « bibliographie » des documents que nous avons utilisés.

5

Page 7: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 1

Chapitre 1 L’Organisme d’accueil

Dans  ce  chapitre,  nous  allons  présenter  l’organisme d’accueil ses services, ainsi que ses activités. 

 

Introduction.  Présentation générale. 

Service sécurité numérique.  Service ingénierie informatique.   

I. 1. Introduction La société INTRASYS présente un complexe de sécurité intégré KODOS, ayant une plate-

forme logiciel et matériel centralisée, conçue sur la base de la nouvelle technologie

électronique et informatique, le système adopté par la société est en mesure de garantir

au client le bon fonctionnement interactif des sous-systèmes suivants :

Vidéo et Télésurveillance.

Contrôle et gestion d’accès.

Alarme et détection d’incendie.

La société INTRASYS se compose de deux services, le service de sécurité numérique au

sein duquel nous avons effectué notre stage et le service d’ingénierie informatique.

I. 2. Présentation générale 

 Direction Générale

Service de sécurité

numérique

Service d’ingénierie informatique

Solutions Systèmes CODOS

Formation Ingénierie

6

Page 8: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 1

 

I. 2. 1. Le service Sécurité numérique

Le service de sécurité numérique offre un ensemble de systèmes de sécurité, qui sont en

interaction entre eux, afin de permettre à la société une large application de plusieurs

solutions de sécurité dans des différents domaines :

Système de télésurveillance : Video_Network, permet au client de Garder un oeil sur son Entreprise, même à distance.

Système de contrôle et gestion d’accès (SCGA) : permet au client la Surveillance et la gestion des accès à son Entreprise en mode Autonome ou en Mode Réseau.

Système d’alarme et détection d’incendie (SADI) : permet au client de Gardez un œil vigilant sur les Intrusions et les Incendies au seins de son entreprise.

Le système avec lequel nous avons travaillé est :

Système ALMAZ GPS/GSM : c’est un système de localisation et de contrôle

des véhicules par satellite équipé d'un centre de contrôle et un système

GPS/GSM embarqué dans le véhicule qui permet de le suivre à l'échelle

nationale et internationale.

Les principales fonctions de ce système sont :

Mise sous surveillance

Localisation et contrôle de véhicules

Mise en pane à distance

Récupération

Gestion de flotte

Contrôle d'état à distance (Vitesse, Température…)

En plus de cet ensemble de systèmes le service possède ainsi un module de programmation appelé « solutions », permet de développer une infinité de solutions selon les besoins des clients en matière de sécurité.

I. 2. 2. Le service Ingénierie informatique

Ce service prend en charge la formation professionnelle, le développement et la

réalisation de projets scientifiques et technologiques à l’aide de deux sous services :

Service formation : S’occupe de la formation professionnelle et du

perfectionnement dans le domaine d’informatique.

Service ingénierie : met en service de ses clients un ensemble de fonctionnalité

• Solutions industrielles (Automatisme–Electronique–Informatique industriel).

• Maquettes didactiques (secteur enseignement).

7

Page 9: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 1

• Bancs d’Essaies.

• Fourniture de la matière première.

• Etude et conseil technique.

• Installation et configuration informatique.

• Etude et réalisation d’applications.

• Maintenance préventive et corrective des systèmes.

• Sécurité informatique.

 

 

 

8

Page 10: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 2

Chapitre 2 Présentation du projet 

Dans ce chapitre nous présenterons la problématique du 

projet, les objectifs du stage,  la conduite du projet ainsi que  le 

planning général suivi pour sa réalisation. 

Présentation du sujet.  Planification du projet. 

II. 1. Présentation du sujet  L’’Ecole Nationale Supérieure d’Informatique et d’Analyse des Systèmes forme ses élèves aussi aux développements des systèmes embarqués obéissant à des contraintes de temps réel. Ce projet est l’occasion de mettre en pratique les connaissances acquises et les méthodes enseignées. C’est un système automatisé commandé par un programme déporté sur un ordinateur. Il doit recevoir les ordres (activation ou désactivation ou autre) et renvoyer un message de confirmation à l’utilisateur via une interface graphique (pupitre). D’un point de vue matériel, le projet se divise en deux parties ; Une première partie est embarquée sur le système lui-même, il comprend un microcontrôleur (PIC 16F84), la seconde est déportée sur un ordinateur comportant une interface d’entrée-sortie (port parallèle). Le choix du port parallèle comme interface d’E/S est dû à la facilité de sa programmation sachant que la programmation des autres ports d’E/S (port série, port USB) suit la même logique avec des petites différences. Pour le microcontrôleur PIC 16F84 de la société Microchip, l’ensemble des caractéristiques qu’il possède et qu’on va cité ci-dessus justifie bien sa préférence :

Disponibilité sur le marché. Prix raisonnable. Technologie : la mémoire FLASH permet un effacement et une reprogrammation

multiple du circuit ; le développement est infiniment plus simple que sur des versions UVPROM comme le 68705, qui connaissaient leur gloire il y a une dizaine d'années.

Ils possèdent de la mémoire EEPROM (64 octets) et peuvent donc stocker des paramètres.

La documentation et l'assembleur sont largement disponibles sur les sites Web des constructeurs.

Réalisation aisée d'un programmateur pour PC, grâce au mode de téléchargement série des données.

Pour réaliser ce projet, nous l’avons découpé en trois modules. Le module de transmission: Ce module doit envoyer via le pupitre une trame

de l’ordinateur au microcontrôleur par une interface d’entrée-sortie (port parallèle).

Module de prise de décision et navigation : Ce module devra traiter la trame reçue pour déterminer la commande à transmettre.

9

Page 11: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 2

Module de contrôle des moteurs et archivage : Cet autre module est chargé d’enregistrer l’ordre envoyé et vérifier son exécution en renvoyant une trame du microcontrôleur à l’interface d’E/S (port parallèle) assurant l’exécution de l’ordre.

Dans la partie Analyse et conception, nous allons faire une description plus approfondie des trois modules. Le découpage du projet est illustré dans la figure suivante :

Les objectifs de notre application sont donc :

Réaliser une interface graphique permettant la surveillance de l’état des deux moteurs (via un pupitre).

Programmer une interface d’entrée-sortie –port parallèle- pour permettre l’envoie d’une trame d’activation ou de désactivation de l’un des moteurs selon la demande de l’utilisateur.

Programmer un microcontrôleur -pic 16F84- afin de lui permettre l’analyse de la trame reçue et par la suite la détermination de la commande demandée et l’envoie de l’ordre au moteur concerné.

Programmer le microcontrôleur pour renvoyer une trame à l’interface d’E/S assurant l’exécution de l’ordre.

Programmer l’interface d’E/S afin qu’elle analyse la trame reçue en provenance du microcontrôleur et donc décoder l’information à l’utilisateur via son interface graphique.

Garder la trace des ordres demandés dans un fichier «loger». Il était prévu que le travail demandé soit réalisé à l’aide du langage Java vue l’ensemble de caractéristiques qu’il a, des caractéristiques qui s’avèrent très avantageuses vue les

10

Page 12: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 2

facilités et les services beaucoup plus sophistiqués offerts, et parmi lesquelles sa facilité de mise en œuvre, la possibilité de travailler avec des bases de données et sa disponibilité gratuitement; la chose qui présente un grand intérêt pour les sociétés ; mais notre encadrant a préféré que nous commençons la programmation de l’interface graphique, le PIC et le fichier d’archivage avec le langage C vue notre maîtrise et notre familiarisation avec ce langage, et la programmation avec le Java viendra après s’il restera du temps. Pour la programmation du microcontrôleur nous avons utilisé l’environnement de développement MPLAB IDE v7.0 et le compilateur CC5X qui sont des produits en interaction avec la production «Microchip », leurs choix a pour justification leur simplicité de mise en œuvre, or la programmation du PIC était en langage C le compilateur CC5X permet une intégration très facile au sein de l’environnement MPLAB , ainsi qu’ils sont freeware.

II. 2. Planification du projet La planification du projet est parmi les phases d'avant projet. Elle consiste à prévoir le déroulement du projet tout au long des phases constituant le cycle de développement. Grâce aux réunions tenues avec notre encadrant au sein du service Ingénierie Informatique, nous avons été éclairés sur les différentes étapes du projet ainsi que leurs séquencements. Cela consistait en trois grandes étapes: la première est une phase d'analyse et de spécification dont les objectifs sont de bien cerner le sujet d'une part et de délimiter le périmètre du projet d'autre part. La seconde traite la conception et la mise en oeuvre de l’application, quant à la troisième étape, elle est consacrée à la préparation du rapport et la présentation. Le tableau suivant présente sommairement le planning des étapes du déroulent de notre projet.

ID  Date Début  Date fin  Tache 

1  6 /07/2005 6 /07/2005 1ere réunion

2  6 /07/2005 11 /07/2005 Recherche et Documentation

3  12/07/2005 12/07/2005 Réunion pour la conception

4  13/07/2005 29/07/2005 Réalisation

5  2/08/2005 2/08/2005 Réunion de validation

6  3/08/2005 5/08/2005 Adaptation de quelques modifications

7  8/08/2005 20/08/2005 Rapport & Présentation

8  22/08/2005 22/08/2005 Test

Figure 2.2 : Planning global de la réalisation du projet

Ce planning était un fil conducteur tout au long du projet. Il nous a permis d’ajuster les dérives et de maîtriser la gestion du temps alloué pour la réalisation du projet. Les livrables des différentes phases de ce planning servent de documentation pour le projet et nous ont servis à la rédaction de ce rapport.

11

Page 13: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 3

Chapitre 3 Entrée-sortie: Port parallèle

Pour  se positionner par  rapport à notre projet,  il  faut avoir un aperçu sur les entrées‐sorties en général, les ports en particulier et plus précisément les ports parallèles.   

  Introduction.  Géométrie du port parallèle.                                                  Description des signaux.  Programmation du port parallèle. 

Lignes de données.  Lignes d’état de l’imprimante.  Lignes de commande de l’imprimante.  Programmation du port.  Protection du port. 

    

Les ports d'entrée-sortie sont des éléments matériels de l'ordinateur, permettant au système de communiquer avec des éléments extérieurs, c'est-à-dire d'échanger des données, d'où l'appellation d'interface d'entrée-sortie (notée parfois interface d'E/S).

III. 1. Introduction La transmission de données en parallèle consiste à envoyer des données simultanément sur plusieurs canaux (fils). Les ports parallèle présents sur les ordinateurs personnels permettent d'envoyer simultanément 8 bits (un octet) par l'intermédiaire de 8 fils.

 

Les premiers ports parallèles bidirectionnels permettaient d'atteindre des débits de l'ordre de 2.4Mb/s. Toutefois des ports parallèles améliorés ont été mis au point afin d'obtenir des débits plus élevés:

12

Page 14: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 3

• Le port EPP (Enhanced Parralel Port, port parallèle amélioré) a permis d'atteindre des débits de l'ordre de 8 à 16 Mbps

• Le port ECP (Enhanced Capabilities Port, port à capacités améliorées), mis au point par Hewlett Packard et Microsoft. Il reprend les caractéristiques du port EPP en lui ajoutant un support Plug and Play, c'est-à-dire la possibilité pour l'ordinateur de reconnaître les périphériques branchés

III. 2. Géométrie du port parallèle Le port parallèle des PC se présente sous la forme d'une prise de DB9 ou DB25 femelle (femelle parce qu'il est composé de trous...) dont voici la géométrie: (Vue de derrière du PC)

------------------------------ \ 1 2 3 4 5 7 8 ... 13 /

\ 14 15 16 17 18 .......25 / --------------------------

III. 3. Description des signaux 

Broche Nom Sortie Entrée 1 /STROBE X X 2 D0 X X si EPP

3 D1 X X si EPP

4 D2 X X si EPP

5 D3 X X si EPP

6 D4 X X si EPP

7 D5 X X si EPP

8 D6 X X si EPP

9 D7 X X si EPP

10 /ACK - X 11 BUSY - X 12 PE - X 13 SELECT - X 14 /AUTOFEED X X 15 /ERROR - X 16 /INIT X X 17 /SELECT X X 18-25 MASSE X X

13

Page 15: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 3

• STROBE : cette ligne active basse indique à l'imprimante que des données sont présentes sur les lignes D0 à D7 et qu'il faut les prendre en compte.

• D0 à D7 : c'est le bus de données sur lequel véhicule la valeur du caractère à imprimer. On ne peut écrire sur ce port, à moins d'avoir un port parallèle étendu (c'est le cas pour les ports de type ECP/EPP).

• ACK : l'imprimante met à 0 cette ligne pour indiquer à l'ordinateur qu'elle a bien reçu le caractère transmit et qu'il peut continuer la transmission.

• BUSY : cette ligne est mise à 0 par l'imprimante lorsque son buffer de réception est plein. L'ordinateur est ainsi averti que celle-ci ne peut plus recevoir de données. Il doit attendre que cette ligne revienne à 1 pour recommencer à émettre.

• PE : signifie " paper error ". L'imprimante indique par cette ligne à l'ordinateur que l'alimentation en papier a été interrompue.

• SELECT : cette ligne indique à l'ordinateur si l'imprimante est "on line" ou "off line".

• AUTOFEED : lorsque ce signal est à 1, 'imprimante doit effectuer un saut de ligne à chaque caractère "return" reçu. En effet, certaines imprimantes se contentent d'effectuer un simple retour du chariot en présence de ce caractère.

• ERROR : indique à l'ordinateur que l'imprimante a détecté une erreur. • INIT : l'ordinateur peut effectuer une initialisation de l'imprimante par

l'intermédiaire de cette ligne. • SELECT IN : l'ordinateur peut mettre l'imprimante hors ligne par l'intermédiaire

de ce signal. • MASSE : c'est la masse du PC.

III. 4. Programmation du port parallèle  Il est très facile de programmer cette interface. Trois registres seulement sont nécessaires au contrôle total des signaux, que l'on contrôle par les ports d'entrée/sortie du PC. Chaque port parallèle possède ses propres registres (il n'y a pas de multiplexage):

III. 4. 1. Les lignes de Données

Ce registre ne peut qu’être écrit, il a pour but d’émettre les données vers l’imprimante.

Bit 7 6 5 4 3 2 1 0 Nom D7 D6 D5 D4 D3 D2 D1 D0

Remarque : On peut croire que les données ne deviennent valables en sortie que si la ligne STROBE est à l'état bas, mais il n'en est rien. Il n'y a pas de logique interne de ce type dans les interfaces parallèles.

III. 4. 2. Les lignes d'État

Ce registre, accessible uniquement en lecture au contraire du précédent,

Bit 7 6 5 4 3 2 1 0

14

Page 16: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 3

Nom /BUSY ACK PE SELECT ERROR X X X Le "/" indique "Logique Inversée" X : Indéfini Remarque : Il ne faut surtout pas écrire dans ce registre sinon on risque de griller le PC.

III. 4. 3. Les lignes de Commandes

Ce dernier registre est accessible à la fois en lecture et en écriture. Bit 7 6 5 4 3 2 1 0

Nom X X BIT CTRL

IRQ ENABLE

SELECT IN /INIT AUTOFEED /STROBE

Le "/" indique "Logique Inversée" X : Indéfini

III. 4. 4. Programmation du port

Adresse Broches accessibles

378 hexa 8 bits de données pour l'émission ou la réception avec le port bidirectionnel

379 hexa

Bit3:ERROR Bit4:SELECT Bit5:PE Bit6:/ACK Bit 7 : BUSY

37A hexa

Bit0:/STROBE Bit1:/AUTOFEED Bit2:/INIT Bit3:/SELECT IN Bit4:Autorisation d'interruption Bit 5 : Mode I/O : mise à 1 = lecture, mise à 0 = écriture

• Ecrire sur le port des données : outportb(378h,Valeur à écrire); • Lire sur le port d'état de l'imprimante : valeur = inportb(379h);

III. 4. 5. Protection du port

Vu la fragilité des ports parallèles et comme des remontées de courant sont toujours possibles, Craig Peacock a créé PortTalk, un driver permettant l’accès direct à ce type de port en commençons et avant toute tentative d’écriture par l’instruction : • OpenPortTalk();permettant de déverrouiller le port à utiliser Et terminons par : • closePortTalk();qui verrouille à nouveau le port.

  

15

Page 17: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

Chapitre 4 Microcontrôleur: Pic 16F84

Ce  chapitre  est  une  suite  du  précédent,  mais  a  pour objectif  l’initiation  à  la  programmation  des  pics  et  surtout  le 16F84. 

  Pourquoi ce type de microcontrôleurs ?  Qu’est ce qu’un PIC ?  Les différentes familles de PICs  Identification d’un PIC  Organisation du PIC 16F84 

La mémoire programme  La mémoire eeprom  La mémoire Ram 

Quelques « registres spéciaux »   Le registre PORTA   Le registre TRISA                                                 Les registres PORTB et TRISB 

Initialisation des pins d’E/S   

IV. 1. Pourquoi ce type de microcontrôleurs?  Les microcontrôleurs PIC de la société Microchip, sont depuis quelques années dans le « hit parade » des meilleures ventes. Ceci est en partie dû à leur prix très bas, leur simplicité de programmation, et les outils de développement que l’on trouve sur le NET. Aujourd’hui, développer une application avec un PIC n’a rien d’extraordinaire, et tous les outils nécessaires sont disponibles gratuitement.

Les fonctions demandées en vue de réalisation sur les PICs sont de plus en plus complexes, et par la suite, les programmes pour les réaliser demandent de plus en plus de mémoires, l’utilisateur est ainsi à la recherche de langages « évolués » pouvant simplifier la tache de programmation.

IV. 2. Qu’est ce qu’un PIC ?  Un PIC n’est rien d’autre qu’un microcontrôleur, c’est à dire une unité de traitement de l’information de type microprocesseur à laquelle on a ajouté des périphériques internes permettant de réaliser des montages sans nécessiter l’ajout de composants externes. La dénomination PIC est sous copyright de Microchip, donc les autres fabricants ont été dans l’impossibilité d’utiliser ce terme pour leurs propres microcontrôleurs.

16

Page 18: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

Les PICs sont des composants dits RISC (Reduce Instructions Construction Set), ou encore composant à jeu d’instructions réduit. Pourquoi ? C’est très puissant sous l’angle « vitesse de fonctionnement », car plus on réduit le nombre d’instructions, plus facile et plus rapide en est le décodage, et plus vite le composant fonctionne. Sur le marché, il existe deux familles opposées, les RISC et les CISC (Complex Instructions Construction Set). Chez les CISC, on diminue la vitesse de traitement, mais les instructions sont plus complexes, plus puissantes, et donc plus nombreuses. Il s’agit donc d’un choix de stratégie.

Tous les PICs Mid-Range (nous verrons tous les types dans la partie suivante) ont un jeu de 35 instructions, stockent chaque instruction dans un seul mot de programme, et exécutent chaque instruction (sauf les sauts) en 1 cycle. On atteint donc des très grandes vitesses, et les instructions sont de plus très rapidement assimilées. L’exécution en un seul cycle est typique des composants RISC.

L’horloge fournie au PIC est prédivisée par 4 au niveau de celle-ci. C’est cette base de temps qui donne le temps d’un cycle.

Si on utilise par exemple un quartz de 4MHz, on obtient donc 1000000 de cycles/seconde, or, comme le PIC exécute pratiquement 1 instruction par cycle, hormis les sauts, cela vous donne une puissance de l’ordre de 1MIPS (1 Million d’Instructions Par Seconde).

Il faut se rappeler que les pics peuvent monter jusqu’à 20MHz. C’est donc une vitesse de traitement plus qu’honorable.

IV. 3. Les différentes familles des PICs  La famille des PICs est subdivisée à l’heure actuelle en 3 grandes familles : La famille Base-Line, qui utilise des mots d’instructions (nous verrons ce que c’est) de 12 bits, la famille Mid-Range, qui utilise des mots de 14 bits (et dont font partie les 16F84 et 16F876), et puis la famille High-End, qui utilise des mots de 16 bits.

Les PICs

Base-Line

Mid-Range

High-End

Mots d’instructions en 12 bits

Mots d’instructions en 14 bits

Mots d’instructions en 16 bits

  

17

Page 19: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

 IV. 4. Identification d’un PIC  Pour identifier un PIC, vous utiliserez simplement son numéro. Les deux premiers chiffres indiquent la catégorie du PIC, 16 indique un PIC Mid-Range. Vient ensuite parfois une lettre L : Celle-ci indique que le PIC peut fonctionner avec une plage de tension beaucoup plus tolérante. Ensuite, vous trouvez une lettre parmi ces trois:

C indique que la mémoire programme est une EPROM ou plus rarement une EEPROM.

CR pour indiquer une mémoire de type ROM. F pour indiquer une mémoire de type FLASH.

À noter à ce niveau que seule une mémoire FLASH ou EEPROM est susceptible d’être effacée, donc les PICs de type CR ne peuvent être pas reprogrammés. Pour les versions C, le 16C84 peut être reprogrammé, il s’agit d’une mémoire eeprom. Le 12C508, par exemple, possède une mémoire programme EPROM, donc effaçable uniquement par exposition aux ultraviolets. Donc, l’effacement nécessite une fenêtre transparente sur le chip, qui est une version spéciale développement, et non la version couramment rencontrée.

Remarque : un composant qu’on ne peut reprogrammer est appelé O.T.P pour One Time Programming, c’est à dire composant à programmation unique.

Puis vous constatez que les derniers chiffres identifient précisément le PIC (84).

Finalement vous verrez sur les boîtiers le suffixe « -XX » dans lequel XX représente la fréquence d’horloge maximale que le PIC peut recevoir. Par exemple –04 pour un 4MHz. Donc, un 16F84-04 est un PIC Mid-Range (16) de mémoire programme type FLASH (F), réinscriptible de type 84 et capable d’accepter une fréquence d’horloge de 4MHz.

Une dernière indication est le type de boîtier. Pour la majorité des expériences le boîtier PDIP est le plus dominant, qui est un boîtier DIL 18 broches, avec un écartement entre les rangées de 0.3’’ (étroit). La version 4MHz est conforme à cela.

Lettre (L) parfois utilisée

F 84 16 -04

Mid-Range La fréquence d’horloge maximale

Le type Mémoire programme de type FLASH

18

Page 20: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

Remarque : les PICs sont des composants STATIQUES, c’est à dire que la fréquence d’horloge peut être abaissée jusqu’à l’arrêt complet sans perte de données et sans

nisation du PIC 16F84 tre. Le microcontrôleur comporte deux

unication. Chaque broche peut être configurée, logiciellement comme une

nt attaqué par un signal carré. Le choix entre ces différentes options se

dysfonctionnement. Une version –10 peut donc toujours être employée sans problème à la place d’une –04, mais pas l’inverse naturellement. Ceci par opposition aux composants DYNAMIQUES (comme les microprocesseurs des ordinateurs), dont la fréquence d’horloge doit rester dans des limites précises. Ceci dit, il est déconseillé d’essayez faire tourner votre PIII/500 à 166MHz, car c’est un composant dynamique et ça ne marchera toujours pas.

IV. 5. Orga Le brochage du PIC 16F84 est présenté ci conports de commentrée ou une sortie. Le port A (en rouge) comporte 5 broches, le port B (en bleu) en comporte lui 8. L'horloge du PIC peut être généré par différent moyens : par quartz, réseau RC ou encore directemefait lors de la programmation. Le PIC 16F8X supporte un maximum de 4 MHz, encore qu'une version particulière permet d'atteindre 10 MHz.

a mémoire du 16F84 est divisée en 3 parties (voir figure 1), dont les propriétés sont résumées dans le tableau suivant:

L

-figure 1-

IV. 5. 1. La mémoire programme

La mémoire programme est constituée de 1K mots de 14 bits. C’est dans cette zone que les programmes sont écrits. Ceci explique pourquoi nos fichiers sur PC font 2Kbytes. En

19

Page 21: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

effet, i oint, ce qu’il faut noter c’est qu’une instruction est codée sur 1 mot. Donc, 1K donne 1 bon millier d’instructions possibles.

l faut 2 octets pour coder 14 bits. À ce p

Remarque : le point abordé avant explique également pourquoi, lorsqu’on lit un PIC vierge, on va lire des 0x3FFF. Cela donne en binaire B’11111111111111’, soit 14 bits.

IV. 5. 2. La mémoire eeprom

st constituée de 64 octets pouvant être lus et écrits depuis notre programme. Ces octets sont c nt et sont très utiles pour conserver des paramètres semi permanents. Leur utilisation implique une procédure spéciale, car ce

M est celle qui est utilisée sans cesse. Toutes les données qui y sont stockées sont perdues lors d’une coupure de courant. La mém ues pour le 16F84. Elle est subdivisée de plus en deux parties. Dans chacune des banques, il existe des « cases mémoires spéciales »

ose de 68 octets libres.

La mémoire eeprom (Electrical Erasable Programmable Read Only Memory) e

onservés après une coupure de coura

n’est pas de la RAM, mais bien une ROM de type spécial. Il est donc plus rapide de la lire que d’y écrire.

IV. 5. 3. La mémoire Ram

La mémoire RA

oire RAM est organisée en 2 banq

appelées REGISTRES SPECIAUX et des cases mémoires « libres » dont le programmeur peut se servir à sa guise. Pour le cas du 16F84, on dispLa figure ci-contre montre l’organisation de la RAM (figure 2).

-figure 2- On y voit clairement la séparation verticale en 2 banques, et tout en bas deux banques de 68 octets de RAM. L’indication « mapped in bank 0 » indique qu’accéder à ces 68 octets depuis la banque 0

mémoire. ou la banque 1 donne en fait accès à la même case

20

Page 22: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

Dans la partie supérieure, on voit le nom de tous les registres spéciaux utilisés dans le PIC. Chaque registre provoque un fonctionnement spécial du PIC ou la mise en service

ccéder depuis la banque 0

placement auquel on ne peut pas accéder.

ans cet axe, on mettra l’accent sur quelques points cruciaux qui s’imposent en force occurrence les registres PORTA, TRISA,

pérativement bien maîtriser leurs programmations vu leur multiple fonctionnalité sachant qu’eux seuls qui configure le

e registre est un peu particulier, puisqu’il donne directement accès au monde extérieur. C’est en effet ce registre qui représente l’image des pins RA0 jusqu’à RA4, soit 5 pins. Ce reg ns la banque0. Chaque bit de ce registre représente une pin. Donc, seuls 5 bits sont utilisés. Pour écrire sur une pin en sortie, on

d’une fonction particulière. Vous remarquerez enfin que certains registres sont identiques dans les deux banques (FSR par exemple). Cela signifie qu’y aou 1 ne fait pas de différence. À noter que la banque 0 utilise les adresses de 0x00 à 0x7F, tandis que la banque 1 va de 0x80 à 0xFF. Les zones en grisé sont des emplacements non utilisés (et non utilisables). L’emplacement 0x00 est un em

IV. 6. Quelques registres spéciaux 

Ddans le jargon « programmation des PICs », en l’PORTB, TRISB. Ces registres qu’il faut im

comportement du microcontrôleur avec le milieu extérieur.

IV. 6. 1. Le registre PORTA

C

istre se situe à l’adresse 05H, da

place le bit correspondant à 1 ou à 0, selon le niveau souhaité. Par exemple : PORTA.1=1 ; envoyer niveau 1 sur RA1 Cette instruction (qui peut être équivalente à : RA1=1 ; pour certains compilateurs) permet de placer un niveau +5V sur la pin RA1. Remarque : Notez qu’il faut pour cela que cette pin soit configurée en sortie (voir

lles sont sensibles à des niveaux 0/5V. e niveau de transition dépend du modèle de PIC, mais se situe généralement à la moitié

éviter pour les problèmes de grande sensibilité aux parasites.

TRISA). Quand ces pins sont programmées en entrées, eLde la tension d’alimentation. Une entrée « en air » est vue comme étant au niveau 0. Ce cas est à Remarque : Les PORTS disposent d’une diode de protection vers le 0V et vers le 5V. De sorte qu’avec une simple résistance série, vous pouvez envoyer des signaux vers ces pins qui sortent de la gamme de tension Vss/Vdd. La pin RA4 fait exception à cette règle, car elle ne dispose que d’une diode vers la masse. En gros au modo, ce qu’il faut retenir est que les pins de RA0 à RA3 peuvent être utilisées en entrée avec des niveaux 0/5V ou en sortie en envoyant 0V ou 5V. Quand à la in RA4, en sortie, elle ne peut pas envoyer 5V.

onctionnement particulier des PORTS

pLes caractéristiques maximales de fonctionnement du PIC sont fournies dans la partie annexe. L’essentiel est le voici : utiliser 20mA maximum par pin de sortie, avec un maximum total de 80mA pour le PORTA, et 150mA pour le PORTB. F

es PORTS fonctionnent toujours sur le principe lecture->modification->écriture. ar exemple, si on écrit PORTA.1=1, le PIC procède de la manière suivante :

LP

21

Page 23: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

1) La totalité du PORTA est lu (même les bits en sortie) ) Le bit 1 est mis à 1

egistre TRISA

Ce registre est situé à la même adresse que PORTA, mais dans la banque 1. Son adresse complèCe registre est d’un fonctionnement très simple et est lié au fonctionnement du PORTA. haque bit positionné à 1 configure la pin correspondante en entrée. Chaque bit à 0

mises en entrée, afin de ne pas envoyer des signaux

ent de la même manière que PORTA et TRISA, mais concernent bien entendu les 8 pins RB. Tous les bits sont donc utilisés dans ce cas.

haque patte du PIC 16F84 peut être configurées indépendamment des autres en entrée e étroitement avec les deux registres TRISA et

es états des bits de ces registres sont représentatifs de la fonction des pattes du

RA0

23) La totalité du PORTA est réécrit.

IV. 6. 2. Le r

te sur 8 bits est donc 0x85.

Cconfigure la pin correspondant en sortie. Au reset du PIC, toutes les pins sontnon désirés sur les pins. Les bits de TRISA seront donc mis à 1 lors de chaque reset. Notez également que, comme il n’y a que 5 pins utilisées sur le PORTA, seuls 5 bits (b0/b4) seront utilisés sur TRISA.

IV. 6. 3. Les registres PORTB et TRISB

Ces registres fonctionnent exactem

VI. 7. L’initialisation des E/S  Cou en sortie. Cette initialisation se rapportTRISB qu’on a vu précédemment. Lmicrocontrôleur. Chaque bit représente une patte du 16F84 comme suit : Registre TRISA :

Nom de la patte RA4 RA3 RA2 RA1

Bit correspondant 4 3 2 1 0

Les bits 5 à 7 n’ont pa é.

RB6

s d’utilit Registre TRISB :

Nom de la patte RB7 RB5 RB4 RB3 RB2 RB1 RB0

Bit correspondant 7 6 5 4 3 2 1 0

Rappel : Si un bit est à 1 patte socié st en entrée, on, la tte est en sorÀ la mise sous tension, tous ces bits sont à 1. Il est donc nécessaire au début de la

nction principale de mettre chaque bit à la bonne valeur.

, la as e e sin pa tie.

fo Exemple : on veut configurer les pattes RA0, RA1, RA4 et RB5 comme des entrées,

TRISA=0b11111111 ;

tandis que les pins RB0, RB1, RB2 et RB3 en sortie. Les deux instructions suivantes peuvent faire l’affaire :

22

Page 24: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 4

TRISB=0b11110000 ; Attention, les bits sont toujours écrits dans l’ordre suivant : bit7, bit6, ..., bit0.

es instructions sont valables quel que soit le compilateur pour PIC. Il se peut tout de ême les mots clés TRISA et TRISB soient remplacés par d’autres dans un autre

a manipulation de TRISA et TRISB peut se faire à volonté dans le programme.

Cmcompilateur. L

23

Page 25: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 5

Chapitre 5 Analyse & Conception

Ce  chapitre  décrit  la  phase  d’analyse  et  conception  du projet ; Dans un premier  temps, nous  rappèlerons  les objectifs du stage,  puis nous  développerons les modules de notre projet, ensuite  nous identifierons les différents schémas considérés lors de cette réalisation  ainsi que les  fonctions établies au cours de ce travail.    

Introduction.  Schéma de base.   Trames émises et reçues. 

Préliminaire.  Trames émises.                                                  Trames reçues. 

Modules du projet.  Module de transmission.  Module de prise de décision et navigation.                                                  Module de contrôle et archivage.  

V. 1. Introduction 

La définition des spécifications du projet va nous permettre d’isoler les différentes phases du traitement que nous présenterons dans cette partie, en analysant plus profondément les modules cités dans la partie « Contexte général du projet » :

Module de transmission. Module de prise de décision et navigation. Module de contrôle des moteurs et archivage.

Et développons aussi les objectifs suivants : Réalisation d’une interface graphique (pupitre) permettant la surveillance des

deux moteurs. Programmation d’une interface d’entrée-sortie « port parallèle » pour permettre

l’envoie d’une trame d’activation ou de désactivation de l’un des moteurs selon la demande de l’utilisateur.

Programmation d’un microcontrôleur « PIC 16F84 » afin de lui permettre l’analyse de la trame reçue et par la suite la détermination de la commande demandée et l’envoie de l’ordre au moteur concerné.

Programmation du microcontrôleur pour renvoyer une trame à l’interface d’E/S « port parallèle » assurant l’exécution de l’ordre.

Programmation de l’interface d’E/S afin qu’elle analyse la trame reçue en provenance du microcontrôleur et décoder l’information à l’utilisateur pour qu’elle soit lisible via le pupitre.

Enregistrement des ordres demandés dans un fichier «loger».

24

Page 26: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 5

V. 2. Schéma de base 

Le dessin ci-contre décrit le système de l’application en sa globalité :

  Une précision très importante reste à signaler, elle concerne la connectivité, dans les deux sens, du microcontrôleur se présentant comme intermédiaire entre le port parallèle et les moteurs. On parlera de cette connectivité en détail dans l’axe suivant.

 V. 3. Trames émises et reçues 

V. 3. 1. Préliminaire

Toutes les actions qui sont effectuées dans cette application soit dans la partie commande (UC --> µcontrôleur --> moteurs) pour l’activation ou la désactivation de l’un des moteurs, soit dans la partie rétroaction (moteurs --> µcontrôleur --> UC) pour le control de l’état des moteurs se concrétisent via l’émission des trames dans les deux sens entre le microcontrôleur qu’est le PIC 16F84 et le port parallèle de l’unité centrale. Ces trames sont des signaux en créneaux avec une typologie particulière, elles sont composées de deux parties essentielles :

la première partie est un champ de 25ms appelé « Header» qui sert comme signature identifiante de la trame pour la différencier de n’importe quelle trame aléatoire qui peut se produire à cause des parasites…etc.

la deuxième partie est appelé « data», ce champ s’étale sur 42ms puisqu’il est

composé de 8 subdivisions de 6ms chacune, ce champ présente l’information proprement dite qu’on décode après avoir testé l’entête si elle est bien identique à l’entête voulue.

25

Page 27: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 5

Exemple : Voici une trame particulière avec une information quelconque, mais qui est conforme à l’entête qu’on a adoptée comme entête de référence :

L’entête la data

5 5 6 6 6 6 6 6 6 6

Remarque : Une règle générale qu’on a adopté tout au long de ce travail, est que les pins RA seront configurées comme des entrées du PIC, et les pins RB comme des sorties. Ce choix satisfait bien sûr notre cahier de charge car nous n’avons besoin que de trois

trois sorties au total, ce qui est assurément garanti avec ce choix.   entrées et              

V. 3. 2. Trames émises

Ce petit axe met le point sur les trames mises en jeu dans la partie commande, ou en termes du présent rapport « le module de prise de décision & navigation ». Ces trames là sont générées au port, et émises en destination du microcontrôleur qui les reçoit en entrée sur la broche RA0. Après le test de l’entête, nous faisons le décodage de l’information et puis on accède aux moteurs via les deux pins de sorties, en occurrence RB0 et RB1, avec les mesures convenables et les commandes adéquates. Reste à éclaircir comment dégager l’information comprise dans la trame. Comme il est cité auparavant, la partie data qui vient en deuxième lieu après l’entête constitue l’information proprement dite, cette partie est subdivisée en huit petits champs de 6ms chacun, et selon les valeurs enregistrées de chaque champ (0 ou 1), on déduit le nombre décimal N qui convient et dont les composantes dans la base B=[2^7, 2^6,.., 2^0] sont les valeurs enregistrés, et par la suite on active le Nième moteur en désactivant les autres. Avec cette méthode, on peut rapidement déduire qu’on est dans la possibilité d’actionner 255 moteurs (ce nombre est contraint aussi de la typologie adoptée pour les trames), et pas 256 car on a réservé la trame dont l’information est « 0 » pour la commande de désactivation de tous les moteurs. Dans notre application on s’est limité à deux moteurs seulement sachant que la même logique est suivie pour commander plus. Exemple : En considérant la trame donnée en exemple dans le préliminaire, les valeurs qu’on a dans la partie data de la trame sont : 0 0 0 0 0 0 1 0, cette information ayant ses coordonnées dans la base B, donc le nombre décimal équivalent est 2, et par suite la commande correspondante permettra d’activer le 2ème moteur et désactiver le 1er moteur. Dans le tableau ci-contre, on cite les trames utilisées dans la partie commande ainsi que la correspondance entre ces trames et les commandes d’activation des moteurs:

26

Page 28: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 5

Nature de la trame Commandes

désactiver les deux moteurs

activer moteur 1 désactiver moteur 2

désactiver moteur 1 activer moteur 2

V. 3. 3. Trames reçues

Ces trames s’intègrent dans la partie rétroaction pour le control des moteurs. Elles sont reçues par le port parallèle en provenance du microcontrôleur, pour les décoder en informations lisibles à l’utilisateur sur le pupitre. Ces trames sont de la typologie que les précédentes ; et pour la simplicité du raisonnement, on a fait appel à des trames identiques à celles utilisées dans le deuxième module car au niveau du port qui reçoit les trames de son tour, on a opté pour un raisonnement analogue au précédent effectué au sein du PIC. Ainsi, tout se résume dans le tableau ci-contre qui joint chaque trame avec l’état des deux moteurs, l’information qui doit être véhiculée jusqu’au pupitre pour que

15ms 5 5 6 6 6 6 6 6 6 6

l’entête le data

15ms 5 5 6 6 6 6 6 6 6 6

l’entête le data

15ms 5 5 6 6 6 6 6 6 6 6

l’entête le data

27

Page 29: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 5

l’utilisateur ait une idée sur l’état de son système à chaque instant et puisse vérifier l’exécution exacte de ses commandes.

Nature de la trame État des moteurs

les deux moteurs en arrêt

(désactivés)

moteur 1 : activé (en marche)

moteur 2 : désactivé

moteur 1 : désactivé moteur 2 : activé

Remarque : dans le domaine industriel, on peut savoir l’état d’un composant au sein d’un système industriel à l’aide des capteurs, et d’ailleurs c’est une stratégie appliquée un peu partout dans le monde car c’est elle seule qui permet de voir et de contrôler de près les systèmes et leurs états et de pouvoir par la suite agir au moment opportun pour faire face à d’éventuels problèmes voire d’éventuelles catastrophes (fuites de gaz, surpressions, explosions, dégradation du matériels...etc).

15ms 5 5 6 6 6 6 6 6 6 6

l’entête le data

15ms 5 5 6 6 6 6 6 6 6 6

l’entête le data

15ms 5 5 6 6 6 6 6 6 6 6

l’entête le data

28

Page 30: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 5

V. 4. Modules du projet 

V. 4. 1. Module de transmission

Selon les objectifs cités dans la partie «Présentation du Projet» ce module consiste en la réalisation de deux ; la première étape était la réalisation d’une interface graphique permettant la surveillance de deux moteurs, et pour ceci nous avons programmé quatre fonctions, sont :

void bouton(char *s,int font,int couleur,int x1,int y1,int x2,int y2) :permet de tracer un bouton, de spécifier sa couleurs et enfin de le remplir par une expression « Moteur 2 » par exemple.

int click(int x1,int y1,int x2,int y2) : permet de simuler le clic sur un bouton et retourner 1 si un clic est effectuer et 0 sinon.

int ampoule(int color,int midx,int midy) : permet de dessiner deux cercle en dessus des boutons tracés pour indiquer l’état de chaque moteur, leurs couleur initiale est le rouge.

void Fermer() :permet la fermeture de l’interface utilisateur quand les moteurs sont désactivés.

Concernant le second objectif, nous avons programmé la fonction : void send_D0(int port,int val) :permet la transmission d’une trame soit

d’activation (val=1 pour le premier moteur, val=2 pour le deuxième moteur) ou de désactivation (val=0 pour les deux moteurs) par la pin D0 du port parallèle .

V. 4. 2. Module de prise de décision et navigation

Ce module est équivalent au troisième objectif demandant la programmation du microcontrôleur afin de transmettre l’ordre au moteur ; tache réalisée à l’aide des fonctions suivantes (des fonctions en langage C mais qui peuvent apparaître différentes un peu du point de vue leurs types et les types des arguments, ainsi que des instructions supplémentaires propres à la programmation des PICs, une programmation sur laquelle on mettra le point en détail dans la partie annexe de ce rapport) :

bit testheader(bit a) : permet de tester si l’entête de la trame qu’on reçoit sur la broche ‘a’ est bien l’entête souhaitée, elle retourne un bit de valeur soit 0 soit 1 suivant la validité de l’entête.

int naturedata(bit a) : permet de lire la partie «data» de la trame reçue sur la broche ‘a’ et retourner la valeur décimale qu’est l’information souhaitée d’être transmise (le numéro du moteur à activer).

V. 4. 3. Module de contrôle des moteurs et archivage

Ce dernier module comprend, comme il est clair, la réalisation des trois derniers objectifs afin de surveiller le fonctionnement des moteurs et garder trace des ordres demandés ;sa réalisation nous a demandée la programmation des fonctions suivante :

int get_ent() :permet la vérification de l’entête de la trame reçue par la pin BUSY du port parallèle, elle retourne 1 si c’est juste et 0 sinon.

int get_BUSY(int port,int data):Précise la donnée reçue et retourne sa valeur (0, 1 ou 2).

int verify(int val_D0): vérifie si la trame envoyée par la pin D0 est la même reçue par la pin BUSY est dans ce cas elle retourne 1 ou bien elle retourne 0 puis cette valeur sera en argument de la fonction ampoule pour changer la couleur du moteur activé (valeur 1 de la fonction verify) du rouge au vert et vice versa.

void save(char *s) : permet l’enregistrement de la date et l’heure ainsi que l’ordre demandé de l’utilisateur.

29

Page 31: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

Chapitre 6 Réalisation

Dans  ce  chapitre  nous  allons  présenter  l’outil  du développement ainsi que les écrans de sorties. 

  L’environnement MPLAB. 

Généralités.  Le cas de notre étude.                                                 

Les écrans de sortie. 

VI. 1. L’environnement MPLAB 

VI. 1. 1. Généralités 

MPLAB est un environnement de développement, il fait partie des outils de génération de code et présente deux particularités importantes :

Il est commun à tous les outils matériels Microchip et même de certains fabricants.

Il est totalement gratuit.

Malgré cette gratuité, c’est un outil indispensable et très puissant pour la programmation des microcontrôleurs PIC. Il permet d’écrire, mettre au point et optimiser les programmes, sous Windows. Il offre beaucoup de flexibilité aux développeurs, notamment grâce aux nombreuses fenêtres pouvant être ouvertes à tout moment lors d’une mise au point (environnement multifenêtres), permettant de voir le contenu d’un quelconque emplacement mémoire et d’un quelconque registre.

L’environnement MPLAB comporte:

Un éditeur de programmes.

Un éditeur de liens.

Un simulateur.

Le macro-assembleur MPASM supportant l’assemblage conditionnel

Tous ces logiciels sont interactifs donc il est ainsi possible de passer immédiatement de la fenêtre affichant le listing source du programme assemblé à la fenêtre d’édition afin de corriger une erreur. Le simulateur intégré permet de tester toutes applications grâce à de multiples possibilités de visualisation des registres, de la mémoire et des entrées/Sorties du circuit simulé.

30

Page 32: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

L’assembleur MPASM : L’assembleur MPASM contenu dans MPLAB dispose de toutes les fonctions dont on peut avoir besoin :

Il connaît les mnémoniques de tous les PIC ainsi que les définitions d’étiquettes, de constantes, de variables …

Il autorise l’écriture d’expressions arithmétiques, logiques et relationnelles

En sortie, cet assembleur produit divers fichiers :

Un fichier objet destiné à la programmation du PIC

Un fichier listing

Un fichier des messages d’erreur et d’avertissement

Un fichier symboles pour le simulateur

Le simulateur MPSIM : Le simulateur permet de vérifier sur un PC le déroulement et le fonctionnement de votre programme. Il permet de simuler des Entrées/Sorties au moyen de commandes particulières. Il dispose de multiples modes d’affichages et permet ainsi de visualiser le contenu de registres, de mémoires particulières ou de ports d’entrées/sorties. On peut afficher dans une autre fenêtre le listing source du programme en cours d’exécution avec une mise en évidence de chaque instruction au fur et à mesure qu’elle s’exécute. On peut alors détecter les erreurs de programmation facilement. On peut modifier un programme en cours de simulation.

IV. 1. 2. Le cas de notre étude

L’environnement de développement MPALB est un environnement très puissant du point de vue programmation des PICs de microchip ; ceci découle de la possibilité de programmer ces microcontrôleurs avec une multitude de langages selon la stratégie adoptée, ceci grâce à l’intégration des compilateurs appropriés au sein de l’environnement. Dans ce point là, on va mettre le point sur notre propre utilisation de cet environnement, une utilisation qui était en concordance avec notre cahier de charge ; en l’occurrence la programmation du microcontrôleur avec le langage C et la compilation de nos programmes via le compilateur CC5X. Avant de se lancer dans la programmation, plusieurs étapes préliminaires s’imposent ; on citera dans ce qui suit l’enchaînement de ces étapes :

Installer MPLAB IDE de Microchip.

Plusieurs versions sont disponibles gratuitement sur Internet, la plus récente est la version v7.00 avec laquelle on a travaillé.

Installer le compilateur CC5X. Il existe bel et bien maintes versions, mais la plus recommandée est celle produite par B Knudsen Data qui est compatible à merveille avec les produits de Microchip.

Ceci fait, il reste l’étape la plus importante qui consiste à créer un projet au sein de MPLAB. Ce stade là de « création complète du projet opérationnel » se concrétise en réalisant huit sous taches différentes mais complémentaires, des sous taches qui se présentent dans ce qui suit avec un ordre significatif :

• Lancer l’environnement de développement MPLAB. La fenêtre ci-contre montre l’espace de travail de MPLAB :

31

Page 33: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

• Sélectionner le type du microcontrôleur cible en vue de programmation (dans notre cas : PIC 16F84).

Cette opération se fait comme suit : Configure>Select Device.

32

Page 34: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

Dans la page de dialogue qui s’ouvre, il faut sélectionner le PIC 16F84.

Les « lampes colorées » indiquent les composants de MPLAB IDE qui supportent le microcontrôleur choisi.

• Créer un projet : cette création se fait moyennant un ‘assistant de projet’. Cette notion de projet est l’ultime moyen pour que les fichiers constituants soient organisés et compilés avec succès. Dans la perspective de créer un projet, on procède de la manière suivante : Project>Project Wizard. Alors, dans la page de dialogue « Welcome », on clique Next pour avancer dans l’assistant, un assistant dont l’enchaînement en steps sera cité au fur et à mesure dans cette description détaillée. Step one : cette étape permet de changer ou confirmer le type du PIC choisi auparavant.

33

Page 35: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

• Sélectionner le langage de programmation. Ce choix se fait indirectement en choisissant le compilateur à utiliser et en configurant les chemins de quelques fichiers (.exe) qui lui sont liés et qui sont jugés cruciaux pour une compilation réussie (step two). Pour notre cas avec le compilateur CC5X de B Knudsen Data, ces fichiers sont : cc5x.exe se trouvant dans le répertoire généré après l’installation du compilateur, mpasmwin.exe et mplink.exe qui existent dans le répertoire généré après l’installation de MPLAB.

34

Page 36: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

• Ajouter le linker script approprié au type du PIC sélectionné auparavant (16f84.lkr) après avoir nommer le projet et préciser son emplacement. Ce type de fichiers existe en addition dans le répertoire où MPLAB était installé (step three & step four).

REMARQUE : à signaler qu’à cette étape il faut aussi ajouter ‘le fichier template’ (exemple : f452tmpo.asm) ; mais vu qu’on ne va pas programmer le PIC en assembleur, on peut se passer de ce procédé.

35

Page 37: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

Après ceci, et en cliquant Next, la dernière page de l’assistant s’affiche et présente une sommaire montrant le type du PIC utilisé, le langage de programmation (le compilateur) et l’emplacement du projet.

• Créer le code : c’est en fait le code source ou le programme.

Cette étape n’a rien d’extraordinaire, il suffit d’écrire ses lignes de code (le programme) avec un utilitaire qui permet de lui attribuer l’extension (.c). Ceci fait, il faut ajouter le fichier (.c), essai.c par exemple, au dossier du projet et plus précisément dans la rubrique Source Files.

Ainsi, le dossier du projet aura finalement la forme suivante :

36

Page 38: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

• Compiler l’ensemble des fichiers qui sont attachés au projet. Pour compiler, on utilise Project>Build All ou bien cliquer sur l’icône correspondante dans la barre d’outil. La fenêtre Output montre par la suite les résultats de cette procédure de compilation : l’état de la RAM, les fichiers générés (.hex, .asm, .var, .lst, ...) ainsi que d’autres remarques techniques concernant le code source en cas de succès de compilation.

 VI. 2. Les écrans de sortie   

Cette partie est la plus intéressante pour l’utilisateur car elle explique les différents affichages disponibles :

Page initiale (les deux moteurs sont désactivés au début) :

37

Page 39: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Chapitre 6

Moteur 1 activé et Moteur 2 désactivé :

Moteur 2 activé et Moteur 1 désactivé :

Il est porté à votre connaissance que nous ne pouvons pas activer les deux moteurs en même temps avec la présente application, vu l’approche qu’on a faite concernant l’interprétation des trames émises et reçues. Cette extension ne demande qu’une simple modification dans le code source.  

38

Page 40: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Conclusion

Conclusion

Dans cette partie, nous allons récapituler en un mot ce qu’on a réalisé puis parler des perspectives proposés. 

Au terme de ce travail, un bilan de ce qui était réalisé s’impose. L’objectif du stage tournait plus ou moins autour de la commande à distance d’un système automatisé ainsi que la surveillance de son état à distance aussi, ce système sur lequel nous avons opéré n’est autre qu’un modèle simple et simpliste se résumant en deux moteurs mais qui est bien évidemment extensible vers des applications beaucoup plus importantes et gigantesques vu que le principe est le même à des modifications près.

La réalisation de cette application était répartie en plusieurs tâches complémentaires, chacune touchant à part un constituant de notre système global, tout en sachant une règle majeure sur laquelle repose toute notre procédure : les trames, qui ne sont autres que des signaux électroniques avec une typologie bien déterminée qui permettent de coder tout type d’information utile pour le système dans ses différents modes de fonctionnement. Ainsi, et comme première tâche que nous avons envisagée, nous avons réalisé une interface graphique avec Turbo C++, cette interface (ou pupitre) via laquelle l’utilisateur interagit avec le système, soit en lançant des commandes pour l’activation des moteurs…etc, soit en suivant l’état du système (surveillance). La tâche d’après s’est intéressée particulièrement à la programmation du port parallèle que nous avons choisi comme interface d’E/S ; le rôle de cette interface était crucial dans l’application, dans la mesure où elle permet de traduire dans les deux sens (commande & rétroaction) les besoins de l’utilisateur soit pour activer soit pour surveiller en des signaux électroniques qui se propagent dans tout le système pour véhiculer les informations voulues. Lors de la troisième tâche, nous avons mis le point sur l’élément pivot de l’application qui n’est autre que le microcontrôleur, en l’occurrence le PIC16F84 de Microchip. On a abordé la programmation du PIC de deux points de vue différents, selon les fonctionnalités requises et stipulées par notre cahier de charge ; la première fonctionnalité mise en jeu était en rapport avec la partie commande, et elle consistait à recevoir les trames en provenance du port, en dégager l’information (la commande) et puis concrétiser en lançant des commandes vers les moteurs pour les activer/désactiver. La deuxième consistait en la même chose mais dans le volet rétroaction ; grâce à des capteurs associés à chacun des moteurs, on peut très bien savoir et à tout moment l’état de chaque moteur, et c’est le µcontrôleur qui prend connaissance de cet état et toujours via des trames en direction du port. Cette fois-ci l’utilisateur surveille l’état des moteurs qui le voit affiché sur le pupitre grâce au port qui fait le décodage des trames. La programmation du µcontrôleur était en langage C, un peu particulier vu l’existence de plusieurs types et instructions spécifiques à la programmation des PICs, les programmes C ont été compilés avec le compilateur CC5X sous l’environnement de développement MPLAB.

Ceci dit, la présente application est très prometteuse en termes de principe et en termes d’idées motrices qui existent derrière. Comme des extensions immédiates qu’on peut dégager on pourra utiliser le port ‘usb’ qui se voit très dominant dans l’heure actuelle et avec des systèmes un peu plus forts et avancés industriellement.

Cependant, et en concordance avec la première présentation du projet dans le présent rapport, on pourra aller très loin devant pour aboutir à des applications et des projets très importants qui se basent essentiellement sur le ‘wireless-connection’ c’est-à-dire la connexion sans fils entre les parties du système. D’ailleurs, c’est le cas de l’Europe et

39

Page 41: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Conclusion

des Etats-Unis où ces projets ont eu lieu et sont déjà opérationnels. Comme exemple de ces projets on pourra citer : la commande (la conduite) d’une voiture à distance ; la réparation d’une panne affectant une machine à distance...via une connexion réseau ou par satellite.

Un dernier mot pour le stage en-soi, c’était une expérience réussie, pertinente et très enrichissante sur plusieurs niveaux. Sur le coté personnel, c’était une aventure qui nous a apporté un plus en termes du comportement au sein de l’organisme et avec toutes les hiérarchies, comment agir positivement au sein d’un groupe de travail, comment soigner son gestuel et son langage pour le mieux adapter avec le milieu du travail et le champ de l’entreprise. Sur le coté professionnel, c’était une expérience via laquelle on a acquis des nouvelles connaissances surtout dans le domaine de l’informatique électronique qu’est une filière de l’informatique industrielle très prépondérante de nos jours ; une expérience qui nous a mieux sensibiliser à bien gérer notre temps, nos ressources et nos contraintes pour répondre au cahier des charges et avoir une idée claire sur les outils de développement les plus demandé sur le marché de travail. Enfin, nous tenons encore une fois à remercier notre encadrant Mr. Naânani ainsi que Mr. Mourabih le directeur de INTRASYS qui nous a permis d’effectuer ce stage au sein de son organisme.

40

Page 42: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Annexe

Ce  chapitre a pour objectif  l’éclaircissement de quelques 

points  sur  lesquels  on  n’a  pas  mis  le  point  au  cœur  du développement  du    rapport mais  qui  s’avèrent  essentiels  pour une compréhension complète et une présentation structurée.     

  

  Les caractéristiques du PIC 16F84  La programmation des PICs  

Les variables  Les fonctions 

  

 

I. Les caractéristiques du PIC 16F84   

Dans cette partie, on fera étalage de quelques caractéristiques supplémentaires concernant le microcontrôleur auquel on avait à faire dans ce projet. Ces caractéristiques données en addition s’avèrent essentielles ; d’une part pour une étude beaucoup plus importante et complète, d’autre part pour illustrer et démontrer le bien fondé de toutes les justifications avancées auparavant d’un point de vue électronique.

Le 16F84 fait partie de la famille 16F8X dont les différentes caractéristiques ainsi que l’architecture interne sont dans les tables ci-contre :

- Les composants de la famille 16F8X-

41

Page 43: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Annexe

-organisation interne des composants de la famille 16F8X-

   Les caractéristiques électriques de cette famille des PICs sont citées intégralement dans ce qui suit :

-caractéristiques électriques du PIC16F83 et PIC16F84-

42

Page 44: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Annexe

   II. La programmation des PICs   II.1. Les variables Une variable est une portion réservée de la mémoire RAM à laquelle on a donné un nom. Elle est utilisée afin de garder en mémoire une entité acquise dans le temps, pour la réutiliser plus tard. Toute variable en C possède un type. Outre que les types qu’on connaît en langage C, la programmation des PICs repose sur deux types essentiels :

Le type char : occupe un octet en mémoire. On peut déposer dans cette variable un nombre entre 0 et 255.

Le type bit : une variable de ce type occupe un bit en mémoire. Deux valeurs sont susceptibles d’être déposées dans une variable de ce type, soit le 0 soit le 1 logique.

La déclaration d’une variable se fait de deux façons :

‘type’ ‘nom’ @ ‘adresse_de_la_portion_réservée’ ‘type’ ‘nom’ (le compilateur réserve une portion encore libre)

La place de la déclaration des variables dans le programme est importante. Une variable déclarée au début du fichier est appelée variable permanente (globale), sa place est réservée durant tout le programme. Il est important de connaître la place des variables dans la mémoire pour les visualiser lors de simulation. Il est aussi indispensable de ne pas créer plus de variables que de mémoire disponible. Pour cela, lors de la compilation, une table récapitulative de l’état de la mémoire RAM est affichée. Voici un petit programme, qui ne fait rien, mais sert uniquement à comprendre le processus :

// Attention ! Les majuscules sont différent des minuscules //-------------déclaration des variables------------------ char a @ 0x11 ; // réservation d’un octet nommé a à l’adresse 0x11 bit b @ 0x12.2 ; // réservation d’un bit nommé b à la place 2 de l’octet 0x11 char c, d ; // réservation de deux octets nommés c et d bit e ; // réservation d’un bit nommé e //-------------fonction principale------------------------- void main(void) { printf(″\n″) ; // instruction qui ne fait rien. }

Après avoir tapé et compilé ce programme, des messages d’information de la compilation nous informant de l’état de la RAM ont lieu. Étudions les :

43

Page 45: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Annexe

Explication des lignes 1, 2 et 3 :

chaque symbole représente l’état d’un octet. La première ligne, par exemple, récapitule l’état des octets 00h à 19h (le h signifie que nous parlons en hexadécimal).

Le symbole ‘-‘ veut dire : octet réservé par le compilateur pour le fonctionnement du microcontrôleur (registre PORTA, TRISB,...) ou par l’utilisateur à une place précise (0x11).

Le symbole ‘.’ signifie : octet réservé par l’utilisateur, mais dont la place n’a pas d’importance (variables c et d).

‘7’ pour signifier : octet où 7 bits sont disponibles. ‘*’ : octet libre. La ligne 4 récapitule l’état de la RAM.

II.2. Les fonctions La plupart des langages de programmation nous permettent de subdiviser nos programmes en sous-programmes plus simples et plus compacts : les fonctions. À l’aide de ces structures nous pouvons modulariser nos programmes pour obtenir des solutions plus élégantes et plus efficaces. Les fonctions permettent :

une meilleure lisibilité. la diminution du risque d’erreurs. la possibilité des tests sélectifs. la dissimulation des méthodes : Lors de l’utilisation d’une fonction il faut

seulement connaître son effet, sans devoir s’occuper des détails de sa réalisation.

la réutilisation d’une fonction déjà existante : Il est facile d’utiliser des fonctions que l’on a écrites soi-même ou qui ont été développées par d’autres personnes.

La simplicité de l’entretien.

Tout ce qu’on connaît sur les fonctions en C reste valable pour la programmation des PIC, avec un plus qui se manifeste dans le fait qu’une fonction peut être appelée dans le corps du programme principal (main) même si elle n’est que déclarée auparavant sans avoir écrit son code en intégralité ; alors qu’une fonction ne peut appeler une autre que si cette dernière est complètement définie. Ainsi, un programme aura la structure suivante : Fonction X { Instructions en C } Fonction Y { Instructions en C, appel de la fonction X si nécessaire } Déclaration de la fonction Z Fonction main { Instructions en C, appel des fonctions X, Y et Z si nécessaire } Fonction Z { Instructions en C, appel des fonctions X et Y si nécessaire }

44

Page 46: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

Annexe

45

Page 47: Réalisé par : Encadré par - Glossip | Plus besoin de … · 2011-03-14 · Ecole Nationale Supérieure d’Informat ue iq et d’Analyse des Systèmes Ingénierie informatique

  Sites Web :  

www.Bigonoff.com  www.SSII.fr.fm  www.Devlopper.com  www.Comment ça marche.com  www.microchip.com www.enseirb.fr/~dondon/PIC/demarrerPIC/ l.lefebvre.free.fr/index/ www.ucapps.de/howto_tools_mplab/ www.electronique-facile.com www.bknd.com

  

45