Mémoire
Mémoire
MASTER
Présenté par :
Bekhouche Salah Eddine
Soutenu le : 2 Juin 2013
MASTER
Cachet et signature
اﻟﺟﻣﮭورﯾﺔ اﻟﺟزاﺋرﯾﺔ اﻟدﯾﻣﻘراطﯾﺔ اﻟﺷﻌﺑﯾﺔ
République Algérienne Démocratique et Populaire
وزارة اﻟﺗﻌﻠﯾم اﻟﻌﺎﻟﻲ و اﻟﺑﺣث اﻟﻌﻠﻣﻲ
Ministère de l’enseignement Supérieur et de la Recherche scientifique
Résumé
L’oscilloscope est un appareil de mesure indispensable dans tous les laboratoires. Actuellement
l’oscilloscope numérique remplace presque complètement l’oscilloscope analogique. Pour cela
on a pensé à la réalisation d’un oscilloscope numérique portatif. L’oscilloscope réalisé dans ce
projet est connectable au PC à l’aide du Bus universel en série (USB). L’interface utilisateur,
réalisé sous l’environnement C#, contrôle la communication avec la carte d’acquisition dont le
cœur est le PIC 18F4550. La fréquence du signal acquit est limité par le temps de conversion du
PIC.
ﻣﻠﺨﺺ
ﻓﻲ اﻟﻮﻗﺖ اﻟﺤﺎﻟﻲ راﺳﻢ اﻹھﺘﺰاز اﻟﺮﻗﻤﻲ ﻋﻮض ﺗﻘﺮﯾﺒﺎ راﺳﻢ.راﺳﻢ اﻹھﺘﺰازات ھﻮ ﺟﮭﺎز ﻗﯿﺎس ﺿﺮوري ﻓﻲ ﻛﻞ اﻟﻤﺨﺎﺑﺮ
اﻟﺠﮭﺎز اﻟﻤﻨﺠﺰ ﻓﻲ ھﺬا اﻟﻤﺸﺮوع ھﻮ ﺟﮭﺎز. ﻣﻦ أﺟﻞ ھﺬا ﺗﻢ اﻟﺘﻔﻜﯿﺮ ﻓﻲ إﻧﺠﺎز راﺳﻢ إھﺘﺰاز رﻗﻤﻲ ﻣﺤﻤﻮل.اﻹھﺘﺰازات اﻟﺘﻤﺎﺛﻠﻲ
واﺟﮭﺔ اﻟﻤﺴﺘﻌﻤﻞ اﻟﻤﻨﺠﺰة ﻓﻲ ﺑﯿﺌﺔ ﺳﻲ ﺷﺎرب ﺗﺘﺤﻜﻢ ﻓﻲ اﻟﺘﻮاﺻﻞ.(USB) ﻣﻮﺻﻞ ﺑـ اﻟﺤﺎﺳﻮب ﻋﻦ طﺮﯾﻖ ﻧﺎﻗﻞ ﻣﺘﺴﻠﺴﻞ ﻋﺎم
.PIC ﺗﺮدد اﻹﺷﺎرة اﻟﻤﻠﺘﻘﻄﺔ ﻣﺤﺪود ﺑﺰﻣﻦ ﺗﺤﻮﯾﻞ اﻟـ.PIC18F4550 ﻣﻊ ﺑﻄﺎﻗﺔ اﻹﻟﺘﻘﺎط اﻟﺘﻲ ﺗﻌﺘﻤﺪ اﺳﺎﺳﺎ ﻋﻠﻰ
Dédicace
Je dédie ce modeste travail :
À ceux qui m’ont indiqué la bonne voie, À ceux qui attendent patiemment le fruit de
leur éducation. À qui n’ont jamais cessé de se donner corps et âme pour ma réussite.
À vous mes grands-mères Yamina et Zohra, pour vos prières et vos amours.
Puisse Dieu, le Très Haut, vous accorder santé, bonheur et longue
vie et faire en sorte que jamais je ne vous déçoive.
Je dédie aussi ce travail à toute la famille Bekhouche et la famille Abdellah, mes oncles
et tantes, cousins et cousines.
À tous (e) les enseignants (e) et les responsables du département de génie électrique
Tout d’abord, j’implore le merci de Dieu tout puissant de m’avoir accordé sa bénédiction
et sa protection pour accomplir cette responsabilité.
Tous mes remerciements s’adressent également aux membres du jury qui me font
l’honneur d’évaluer ce travail
J’ai aussi l’honneur et le plaisir de remercier tous les enseignants qui m’ont formé et pris
en charge depuis ma première année universitaire « Tronc commun sciences et techniques ST »,
jusqu’à ma dernière année universitaire « Electronique ».
Fig I.6 : L'oscilloscope numérique échantillonne le signal et reconstruit une image ..................... 5
Fig III.4 : Synoptique de la circuiterie d’horloge sur un PIC 18F4550 gérant l’USB ................. 39
Fig III.8 : Synoptique général des interruptions sur PIC 18F4550 .............................................. 49
Tab III.2 : Rôle des bits FOSC0 à FOSC3 pour le 18F4550 ........................................................ 38
AC : Alternating Current.
DC : Direct Current.
GND : GrouND.
CRT : Cathode Ray Tube.
CAN : Convertisseur Analogique Numérique.
USB : Universal Serial Bus
PC : Personal Computer
AWG : American Wire Gauge
PVC : PolyVinyl Chloride
EOP : End Of Packet
TTL : Transistor–Transistor Logic
NRZI : Non-Return-To-Zero
VID : Vendor ID
PID : Product ID
CI : Circuit Intégré
ENDP : ENDPoint
CRC : Cyclic Redundancy Check
SOF : Start Of Frame
HID : Human Interface Device
PCI : Peripheral Component Interconnect
WDM : Windows Driver Model
CMOS : Complementary Metal–Oxide–Semiconductor
PIC : Peripheral Interface Controller
RISC : Reduced Instructions Set Computer
WDT : Watch Dog Timer
TOSC : Time of the OSCillator
FOSC : Frequency of the OSCillator
PLL : Phase-locked loop
IT : Interruption
SIE : Serial Interface Engine
ICSP : In-Circuit Serial Programming
PWM : Pulse-Width Modulation
Résumé
Résumé
Abstract
ﻣﻠﺨﺺ
ﻓﻲ اﻟﻮﻗﺖ اﻟﺤﺎﻟﻲ راﺳﻢ اﻹھﺘﺰاز اﻟﺮﻗﻤﻲ ﻋﻮض ﺗﻘﺮﯾﺒﺎ.راﺳﻢ اﻹھﺘﺰازات ھﻮ ﺟﮭﺎز ﻗﯿﺎس ﺿﺮوري ﻓﻲ ﻛﻞ اﻟﻤﺨﺎﺑﺮ
اﻟﺠﮭﺎز اﻟﻤﻨﺠﺰ ﻓﻲ ھﺬا اﻟﻤﺸﺮوع ھﻮ. ﻣﻦ أﺟﻞ ھﺬا ﺗﻢ اﻟﺘﻔﻜﯿﺮ ﻓﻲ إﻧﺠﺎز راﺳﻢ إھﺘﺰاز رﻗﻤﻲ ﻣﺤﻤﻮل.راﺳﻢ اﻹھﺘﺰازات اﻟﺘﻤﺎﺛﻠﻲ
واﺟﮭﺔ اﻟﻤﺴﺘﻌﻤﻞ اﻟﻤﻨﺠﺰة ﻓﻲ ﺑﯿﺌﺔ ﺳﻲ ﺷﺎرب ﺗﺘﺤﻜﻢ ﻓﻲ.(USB) ﺟﮭﺎز ﻣﻮﺻﻞ ﺑـ اﻟﺤﺎﺳﻮب ﻋﻦ طﺮﯾﻖ ﻧﺎﻗﻞ ﻣﺘﺴﻠﺴﻞ ﻋﺎم
ﺗﺮدد اﻹﺷﺎرة اﻟﻤﻠﺘﻘﻄﺔ ﻣﺤﺪود ﺑﺰﻣﻦ ﺗﺤﻮﯾﻞ اﻟـﻤﺘﺤﻜﻢ.PIC18F4550 اﻟﺘﻮاﺻﻞ ﻣﻊ ﺑﻄﺎﻗﺔ اﻹﻟﺘﻘﺎط اﻟﺘﻲ ﺗﻌﺘﻤﺪ اﺳﺎﺳﺎ ﻋﻠﻰ
.اﻟﺪﻗﯿﻖ
. ﻣﺘﺤﻜﻢ دﻗﯿﻖ، ﻣﺤﻮل إﺷﺎرة، ﻧﺎﻗﻞ ﻣﺘﺴﻠﺴﻞ ﻋﺎم، راﺳﻢ اﻹھﺘﺰازات:ﻛﻠﻤﺎت دﻻﻟﯿﺔ
Sommaire
Pour un oscilloscope le signal mesuré est le plus souvent une tension électrique.
L’oscilloscope est un appareil de mesure électronique de représentation graphique sur un écran
d'une ou de plusieurs tensions variables en fonction du temps. Le traitement analogique de ces
tensions est compliqué et le traitement numérique utilisant les convertisseurs analogique-
numérique est devenu l’alternative. Un convertisseur analogique-numérique, est un montage
électronique dont la fonction est de traduire une grandeur analogique en une valeur numérique
(codée sur plusieurs bits), proportionnelle au rapport entre la grandeur analogique d'entrée et la
valeur maximum du signal. Il existe plusieurs techniques pour convertir un signal analogique en
signal numérique. Le CAN est l’élément principal de la chaine d’acquisition.
Le bus USB est basé sur une architecture de type série. Il s'agit toutefois d'une interface
entrée-sortie beaucoup plus rapide que le port série standard. L'architecture qui a été retenue pour
ce type de port est en série pour deux raisons principales : l'architecture série permet d'utiliser
une cadence d'horloge beaucoup plus élevée qu'une interface parallèle, car celle-ci ne supporte
pas des fréquences trop élevées (dans une architecture à haut débit, les bits circulant sur chaque
fil arrivent avec des décalages, provoquant des erreurs) ; les câbles série coûtent beaucoup moins
cher que les câbles parallèles.
des outils libres sous Windows et de développer un logiciel de base permettant de tester le
microcontrôleur sous ce même système d’exploitation.
Qu’est-ce que l'oscilloscope? Ses types? Quelles sont les avantages de bus USB?
Qu’est- ce qu'un PIC et quelles sont ses caractéristiques? Comment fabriquer un oscilloscope
numérique portatif ?
Chapitre 1 : L’oscilloscope.
Chapitre 2 : Le bus universel en série.
Chapitre 3 : Le microcontrôleur (PIC).
Chapitre 3 : Réalisation pratique.
Les références les plus intéressantes sur lesquelles nous avons travaillé sont :
B
CHAPITRE
I
L’oscilloscope
CHPITRE I : L’oscilloscope
1 - Introduction ............................................................................................................................... 2
2 - L’oscilloscope ............................................................................................................................ 2
2.1 - Types d’oscilloscopes : analogique et numérique .............................................................. 5
3 - L’oscilloscope analogique ......................................................................................................... 6
3.1 - Principe de fonctionnement ................................................................................................ 6
3.2 - Fonctions de base .............................................................................................................. 7
4 - L’oscilloscope numérique.......................................................................................................... 8
4.1 - Principe de fonctionnement ................................................................................................. 8
4.2 - Bloc diagramme................................................................................................................... 9
5 - Définitions ................................................................................................................................ 9
5.1 - Fréquence et période........................................................................................................... 9
5.2 - Bande passante ................................................................................................................. 10
5.3 - Temps de montée ............................................................................................................. 10
5.4 - Sensibilité verticale .......................................................................................................... 10
5.5 - Résolution verticale .......................................................................................................... 11
5.6 - Impédance d’entrée .......................................................................................................... 11
5.7 - Couplage .......................................................................................................................... 11
5.8 - Vitesse de balayage .......................................................................................................... 11
5.9 - Base de temps .................................................................................................................. 12
5.10 - Précision du gain............................................................................................................. 12
5.11 - Précision de la base de temps ou précision horizontale.................................................. 12
5.12 - Fréquence d’échantillonnage .......................................................................................... 12
6 - Conclusion ............................................................................................................................... 13
Chapitre I L’oscilloscope
[Link]
Un oscilloscope est un instrument de mesure destiné à visualiser un signal électrique, le
plus souvent variable au cours du temps. Il est utilisé par de nombreux scientifiques afin de
visualiser soit des tensions électriques, soit diverses autres grandeurs physiques préalablement
transformées en tension au moyen d'un convertisseur adapté.
I.2.L’oscilloscope
L’oscilloscope est fondamentalement un appareil fournissant une représentation
graphique d’un signal électrique. Dans la plupart des applications, ce graphique montre comment
les signaux évoluent en fonction du temps : l’axe vertical (Y) représente la tension (ou
l’amplitude d’une autre grandeur traduite en tension électrique) et l’axe horizontal (X) représente
le temps. L’intensité ou luminosité de l’écran est appelée quelquefois axe Z (Fig I.1). [2]
2
Chapitre I L’oscilloscope
La représentation graphique représentée sur l’écran de l’oscilloscope fournit beaucoup
d’informations au sujet de ce signal, comme :
3
Chapitre I L’oscilloscope
L’utilité d’un oscilloscope n’est pas limitée au monde de l’électronique. Avec le capteur
adéquat, un oscilloscope peut mesurer tout genre de grandeurs physiques à condition qu’on
puisse la convertir préalablement en un signal électrique. C’est dans ce sens qu’on définit un
capteur comme un moyen qui convertit la grandeur physique (une pression, la lumière ou la
chaleur (Fig I.4)) en un signal électrique. Par exemple, un microphone est un capteur qui
transforme l’onde sonore en un signal électrique. En automobile, un électricien-auto utilise un
oscilloscope pour mesurer les vibrations du moteur. Un chercheur en médecine utilise
l’oscilloscope pour mesurer les signaux du cerveau. Les possibilités sont illimitées. [2]
4
Chapitre I L’oscilloscope
[Link] d’oscilloscopes : analogique et numérique
Il existe deux types d’oscilloscopes : analogique et numérique. Un oscilloscope
analogique fonctionne par déflexion électrique d’un faisceau d’électrons en fonction de la
tension mesurée. La tension dévie le faisceau de haut en bas proportionnellement et trace une
courbe sur l’écran qui donne une image instantanée (en temps réel) du signal (Fig I.5).
Fig I.6: L'oscilloscope numérique échantillonne le signal et reconstruit une image. [2]
Pour beaucoup d’applications, l’un et l’autre type peuvent être utilisés. Cependant,
chaque type possède des caractéristiques spécifiques plus ou moins adaptées aux signaux à
mesurer.
5
Chapitre I L’oscilloscope
L’oscilloscope analogique est souvent préféré à un oscilloscope numérique lorsqu’il est
important de visualiser des signaux variables très rapidement dans le temps.
Les oscilloscopes numériques capturent des événements uniques. Ils peuvent traiter les
données numériques et les transmettre à un ordinateur pour traitement. Ils peuvent également
stocker les données numériques en mémoire pour examen ultérieur ou permettre leur impression
sur une imprimante. [2][3]
I.3.L’oscilloscope analogique
[Link] de fonctionnement
Lorsqu’un oscilloscope est connecté à un circuit, la tension transite de la sonde à travers
le système vertical de l’oscilloscope. La figure I.7 représente le bloc diagramme simple d’un
oscilloscope analogique.
6
Chapitre I L’oscilloscope
[Link] de base
En conclusion, avec un oscilloscope analogique, il est nécessaire d’ajuster trois fonctions
de base pour visualiser un signal :
1. La base de temps. Elle permet d’ajuster le temps par division (écrit habituellement
comme temps/div ou sec/div) représenté horizontalement à l’écran. Le contrôle de
l’échelle horizontale sur l’oscilloscope permet d’ajuster la base de temps.
7
Chapitre I L’oscilloscope
2. L’atténuation (diminution) ou l’amplification (augmentation) du signal. Le contrôle de
l’échelle verticale permet d’ajuster le signal avant qu’il ne soit appliqué au système de
déflexion verticale.
3. Le déclenchement de l’oscilloscope ; ce contrôle permet de stabiliser un signal répétitif,
aussi bien qu’un signal unique.
La mise au point de l’intensité et du focus permet de créer sur l’écran un signal net. [2]
I.4.L’oscilloscope numérique
[Link] de fonctionnement
Quelques-unes des parties constituant l’oscilloscope numérique sont les mêmes que celles
des oscilloscopes analogiques, cependant, les oscilloscopes numériques contiennent des systèmes
de traitement de données additionnels (Fig I.9). Avec les systèmes additionnels, l’oscilloscope
numérique rassemble les données numériques pour représenter la courbe entière sur l’écran.
Les échantillons du CAN sont stockés dans la mémoire comme points de la courbe.
Le nombre de points nécessaires pour représenter une courbe complète est appelé la
longueur d’enregistrement. Le système de déclenchement détermine le début et l’arrêt de
l’enregistrement.
8
Chapitre I L’oscilloscope
[Link] diagramme
Avec un oscilloscope numérique, les réglages suivants sont à ajuster pour effectuer une
mesure :
I.5.Définitions
[Link]équence et période
Un signal répétitif a une fréquence. La fréquence est mesurée en hertz (Hz) et est égale au
nombre de fois que le signal se répète lui-même en une seconde (cycles par seconde).
La période est le temps nécessaire pour effectuer un cycle complet. Période et fréquence
sont inverses l’un de l’autre. Donc, par exemple, le signal de la figure I.10 a une fréquence de 3
Hz et une période de 1/3 seconde. [2]
9
Chapitre I L’oscilloscope
[Link] passante
La spécification de la bande passante indique la fréquence maximale à laquelle
l’oscilloscope mesure correctement un signal avec le minimum d’aberration. Par convention, la
bande passante indique la fréquence pour laquelle le signal affiché est réduit à 70,7 % de
l’amplitude crête-à-crête appliquée à l’entrée de l’oscilloscope (cette atténuation de 70,7 % est
appelée la atténuation à - 3 dB, un terme basé sur une échelle logarithmique). [2]
[Link] de montée
Le temps de montée est un autre moyen de décrire la fréquence utile d’un oscilloscope.
Le temps de montée peut être une considération de la performance plus appropriée quand il faut
mesurer des signaux impulsionnels. Un oscilloscope ne peut pas afficher correctement un temps
de montée plus rapide que celui spécifié comme le temps de montée de l’oscilloscope.
Afin de réaliser des mesures avec le maximum de précision, il convient de tenir compte
du temps de montée global mesuré :
( é) = ( )+ ( )+ ( )
[Link]é verticale
La sensibilité verticale indique de combien l’amplificateur vertical peut amplifier un
signal faible. La sensibilité verticale s’exprime habituellement en millivolts (mV) par division.
La plus petite tension qu’un oscilloscope d’usage général peut détecter est typiquement
d’environ 2 mV par division. Les facteurs d’atténuation sont généralement en séquence 1-2-5.
Une possibilité d’ajustage de la sensibilité continûment variable existe sur les instruments. [2]
I.5.5.Résolution verticale
La résolution verticale est limitée d’une part par l’épaisseur de la trace et d’autre part par
la sensibilité de l’amplificateur sur un oscilloscope analogique.
10
Chapitre I L’oscilloscope
Exemple : pour une sensibilité de 1 mV/div, chaque division principale étant subdivisée
en 5 petites divisions, l’utilisateur peut apprécier 1/2 division soit : 0,1 mV.
Pour les oscilloscopes numériques, la résolution est liée au nombre de bits du CAN.
Exemple : soit un CAN de 8 bits. La spécification s’exprime pour 8 bits sur la hauteur
de l’écran, soit 256 niveaux pleine échelle (10 divisions verticales), donc 25 niveaux par division
verticale. Pour 10 mV/div, la résolution est de : 10 mV/25 = 400 mV.
Divers procédés numériques permettent d’accroître la résolution verticale. Ils sont décrits
ci-après. [2]
[Link]édance d’entrée
L’impédance d’entrée des appareils dont la bande passante est inférieure à 200 MHz est
de l’ordre de 10MΩ en parallèle avec une capacité de 15 pF.
[Link]
L’utilisateur a le choix de filtrer ou non le signal entrant. Il existe trois types de couplage
d’entrée : AC, DC, GND.
En AC (alternatif), la composante continue du signal, bloquée par une capacité, n’est pas
transmise.
En DC (continu), toutes les composantes du signal sont transmises.
En GND (masse), l’entrée est reliée à la masse de l’instrument pour servir de référence
aux mesures d’amplitude. [2]
[Link] de balayage
Cette spécification indique la vitesse à laquelle le spot se déplace en travers de l’écran
pour les oscilloscopes analogiques. Elle indique la fenêtre temporelle d’acquisition pour les
oscilloscopes numériques.
11
Chapitre I L’oscilloscope
[Link] de temps
Les oscilloscopes disposent en général de deux bases de temps : la principale (A) et la
retardée (B). Le but de cette technique est de permettre de sélectionner un détail dans le signal
visualisé (à une vitesse A) pour ensuite le dilater sur tout l’écran à une vitesse B>A. [2]
La fonctionnalité reste identique sur les oscilloscopes numériques, bien que le procédé
employé soit différent. La mémorisation du signal apporte en outre de nombreuses possibilités,
telles que pré et post déclenchement, retards en événement.
[Link]écision du gain
La précision du gain est relative à celle de l’amplificateur vertical. Elle s’exprime
habituellement comme un pourcentage d’erreur. Elle est généralement de l’ordre de 1 à 2 %. [2]
Elle est exprimée en ppm (partie par million) de l’horloge sur les oscilloscopes
numériques. [2]
[Link]équence d’échantillonnage
La fréquence d’échantillonnage sur les oscilloscopes numériques indique le nombre
d’échantillons par seconde que le CAN (et par conséquent l’oscilloscope) peut acquérir.
Cette fréquence est exprimée habituellement en méga échantillons par seconde (Mé/s soit
6
10 échantillons par seconde). Plus elle est rapide, plus l’oscilloscope peut représenter
correctement les détails dans un signal haute fréquence. La fréquence d’échantillonnage
minimum peut être aussi primordiale pour regarder des signaux changeant lentement sur de
longues périodes de temps.
[Link]
On vient de voir le fonctionnement de l’oscilloscope analogique avec les différents blocs.
L’oscilloscope numérique ne diffère de l’analogique que par se système d’acquisition.
Le système d’acquisition utilise le bus universel en série (USB : Universel Serial Bus) qui
à travers lequel les données du signal a affiché sans transmis ainsi que la configuration désirée,
l’importance du bus USB à fais qu’il soit développée dans un chapitre suivant.
13
CHAPITRE
II
Bus universel en série
CHPITRE II : Bus universel en série
1 - Introduction ............................................................................................................................. 15
2 - Normes USB ............................................................................................................................ 15
2.1 - USB 1(Full ou Low speed) ............................................................................................... 15
2.2 - USB 2.0 (High Speed) ...................................................................................................... 15
2.3 - USB 3.0 (Super Speed)..................................................................................................... 16
3 - Connectique ............................................................................................................................. 16
3.1 - Description du Câble USB................................................................................................ 16
3.2 - Composition du câble USB............................................................................................... 17
3.3 - Connecteurs USB.............................................................................................................. 17
3.4 - Brochage ........................................................................................................................... 19
3.5 - Caractéristiques électriques .............................................................................................. 19
4 - Architecture d’un système ....................................................................................................... 22
5 - Les descripteurs ...................................................................................................................... 23
5.1 - Définition d’un descripteur ............................................................................................... 23
5.2 - Rôle des descripteurs ........................................................................................................ 23
5.3 - Les types de descripteur.................................................................................................... 23
6 - Les protocoles USB ................................................................................................................. 25
6.1 - Les champs de paquet USB ordinaires ............................................................................. 26
6.2 - Les types de paquet USB .................................................................................................. 27
7 - Transfert de données ................................................................................................................ 29
7.1 - Transfert en mode Contrôle .............................................................................................. 29
7.2 - Transfert en mode Interrupt .............................................................................................. 29
7.3 - Transfert en mode Isochrone ............................................................................................ 29
7.4 - Transfert en mode Bulk .................................................................................................... 29
8 - PID/VID................................................................................................................................... 29
8.1 - Introduction au Product ID et au Vendor ID .................................................................... 29
8.2 - Normalisation des PID/VID.............................................................................................. 30
9 - Les fichiers INF/SYS............................................................................................................... 29
9.1 - Les fichiers d’extension INF............................................................................................. 30
9.2 - Les drivers .SYS ............................................................................................................... 31
9 - Conclusion ............................................................................................................................... 31
Chapitre II Bus universel en série
[Link]
L'USB est un nouveau type de connectivité sur les machines informatiques, promu par les
principaux constructeurs informatiques et éditeurs de logiciels (Compaq, DEC, IBM, Intel,
Microsoft, NEC, Nortel), doit permettre le raccordement sur une prise unique de plusieurs
équipements divers (imprimante, téléphone, modem, fax, clavier, souris, scanners, écrans...). On
désire ainsi éviter la multiplication actuelle des connecteurs sur les PC. Ce BUS permet la
transmission de données, de la voix et de l'image compressée.
Cette nouvelle technique se doit d'être rapide, bidirectionnelle, synchrone, de faible coût
et l'attachement d'un nouveau périphérique doit être dynamique. De plus la télé alimentation des
équipements est possible. [5]
[Link] USB
On va présenter les 3 normes USB utilisée depuis l’apparition de la norme USB 1, en
1995. La différence entre ces dévires réside dans la vitesse qui augmente d’une norme à un autre,
tout en ajoutant d’autres fonctions comme la fonction Mass Storage. [6]
Pour identifier la vitesse, l’appareil relié au bus USB précise sa vitesse en reliant le fil D+
à 3.3V à travers une résistance de 15KΩ dans le cas de la pleine vitesse. Dans le cas de la basse
vitesse le fil D- a 3.3V à travers résistance 15KΩ. Le logo de l’USB 1 est donné dans la figure
II.1. [7]
15
Chapitre II Bus universel en série
[Link]
La paire de signal destinée au transfert de données D+ et D- et une seconde paire qui peut
être utilisé pour la télé alimentation GND et Vusb. La première paire est non blindée pour les
périphériques lents tels que les claviers, souris fonctionnant à 1.5Mbits/s tandis que caméras,
micro et autres ont recours à une paire de fils torsadée blindée pour atteindre les 12Mbits/s. [9]
Le câble USB (Fig II.4) est un ensemble de deux paires de fils : D+, D- et GND, Vusb.
16
Chapitre II Bus universel en série
[Link] du câble USB
Chaque connecteur dispose de deux fils d’alimentation (Vusb = 5V et GND) et deux fils
destinés au transfert de données (D+ et D-).
Une connexion entre deux PC est aussi possible par l’adjonction d’une interface spéciale
qui déjoue la vigilance du PC maître et transforme le second PC en «esclave» En version Low
Speed le blindage n'est pas obligatoire (ce qui assure une plus grande souplesse de manipulation
en particulier pour une liaison souris). [9]
1 Paire données : torsadée (6..8 cm) (non torsadée toléré si 1.5Mbit/s), 28 AWG
(American Wire Gauge) mini, isolant polyéthylène, Zc = 90 Ω ±15%, atténuation =
38 dB/1000 pieds à 10MHz.
1 Paire alimentation : non torsadée possible, isolant PVC (Polyvinyl chloride ), pour
alim. = 5 V, 0.5A max.
écran : nécessaire si 12Mbit/s ou plus (optionnel si 1.5Mbit/s).
[Link] USB
Il existe deux séries de connecteurs pour le bus USB donnée dans la figure II.6 :
17
Chapitre II Bus universel en série
[Link] série A
Destiné au raccordement montant vers le « Host », l’alimentation est sortante sur le
réceptacle femelle (châssis). 4 contacts à plat (D+ et D- au milieu et plus courts). [10]
[Link] série B
Destiné au raccordement descendant du « Host » sur les périphériques, lorsqu’il y a un
connecteur entrant. L’alimentation est entrante sur le réceptacle. 4 contacts (+v et D- d'un côté,
Gnd et D+ de l'autre). [10]
18
Chapitre II Bus universel en série
II.3.4. Brochage
Le brochage permet de spécifier le signal de chaque fil relié au connecteur (Fig II.7)
comme donné dans le tableau II.1 :
[Link]éristiques électriques
[Link] de D+ et D-
Etat repos : D+= et D-= (inverse si 1,5Mbit/s).
19
Chapitre II Bus universel en série
[Link] sur D+ et D-
II.3.5.c.Récepteur sur D+ et D-
Mode différentiel (réception de données) : Sensibilité > 200mV pour signal entre 0,8v et
2,5v.
Mode commun (D+ ou D- par rapport à la masse) : Seuil = niveau TTL (Transistor–
transistor logic) (0,8..2V) avec hystérésis conseillé. [5]
[Link]
Port générateur = 5V (4.75..5.25V) / 0,5A. Un HUB alimenté doit pouvoir fournir 0,5A
sur ses ports (pas forcement tous en même temps). Un HUB télé alimenté doit pouvoir fournir
100mA sur ses ports avec une perte maxi de 350mV. [5]
20
Chapitre II Bus universel en série
[Link] signalisation
Les lignes de données D+ et D- fonctionnent en mode différentiel. Les circuits doivent
avoir un état haut impédance; les lignes doivent résister à un court-circuit avec Vusb ou la masse.
Les ports des hubs doivent être compatible faible et pleine vitesse. Dans un appareil pleine
vitesse, la ligne D+ est ramenée à une tension comprise entre 3 et 3,6 V par une résistance de
1,5kΩ alors qu'en basse vitesse c'est la ligne D- qui est ainsi polarisée. On définit sur les lignes
de données deux états : J et K. En basse vitesse :
En pleine vitesse c'est le contraire. Un état J avec certaines valeurs minimales et maximales de
tension indique un état "inoccupé". De plus il existe un état où D+ et D- sont au potentiel bas
appelé SE0. L'état SE0 pendant plus de 10 ms indique un reset, il est émis vers un appareil 100
ms après sa connexion. Dès qu'un appareil voit le signal de reset pendant plus de 2,5
microsecondes, il doit faire son reset et le terminer avant la fin du signal (10 ms).
La polarisation de l'une des deux lignes permet de détecter la connexion d'un appareil et
sa vitesse. Les appareils à haut vitesse doivent pouvoir démarrer en pleine vitesse.
Le mode "veille" doit être supporté par tout appareil. Ce mode doit être activé dès qu'il
n'y a plus d'activité sur le bus depuis plus de 3 ms; c'est à dire que les trames ne contiennent
aucun paquet. (Rappel : une trame dure 1ms) Pendant le mode veille la consommation doit être
réduite mais néanmoins la polarisation de D+ ou de D- doit être maintenue. La moindre activité
sur le bus doit réveiller l'appareil. Un appareil peut avoir une fonction "réveil" destinée à avertir
l'hôte par l'intermédiaire du hub.
L'encodage des donnés se fait selon la méthode NRZI (Fig II.11). Un "1" est représenté
par l'absence de changement d'état et un "0" par un changement d'état.
21
Chapitre II Bus universel en série
[Link] d’un système
Les connexions se font point à point. Tous les appareils ont une connexion amont vers
l'hôte. Il est possible de connecter jusqu'à 127 périphériques simultanément.
Les ports USB supportent le Hot Plug & Play, c'est à dire qu'un périphérique peut être
connecté et reconnu, sans redémarrage de l'ordinateur. Les périphériques qui disposent
actuellement de ce type de port sont les imprimantes, scanners, webcams... Ils peuvent être
connectés les uns à la suite des autres (en bus) ou reliés à un Hub (en étoile), comme le laisse
entrevoir son logo générique (Fig II.12). [12]
Par exemple la figure II.13 clavier peut contenir un Hub qui est connecté à l’ordinateur.
La souris et d'autres appareils tels qu'un caméscope numérique peuvent être branchés facilement
au dos du clavier. Les moniteurs ne sont que d'autres périphériques sur une longue liste
d'appareils qui comportent communément des Hubs intégrés.
22
Chapitre II Bus universel en série
[Link] descripteurs
Lorsque l’on connecte ou déconnecte un périphérique, celui-ci fournit à l’hôte toutes les
informations nécessaires à son identification, c’est à dire ces descripteurs. Ils sont très utiles pour
l’hôte puisqu’il peut, de ce fait, connaître les caractéristiques périphériques comme par exemple
la puissance utile, le type de périphérique, le dispositif de transfert des données, le module de
gestion … etc.
Généralement, dans la plupart des périphériques, toutes ces informations sont stockées
dans la ROM des composants, et lors de l’énumération, le périphérique envoi simplement ce
fichier pour se faire connaître. [9]
Type Valeur
Appareil 1
Configuration 2
Chaine de caractères 3
Interface 4
Terminaison 5
Autre configuration de vitesse 7
Interface de puissance 8
Classe 21
Tab II.2: List des types de descripteur USB. [7]
23
Chapitre II Bus universel en série
[Link] d'appareil
Chaque appareil doit avoir un numéro de fabriquant (VID) et un numéro de produit
(PID) Le VID est vendu très cher par le trust USB. Les fabricants de CI (Circuit Intégré). ont
souvent un VID et certains peuvent fournir un PID à utiliser avec leur VID. Tous les appareils ne
sont pas rattachés à une classe. List des champs de descripteur d'appareil donné dans le tableau
II.3 :
[Link] de configuration
List des champs de descripteur de configuration donné dans le tableau II.4 :
24
Chapitre II Bus universel en série
[Link] d'interface
List des champs de descripteur d'interface donné dans le tableau II.5 :
Champ Taille
Description
bLength 1 Taille du descripteur en octets
bDescriptorType 1 Type du descripteur = 4
bEndpointAddress 1 Adresse de cette terminaison
Bits 0 à 3 : Numéro de terminaison
Bit 7 : direction (O=OUT, 1=IN) - Ignoré pour canal de contrôle
bmAttributes 1 Propriétés de la terminaison.
Bit 0 et 1 : Type de transfert
- 00 Contrôle
- 01 Isochrone
- 10 Bloc
- 11 Interruption
Bit 2 à 5 : Paramètres pour transfert isochrone
wMaxPacketSize 2 Taille maximum des paquets de données en octets
bInterval 1 Intervalle entre chaque demande de données de l'hôte en nombre de
trames.
- Transfert isochrone pleine et haute vitesse : 1 à 16
- Transfert par interruption pleine et basse vitesse : 1 à 255
- Transfert par interruption haute vitesse : 1 à 16
- Transfert en bloc OUT haute vitesse : 1 à 255
Tab II.6: List des champs de descripteur de terminaison. [7]
25
Chapitre II Bus universel en série
Chaque transaction USB consiste d'un:
Paquet Jeton (Token) (en tête définissant ce qu'il attend par la suite)
Paquet DATA optionnel (contenant la " charge utile " (payload))
Paquet d'Etat (utilisé pour valider les transactions et pour fournir des moyens de
corrections d'erreurs).
Comme nous en avons déjà discuté, l'USB est un bus géré par l'hôte. L'hôte initie toutes
les transactions. Le premier paquet, aussi appelé Jeton est produit par l'hôte pour décrire ce qui
va suivre et si la transaction de données sera en lecture ou écriture et ce que sera l'adresse de
l'appareil et la terminaison désignée. Le paquet suivant est généralement un paquet de données
transportant la " charge utile " et est suivi par un paquet " poignée de mains " (handShaking),
signalant si les données ou le jeton ont été reçus correctement ou si la terminaison est bloquée,
ou n'est pas disponible pour accepter de données. [9]
Sync : Tous les paquets doivent commencer avec un champ Sync. Le champ Sync fait de
8 bits dans le cas de la basse vitesse (Low speed) et pleine vitesse (Full Speed) ou 32 bits
pour la haute vitesse (High Speed) est utilisé pour synchroniser l'horloge du récepteur
avec celle de l'émetteur / récepteur. Les 2 derniers bits indiquent l'endroit où le champ
PID commence.
PID : PID (Tab II.7) signifie Paquet ID. Ce champ est utilisé pour identifier le type de
paquet qui est envoyé. Le tableau suivant montre les valeurs possibles.
ADDR : Le champ adresse détermine à quel appareil le paquet est destiné. Sa longueur
de 7bits, lui permet de supporter 127 appareils. L'adresse 0 n'est pas valide, tant qu'un
appareil qui n'a pas encore d'adresse attribuée, doit répondre aux paquets envoyés
d'adresse 0.
ENDP : Le champ de terminaison est composé de 4 bits, autorisant 16 terminaisons
possibles. Les appareils bas vitesse, toutefois peuvent seulement avoir 2 terminaisons
additionnelles au-dessus du canal de communication par défaut (4 terminaisons
maximales).
CRC : Les Contrôles à Redondance Cyclique sont exécutés sur les données à l'intérieur
du paquet de charge utile. Tous les paquets jetons ont un CRC de 5 bits tandis que les
paquets de données ont un CRC de 16 bits.
EOP : Fin de Paquet. Signalé par une sortie unique zéro (SE0) pendant une durée
approximative de 2 bits suivie par un " J " d'une durée de 1 bit.
26
Chapitre II Bus universel en série
List des différents PIDs donné dans le tableau II.7 :
27
Chapitre II Bus universel en série
[Link] paquets de données
Il y a 2 sortes de paquets de données, chacun étant capable de transmettre plus de 1024
octets de données.
Data0
Data1
Le mode haute vitesse définit 2 autres PIDs de données, DATA2 et MDATA. Les
paquets de données ont le format suivant :
La taille maximale de données " charge utile " pour les appareils basse vitesse est de 8
octets.
La taille maximale de données " charge utile " pour les appareils pleine vitesse est de
1023 octets.
La taille maximale de données " charge utile " pour les appareils haute vitesse est de 1024
octets.
Les données doivent être envoyées en multiple d'octets.
28
Chapitre II Bus universel en série
[Link] de données
[Link]/VID
29
Chapitre II Bus universel en série
Chaque fabricant possède un VID et c’est grâce à cette valeur codée sur 16 bits que l’on
peut retrouver le fabricant du composant. Chaque fabricant ayant plusieurs produits à leurs actifs,
ils les différencient avec le PID codé également sur 16bits.
L'allocation des PID, contrairement aux VID, est faite par le constructeur du dispositif. Il
n'y a aucune contrainte administrative de la part du forum USB-IF. [9]
Il existe un site répertoriant la longue liste des VIDs et des constructeurs correspondant. Il est
même possible de connaître tous les PIDs des mêmes constructeurs, c’est à dire qu’il est possible
de retrouver le modèle exact du périphérique. Voici le site, il pourra vous être utile un jour…
[Link] Un petit moteur de recherche vous permettra de trouver
rapidement le constructeur en vous réorientant vers son site. Ce site répertorie les PID/VID du
bus PCI (Peripheral Component Interconnect). En ce qui concerne l’USB il faut s’adresser au
forum. [9]
II.9.1.a.Définition
L’abréviation INF provient du mot « Information » et comme son nom l’indique,
renseigne sur les informations de configuration de périphérique utile pour le Plug & Play.
Les points INF ne sont pas seulement utilisés pour les composants USB, les périphériques
PCI l’utilisent également. Un fichier INF est un fichier texte, vous pouvez l’éditer avec
n’importe quel éditeur de texte standard. [9]
Un fichier INF est organisé en plusieurs sections. Chaque section (il en existe une
vingtaine) possède une fonction particulière. Ces fonctions vont de la simple manipulation de
fichiers jusqu'à la modification d'entrées dans la base de registres en passant par les fichiers INI.
30
Chapitre II Bus universel en série
[Link] drivers .SYS
Par contre, contrairement au fichier INF, il n’est pas si évident de concevoir un WDM
driver. (Windows Driver Model). Il nécessite des compétences en programmation C et des
connaissances sur la communication entre Windows, le hardware et les applications.
Par contre, les connaisseurs disent qu’il est beaucoup plus facile d’écrire un driver USB
qu’un driver ISA.
Dans la nature, un fichier SYS est un fichier compilé et il est impossible de le modifier
pour l’adapter à un autre type de périphérique. Donc si vous voulez débuter dans le
développement de périphérique USB, assurez-vous que vous disposez d’un tel fichier.
Sans celui-ci, le composant ne sera pas installé et ne pourra pas communiquer avec le PC.
Bien sûr, dans la plupart des cas, si le périphérique à installer est standard, un point SYS par
défaut dans ‘‘C:/Windows/SYSTEM32/Drivers’’ résout bien les problèmes. Il se peut par contre
qu’il ne soit pas optimum mais vous donnera une performance suffisante pour une première
tentative. [9]
[Link]
Dans cette partie, nous avons étudié le bus USB et sa norme, comme nous avons parlé
aussi le l'importance et l'avantage du bus USB en comparaison avec le reste.
Dans ce projet nous allons utiliser le bus USB du pic, c'est pour ça nous allons passer à
la section consacré au pic et tout ce qui le concerne
31
CHAPITRE
III
Le microcontrôleur (PIC)
CHPITRE III : Le microcontrôleur (PIC)
1 - Introduction ............................................................................................................................. 33
2 - Le Microcontrôleur (PIC) ........................................................................................................ 33
2.1 - Définition d’un PIC .......................................................................................................... 33
2.2 - Classification des PICs de Microchip............................................................................... 33
2.3 - Identification d’un Pic ...................................................................................................... 33
2.4 - Le choix d’un PIC............................................................................................................. 34
2.5 - Caractéristiques principales du pic 18F4550 .................................................................... 35
3 - Brochage du 18F4550 .............................................................................................................. 35
4 - Architecture générale du PIC................................................................................................... 37
4.1 - Architecture interne du PIC 18F4550 ................................................................................ 37
4.2 - Les horloges et le Reset ..................................................................................................... 38
4.3 - Les timers .......................................................................................................................... 40
4.4 - Les convertisseurs analogiques/numériques...................................................................... 40
4.5 - Les interruptions et leur gestion ........................................................................................ 47
4.6 - Le bus USB........................................................................................................................ 49
5 - Conclusion .............................................................................................................................. 52
Chapitre III Le microcontrôleur (PIC)
[Link]
Les microcontrôleurs sont aujourd'hui implantés dans la plupart des applications grand
public ou professionnelles, il en existe plusieurs familles. [13]
33
Chapitre III Le microcontrôleur (PIC)
CR : PROM.
F : flash.
yy : constitue la référence du PIC.
zz : indiquant la fréquence d’horloge maximale que le PIC peut recevoir
(Vitesse maximum du quartz).
Donc, un pic 18F4550 est un PIC High-End donc la mémoire programme est de type
FLASH, de Identificateur. 45 et capable d’accepter une fréquence d’horloge de 50MHz.
Notez que les PICs sont des composants statiques, c’est à dire que la fréquence
d’horloge peut être abaissée jusque l’arrêt complet sans perte de données et sans
dysfonctionnement. [13][15]
Pour notre projet, on a choisis d’utiliser le PIC 18F4550 à cause de son prix raisonnable
et la facilité de programmation, aussi, le nombre d’entrées/sorties est suffisant pour notre
application on a besoin ainsi de convertisseurs analogique-numérique avec une mémoire, ainsi
qu’un module USB.[15]
34
Chapitre III Le microcontrôleur (PIC)
[Link]éristiques principales du pic 18F4550
Les caractéristiques principales (Tab III.1) du 18F4550 sont résumées comme suit :
Caractéristiques Valeur/Type
Type de mémoire de programme Flash
Mémoire de programme (KB) 32
EEPROM données (octets) 256
Vitesse du processeur (MIPS) 12
RAM octets 2,048
EEPROM données (octets) 256
Périphériques de communication numérique 1-A/E/USART, 1-MSSP(SPI/I2C)
Capture/Compare/ Périphériques PWM 1 CCP, 1 ECCP
Timers 1 x 8-bit, 3 x 16-bit
CAN 13 canaux, 10-bit
Comparateurs 2
USB (ch, speed, compliance) 1, Full Speed, USB 2.0
Température (C) -40 to 85
Tension de fonctionnement (V) 2 to 5.5
Nombre de broches 40
Tab III.1: Caractéristiques principales du pic 18F4550. [15]
[Link] du 18F4550
La figure III.1 résume le brochage du PIC 18F4550 :
35
Chapitre III Le microcontrôleur (PIC)
Ces broches sont définies comme suit :
36
Chapitre III Le microcontrôleur (PIC)
[Link] générale du PIC
37
Chapitre III Le microcontrôleur (PIC)
[Link] horloges et le Reset
[Link]
L’horloge va permettre de cadencer tous les échanges internes et externes du PIC (Fig
III.4). En cas de problème sur l’horloge, le programme s’arrête. Il existe sur certains PIC une
possibilité de basculement sur une deuxième horloge externe ou interne. [16]
Le rôle des bits FOSC0 à FOSC3pour le 18F4550 (x= 0 ou 1) est donné dans le tableau III.2 :
38
Chapitre III Le microcontrôleur (PIC)
Fig III.4: Synoptique de la circuiterie d’horloge sur un PIC 18F4550 gérant l’USB. [15]
[Link]
Le Reset d’un microcontrôleur peut être déclenché selon plusieurs évènements. Ces
évènements peuvent être d’origine physique, tel que l’appui sur le bouton Reset du montage
(broche ) ou encore à cause d’une baisse de tension d’alimentation. Un Reset peut
également être déclenché suite à un état logiciel tel que le débordement (ou saturation) de la pile
(PIC 18). [16]
39
Chapitre III Le microcontrôleur (PIC)
Une atteinte du seuil mini de l’alimentation (BOR).
Une mise sous tension (POR).
La figure III.5 résumé la circuiterie de la fonction Reset qui peut être déclenché dans les
6 cas possibles :
[Link] timers
Le timer est un élément important dans un PIC. En effet, cette ressource permettra de
réaliser de nombreuses fonctions, telle que la temporisation, la génération de signaux PWM
(appelée également Modulation de Largeur d'Impulsion, MLI), ou encore les modes Compare ou
Capture. Selon le type de PIC rencontre, on trouvera un certain nombre de timers qui seront pour
certains associes a des ressources internes du PIC. Un timer est en fait un compteur
s'incrémentant au rythme d'une horloge, et ceci en ayant la possibilité de prépositionner une
valeur de départ. Certains timers pourront fonctionner en mode 8 bits, 16 bits ou 32 bits. [16]
Lorsqu’une conversion est lancée, un bit nommé GO/DONE du registre ADCON0 est
forcé à «1». Dès que la conversion en cours est terminée, ce bit repasse à «0». On réalise donc
une boucle d’attente tant que le conversion n’est pas échue. Notez également que le bit ADON
du même registre permet d’alimenter la convertisseur en 5V : si ce bit est à «0», alors le
convertisseur no consomme aucun courant. Le résultat de la conversion sera stocké dans deux
registres 8 bits nommés ADRESH et ADRESL. Le résultat étant sur 10bits, il faudra choisir
(ajustement à droit ou ajustement à gauche) les 10 bits parmi les 16 contenus dans ces deux
registres, le bit ADFM du registre de configuration ADCON2 aura ce rôle. [16]
41
Chapitre III Le microcontrôleur (PIC)
Les registres associés :
Registre ADCON0 :
42
Chapitre III Le microcontrôleur (PIC)
Registre ADCON1 :
Le registre ADCON1 permet de configurer l’état des entrées (analogique ou TOR), mais
également de sélectionner les tensions qui serviront de référence au CAN.
PCFG3: AN12 AN11 AN10 AN9 AN8 AN7 AN6 AN5 AN4 AN3 AN2 AN1 AN0
PCFG0
0000 A A A A A A A A A A A A A
0001 A A A A A A A A A A A A A
0010 A A A A A A A A A A A A A
0011 D A A A A A A A A A A A A
0100 D D A A A A A A A A A A A
0101 D D D A A A A A A A A A A
0110 D D D D A A A A A A A A A
0111 D D D D D A A A A A A A A
1000 D D D D D D A A A A A A A
1001 D D D D D D D A A A A A A
1010 D D D D D D D D A A A A A
1011 D D D D D D D D D A A A A
1100 D D D D D D D D D D A A A
1101 D D D D D D D D D D D A A
1110 D D D D D D D D D D D D A
1111 D D D D D D D D D D D D D
Tab III.3: Bits de contrôle de configuration de port A/D. [15]
43
Chapitre III Le microcontrôleur (PIC)
Registre ADCON2 :
44
Chapitre III Le microcontrôleur (PIC)
Registres ADRESH et ADRESL :
Le Synoptique général du CAN de PIC 18F4550 est donné dans la (Fig III.6) :
45
Chapitre III Le microcontrôleur (PIC)
La fréquence d’échantillonnage:
2 TOSC,
4 TOSC,
8 TOSC,
16 TOSC,
32 TOSC,
64 TOSC.
1 1
= = ≈ 20.833
48
800
≈ = ≈ 38.4
20.833
Puisque 32 < 38.4 < 64 , on a choisi 64 TOSC. Le TAD qu’on doit prendre en compte
en alors :
= 64. = 1.33 μs
Une deuxième grandeur doit être calculée, le temps d'acquisition Tacq, c’est le temps de
lecture de l’échantillon analogique a converti en valeur numérique. Ce temps d’acquisition au
TAD calculé précédemment, par un facteur.
46
Chapitre III Le microcontrôleur (PIC)
Le Tacq minimal est de 2.5 μs (d’après datasheet) on a prend :
= 2. = 2.66 µs
= + + = 17.5 µs
1
= = 57.15
III.4.5.a.L’interruption
Une interruption est un évènement extérieur au programme déclenchée par différentes
causes, par exemple un changement d'état sur une broche d’entrée ou encore un débordement
d'un registre. Souvent, le mot Interruption est remplacé par IT. Lorsque I'IT est effective, le
programme est dirigé vers une adresse spécifique de la mémoire du microcontrôleur et traite
alors un sous-programme dit «prioritaire». Lorsque le sous-programme d'interruption est
terminé, le PC est de nouveau chargé avec la valeur de l’adresse de retour, adresse qui
correspond en fait à l'instruction suivante à exécuter par le programme au moment où l'IT s'est
déclenchée. Cet évènement extérieur n'est pas synchronisé avec le programme principal, il peut
donc survenir à n’importe quel moment, c’est pour cette raison que l'on dira qu'une interruption
est asynchrone.
47
Chapitre III Le microcontrôleur (PIC)
Sur les microcontrôleurs de la série 18F, il existe deux niveaux de priorité pour les
interruptions, on parlera dans ce cas de niveau d'interruption avec gestion des priorités selon la
nature de l'évènement qui survient. Chaque source d'IT pourra être déclarée en haute ou basse
priorité, Un bit permet d'activer ou non le mode hiérarchique sur les IT. [16]
48
Chapitre III Le microcontrôleur (PIC)
Fig III.8: Synoptique général des interruptions sur PIC 18F4550. [15]
49
Chapitre III Le microcontrôleur (PIC)
[Link] Microcontrôleurs PIC et USB
Des PIC de la famille 16 (PIC 16F745-16F765 par exemple) gèrent le bus USB1,
d'autres PIC de la famille 18F, tel que le 18F4550, gèrent le bus USB2.
Les broches D+ et D- permettent l'interfaçage avec le bus USB. Cornrne nous l‘avons
déjà mentionné, des résistances de pull-up internes permettent la configuration du PIC en tant
que périphérique basse ou haute vitesse et également la détection du branchement d'un
périphérique sur le bus (Fig III.10). Ces résistances sont pilotées par deux bits de configuration
(FSEN et UPUEN du registre UCFG). Dans le cas d'utilisation de résistances externes, les
résistances de pull-up internes doivent bien sûr être désactivées. Un régulateur interne de 3,3Vest
également implémenté, Celui-ci est actif selon la configuration du bit VREGEN (registre
CONFIG2L). Dans le cas d'une alimentation 3,3V externe, le régulateur interne devra être
désactive.
Un noyau de gestion du bus nomme USB SIE (Serial Interface Engine) permet de gérer
la supervision du fonctionnement du BUS. Cette interface matérielle est chargée d’assurer la
partie hard du bus tels que les adaptations d1 niveau ou encore le décodage et le stockage des
informations en mémoire partagée. [15]
50
Chapitre III Le microcontrôleur (PIC)
Le registre UCON (Usb CONtrol register) contient les bits nécessaires au contrôle du
comportement du module pendant une transaction. Le bit USBEN permet la mise en service ou
non du module USB.
Le registre US TAT (Usb STATus register) contient les informations sur la dernière
transaction du SIE (end point concerné, direction de l'échange, etc.).
Le registre UADDR (Usb ADDRess register) contient l'adresse USB du PIC codée sur
7 bits (0 à 127), cette adresse est égale à « 0 » au Reset. Ce registre est configure pendant la
phase d'énumération durant laquelle le host attribuera une adresse au périphérique.
51
Chapitre III Le microcontrôleur (PIC)
Les registres UFRML et UFRMH (Usb FRaMe number register, L = low, H = high)
sont en lecture seule, ils contiennent le numéro de la dernière trame du type SOP. Le maitre émet
comme nous l'avons déjà précise une trame nommée SOF (Start Of Frame) toutes les 1 ms pour
la version USB1 et toutes les 125 us pour la version USB2. Cette trame permet la
synchronisation des échanges et comporte donc un champ Frame Number codé sur 11 bits qui
sera logé dans les deux registres UFRM. Les 3 bits de poids fort du numéro de frame sont logés
dans UFRMH.
Les registres UEPO à UEP15 (Usb End Point control) permettent la configuration des
16 terminaisons (end points) pour le mode USB2. [16]
[Link]
Les éléments qui nous intéresse le plus sont le convertisseur CAN et le bus USB. En
effets le signal analogique à visualiser doit être numérisé, puis transmis à travers le bus USB vers
le PC.
52
CHAPITRE
IV
Réalisation pratique
CHPITRE IV : Réalisation pratique
1 - Introduction ............................................................................................................................. 54
2 - Programmateur PIC ................................................................................................................. 54
2.1 - Les signaux ICSP.............................................................................................................. 54
2.2 - Compilateur "MikroC PRO" pour PIC ............................................................................. 55
2.3 - Logiciel de programmation............................................................................................... 56
3 - Partie Hard ............................................................................................................................... 57
3.1 - Circuit d’entrée ................................................................................................................. 58
3.2 - Circuit de sélection de calibre........................................................................................... 60
3.3 - Circuit d’acquisition et de communication ....................................................................... 61
3.4 - Circuit d’alimentation ....................................................................................................... 66
4 - Partie Soft ................................................................................................................................ 67
5 - Conclusion ............................................................................................................................... 69
Chapitre IV Réalisation pratique
[Link]
L'oscilloscope numérique portatif qu’on va réaliser est un ensemble de circuits liées à
PIC. Le PIC exécute les ordres du PC à travers le bus USB.
Dans ce chapitre nous allons expliquer toutes les étapes précédentes pour élaborer ce
projet, commençant par le hard et passant au soft.
[Link] PIC
La programmation d’un PIC est l’introduction d’un programme dans sa mémoire
Flash. Ce programme à introduire sera exécuté par le PIC lorsqu’il sera en fonctionnement.
Tous les éléments utilisés dans la programmation du PIC seront être détaillés
54
Chapitre IV Réalisation pratique
Les tableaux (Tab IV.1 et Tab IV.2) suivants présentent la connexion du PIC au
connecteur ICSP (In-circuit Serial Programming) et la connexion des broches du RS232 :
ICSP 18F4550
1 VPP 1 MCLR/VPP/RE3
2 VDD 32 VDD
3 GND 31 VSS
4 PGD 40 RB7/KBI3/PGD
5 PGC 39 RB6/KBI2/PGC
Tab IV.1: Connexion du PIC au connecteur ICSP. [17]
1. GND : tension de référence (0V) pour tous les signaux mais une négative alimentation
pour le PIC.
2. Vdd : C’est l’alimentation positive du PIC.
3. Vpp : Tension en mode programmation. Elle doit être connectée à la broche MCLR.
L’ordre de grandeur de cette tension diffère d’un microcontrôleur à un autre. Elle vaut
3.3V pour le PIC utilisée dans ce projet (18F4550).
4. PGC : Le transfert de donnée se fait au front descendant du signal PGC qui est la ligne
d’horloge de l’interface série.
5. PGD : Cette ligne de donnée est bidirectionnelle et varié de GND à Vdd. Un bit est
transféré à chaque front descendant de PGC.
55
Chapitre IV Réalisation pratique
RS485, Bus CAN, cartes compact Flash, signaux PWM (Pulse-Width Modulation), afficheurs
LCD et 7 segments...) en font un outils de développement incontournable et puissant. Il est
conçu pour fournir les solutions les plus faciles que possibles pour des applications se
développant pour les systèmes à microcontrôleur. Il contient un large ensemble de bibliothèques
de matériel, de composant et la documentation complète.
[Link] de programmation :
Il existe plusieurs logiciels de programmation des PIC : WinPic PICPgm, Mikroc Prog
…etc.
On a choisi PICPgm (Fig IV.3) parce qu’il possède quelques avantages comme la
détection automatique de la présence de programmateur et de PIC.
56
Chapitre IV Réalisation pratique
[Link] Hard
Comme tout oscilloscope commercial, mon oscilloscope est composé des éléments
suivants :
57
Chapitre IV Réalisation pratique
[Link] d’entrée
Le signal analogique à convertir est tout d’abord passé à travers un circuit de protection
(Fig IV.5) contenant une résistance fusible R11 est une deuxième résistance R12 pour limiter le
courant dans les diodes. Le rôle des diodes Zener et diode normal est de limiter la tension de
fonctionnement de l’oscilloscope à ±25V. La tension est par la suite et abaissé à l’aide d’un
circuit atténuateur (Fig IV.6).
2
− −2
< = 11
11 + 12
IV.3.1.b.L’atténuateur BF
C’est un diviseur de tension simple, mais il détermine la résistance d’entrée de
l’oscilloscope :
= 21 + 22 = 100 + 900 =1
58
Chapitre IV Réalisation pratique
22
= =
21 + 22 10
59
Chapitre IV Réalisation pratique
J4 mode
00 DC
01 AC
10 GND
Tab IV.3: Les états de fonctionnement du circuit de couplage.
Le calibre est choisi selon la résistance sélectionnée par le multiplexeur analogique dont
la valeur détermine le gain de l’amplificateur AOP43. La table de fonctionnement (Tab IV.4)
donne les états possibles des entrées d’adressage du multiplexeur utilisé. [19]
45 49
4 =( + + ) 3
45 45 45
60
Chapitre IV Réalisation pratique
4 = 1+ +1 3 = 2+ 3
45 45
J2
00 0 2.
01 10.
10 + 50.
11 + + 250.
Tab IV.4: Les états de fonctionnement du calibre.
62
Chapitre IV Réalisation pratique
IV.3.3.b.L’activation de module USB
La figure IV.11 présente l’organigramme d’activation de Module USB du PIC. Le
programme d'activation du module USB nécessite d'abord une confirmation de la connexion
avec le PC, cette confirmation se fait à travers le drapeau USBIF. Après la confirmation se
termine la lecture de la RAM USB puis la transmission du descripteur USB. Le code de ce
dernier est donné dans l’annexe I. finalement, le périphérique sera confirmé et identifié par
l'ordinateur.
Le drapeau USBIF (USBIF) indique la présence d’un évènement lié au bus USB. La
figure IV.12 représente les diffèrent drapeaux d’interruption USB qui générant le drapeau final
USBIF. Pour plus de détail sur les interruptions USB voir le Datasheet du PIC18F4550. [15]
63
Chapitre IV Réalisation pratique
64
Chapitre IV Réalisation pratique
IV.3.3.d.L’organigramme du trigger
La figure IV.14 présente l’organigramme du trigger. à travers les configurations reglés
par l'utilisateur, nous connaissons le niveau et le front déclechement. tigger teste le niveau du
signal quand il arrive au niveau visé, le rôle du tigger se termine.
65
Chapitre IV Réalisation pratique
[Link] d’alimentation
Ce circuit comporte un multivibrateur astable NE555, deux circuits clamper et deux
redresseurs simple alternance avec deux capacité de filtrage, une pour la tension positive et
l’autre pour la tension négative.
66
Chapitre IV Réalisation pratique
Dans ce montage (Fig IV.16) le NE555 produit un patch rectangulaire de fréquence
d'environ 100 Hz d’amplitude 5V crête. Cette tension passe par deux circuit clamper dont le rôle
est de restituée la composante continue (±2.5V). Enfin deux circuits de redressement et filtrage
permettent d’obtenir les tensions d’alimentation ±5V.[20][21][22]
[Link] Soft
Pour faciliter le contrôle de l’acquisition des signaux et leurs affichages, on a créé une
interface utilisateur sous l’environnement C#.
67
Chapitre IV Réalisation pratique
68
Chapitre IV Réalisation pratique
[Link]
Dans ce chapitre, nous avons mis en évidence le rôle de tous les blocs d'oscilloscope
que nous avons réalisé, comme nous avons expliqué aussi le rôle de l'interface utilisateur sous
l’environnement C#.
69
Conclusion Générale
L’utilisation des convertisseurs externes mais plus rapide que ceux associés aux
PICs,
La réalisation d’une carte d’acquisition avec un module USB décrit en VHDL et
implémenté dans un circuit FPGA,
L’utilisation de la norme USB 3 Super Speed qui a une vitesse de 4.8 Gbps,
Etendre la gamme de la tension à une valeur plus importante,
Augmenter la résistance d’entrée, ce qui nécessite une impédance d’entrée plus
importante pour les Amplificateurs opérationnels à utiliser.
70
Conclusion Générale
Avec ces propositions, on pense présenter un produit compétitif sur le marché des
oscilloscopes numériques.
71
Bibliographies
i
Annexe
B: Datasheet LM324
ii
Annexe
C: Datasheet 74HC4051
iii
Annexe
D: Datasheet NE555
iv
Annexe
E: Proteus ISIS
SAISIE DE SCHEMA SOUS ISIS :
Cliquez (gauche) sur la librairie concernée, puis cliquez (gauche) 2 fois de suite sur les
composants souhaités, ceux-ci apparaissent alors dans la liste des composants sélectionnés.
v
Annexe
Pour placer un composant, cliquez sur la référence du composant dans la liste des
composants sélectionnés, il apparait alors sur l'écran de contrôle,
vi
Annexe
Choisissez son orientation en activant les touches suivantes, en bas de l'écran à gauche:
Cliquez alors "gauche" dans la zone de travail où vous souhaitez le placer, puis
sélectionnez-le (clic droit), il apparaît alors en surbrillance rouge, enfin éditez-le (clic gauche).
Donnez une référence au composant placé, CI1:A, par exemple, CI1:B pour le suivant... Les
propriétés de votre composants peuvent également apparaître sous forme de texte comme sur
l'écran de droite ci-dessous.
écrans précédents.
Il convient alors de placer tous les composants et tous les autres objets nécessaires au
schéma avant de les éditer, au risque d'en oublier. Il vaut peut-être mieux garder cette option
pour la rectification des erreurs constatées in fine.
vi
i
Annexe
PLACEMENT DES BORNES D'ENTREE, DE SORTIE ET D'ALIMENTATION:
Pour placer une borne, cliquez sur le type de borne souhaitée dans la zone de sélection,
elle apparait alors sur l'écran de contrôle, et ont choisi son orientation en activant les touches
suivantes:
Une fois la borne placée, il faut la sélectionner (clic droit) puis l'éditer (clic gauche), ou
utiliser la touche "Edition instantanée"; l'écran suivant apparait.
vi
ii
Annexe
Référencez chacune des bornes placées, et choisissez l'orientation et la disposition de
cette référence par rapport à la borne.
ix
Annexe
F: Visual C# 2010 Express
Démarrer Visual C# 2010 Express:
Nous allons vérifier que l'installation de Visual C# express a bien fonctionné. Et pour ce
faire, nous allons le démarrer et commencer à prendre en main ce formidable outil de
développement.
Il vous semblera surement très complexe au début mais vous allez voir, si vous suivez
ce tutoriel pas à pas, vous allez apprendre les fonctionnalités indispensables. Elles seront
illustrées par des copies d'écrans vous permettant de plus facilement vous y retrouver. A force
d’utiliser Visual C# express, vous verrez que vous vous sentirez de plus en plus à l’aise et peut-
être oserez-vous aller fouiller dans les menus ?
Commencez par démarrer Visual C# 2010 Express. Le logiciel s’ouvre sur la page de
démarrage de Visual C# 2010 Express :
Créer un projet :
Commençons par créer un nouveau projet en cliquant dans la zone rouge. Cette commande est
également accessible via le menu Fichier > Nouveau > Projet
x
Annexe
Un projet va contenir les éléments de ce que l’on souhaite réaliser. Cela peut être par exemple
une application web, une application Windows, etc …
Le projet est aussi un container de fichiers et notamment dans notre cas de fichiers en langage C#
qui vont permettre de construire ce que l’on souhaite réaliser. Le projet est en fait représenté par
un fichier dont l’extension est .csproj. Son contenu décrit les paramètres de configuration
correspondant à ce que l’on souhaite réaliser et les fichiers qui composent le projet.
Créons donc un nouveau projet. La fenêtre de création de nouveau projet s’ouvre et nous avons
plusieurs possibilités de choix. Nous allons dans un premier temps aller dans Visual C# pour
choisir de créer une Application console.
Ce que nous faisons ici, c’est utiliser ce qu’on appelle un « modèle » (plus couramment
appelé par son équivalent anglais : « template ») de création de projet.
Si vous naviguez à l’intérieur des différents modèles, vous pourrez constater que Visual
C# nous propose des modèles de projets plus ou moins compliqués. Ces modèles sont très utiles
pour démarrer un projet car toute la configuration du projet est déjà faite. Le nombre de modèles
peut être différent en fonction de votre version de Visual Studio ou du nombre de versions
express installées.
xi
Annexe
L’application Console est la forme de projet pouvant produire une application
exécutable la plus simple. Elle permet de réaliser un programme qui va s’exécuter dans la
console noire qui ressemble à une fenêtre ms-dos, pour les dinosaures comme moi qui ont connu
cette époque … A noter que les projets de type « Bibliothèque de classes » permettent de générer
des assemblys de bibliothèques (.dll).
Dans cette console, nous allons pouvoir notamment afficher du texte simple.
Ce type de projet est parfait pour démarrer l’apprentissage du C# car il n’y a besoin que de
savoir comment afficher du texte pour commencer alors que pour réaliser une application
graphique par exemple, il y a beaucoup d’autres choses à savoir.
Visual C# Express crée alors pour nous les fichiers composant une application console
vide, qui utilise le C# comme langage et que nous avons nommé MaPremiereApplication.
xi
i
Annexe
Analyse rapide de l’environnement de développement et du code généré :
Allons dans l’emplacement renseigné (ici c:\users ico\documents\visual studio
2010\Projects), nous pouvons constater que Visual C# Express a créé un répertoire
MaPremiereApplication, c’est le fameux répertoire pour la solution qu’il nous a proposé de
créer.
En l’occurrence, pour l’instant, nous avons un seul projet dans la solution: l’application
MaPremiereApplication, que nous retrouvons dans le sous répertoire MaPremiereApplication et
qui contient notamment le fichier de projet : [Link].
La zone verte numéro 1 contient les différents fichiers ouverts sous la forme d’un
onglet. On voit que par défaut, Visual C# nous a créé et ouvert le fichier [Link].
Dans la zone rouge numéro 2, c’est l’éditeur de code. Il affiche le contenu du fichier
ouvert. Nous voyons des mots que nous ne comprenons pas encore. C’est du code qui a été
xi
ii
Annexe
automatiquement généré par Visual C#. Nous pouvons observer que les mots sont de différentes
couleurs. En effet, l’éditeur Visual C# express possède ce qu’on appelle une coloration
syntaxique, c'est-à-dire que certains mots clés sont colorés d’une couleur différente en fonction
de leur signification ou de leur contexte afin de nous permettre de nous y retrouver plus
facilement.
La zone numéro 3 en violet est l’explorateur de solutions, c’est ici que l’on voit le
contenu de la solution sur laquelle nous travaillons en ce moment. En l’occurrence, il s’agit de la
solution « MaPremiereApplication » qui contient un unique projet « MaPremiereApplication ».
Ce projet contient plusieurs sous éléments :
La zone 4 en brun est la zone contenant les propriétés de ce sur quoi nous travaillons en
ce moment. Ici, nous avons le curseur positionné sur le projet, il n’y a pas beaucoup
d’informations excepté le nom du fichier de projet. Nous aurons l’occasion de revenir sur cette
fenêtre plus tard.
La zone 5 en jaune n’est pas affichée au premier lancement, elle contient la liste des
erreurs, des avertissements et des messages de notre application. Nous verrons comment
l’afficher un peu plus bas.
La zone 6 en noir est la barre d'outils, elle possède plusieurs boutons que nous pourrons
utiliser, notamment pour exécuter notre application.
xi
v
Annexe
G: WinDriver
Créer un nouveau projet “New host driver project”:
Sélectionnez votre carte Plug and Play de la liste des périphériques détectés par DriverWizard.
xv
Annexe
xv
i
Annexe
H: Compilateur "MikroC PRO" pour PIC
L'explorateur de code :
L'explorateur vous permet également de vous donner la liste complète des instructions
ou des touches de racourci permettant d'activer les différentes fonctions du logiciel.
L'éditeur de code :
Extrêmement convivial, l'éditeur du "MikroC PRO" pour PIC dispose d'une multitude
de fonctions qui permettront aussi bien aux utilisateurs novices comme aux professionnels de
travailler très rapidement.
L'assistant de code :
Ce dernier vous permettra après avoir tapé les premières lettres d'une instruction
d'ouvrir une fenêtre en tapant CTRL + ESPACE afin d'obtenir la liste de toutes les instructions
xv
ii
Annexe
commençant par les mêmes lettres. Il vous suffira ensuite de cliquer sur celle qui vous convient
pour l'importer directement dans l'éditeur.
L'assistant de paramètres :
Ce dernier vous permettra après avoir saisie le début d'une fonction nécessitant des
paramètres, d'afficher la syntaxe de ces paramètres (le premier paramètre à écrire s'affiche en
caractères gras). Après avoir saisie ce premier paramètre, le second s'affiche alors à son tours en
caractères gras).
Correcteur automatique :
Ce dernier vous permettra de corriger automatiquement vos erreurs de frappes les plus
courantes. Vous pourrez également ajouter vos propres préférences dans la liste des mots à
reconnaître.
Toujours dans le but d'obtenir une lisibilité maximale de votre programme, il vous est
possible de configurer entièrement les couleurs de chaque partie du listing. Par exemple les
commentaires en "vert", les instructions en "noir", les valeurs numériques en "bleu clair", etc,
etc....
xv
iii
Annexe
I: Descripteur USB
const unsigned int USB_VENDOR_ID = 0x1105;
const unsigned int USB_PRODUCT_ID = 0x1990;
const char USB_SELF_POWER = 0x80; // Self powered 0xC0, 0x80 bus powered
const char USB_MAX_POWER = 50; // Bus power required in units of 2 mA
const char HID_INPUT_REPORT_BYTES = 64;
const char HID_OUTPUT_REPORT_BYTES = 64;
const char USB_TRANSFER_TYPE = 0x03; //0x03 Interrupt
const char EP_IN_INTERVAL = 1;
const char EP_OUT_INTERVAL = 1;
/* Device Descriptor */
const struct {
char bLength; // bLength - Descriptor size in bytes (12h)
char bDescriptorType; // bDescriptorType - The constant DEVICE (01h)
unsigned int bcdUSB; // bcdUSB - USB specification release number (BCD)
char bDeviceClass; // bDeviceClass - Class Code
char bDeviceSubClass; // bDeviceSubClass - Subclass code
char bDeviceProtocol; // bDeviceProtocol - Protocol code
char bMaxPacketSize0; // bMaxPacketSize0 - Maximum packet size for endpoint 0
unsigned int idVendor; // idVendor - Vendor ID
unsigned int idProduct; // idProduct - Product ID
unsigned int bcdDevice; // bcdDevice - Device release number (BCD)
char iManufacturer; // iManufacturer - Index of string descriptor for the
manufacturer
char iProduct; // iProduct - Index of string descriptor for the product.
char iSerialNumber; // iSerialNumber - Index of string descriptor for the serial
number.
char bNumConfigurations; // bNumConfigurations - Number of possible
configurations
} device_dsc = {
0x12, // bLength
0x01, // bDescriptorType
0x0200, // bcdUSB
0x00, // bDeviceClass
0x00, // bDeviceSubClass
0x00, // bDeviceProtocol
8, // bMaxPacketSize0
USB_VENDOR_ID, // idVendor
USB_PRODUCT_ID, // idProduct
0x0001, // bcdDevice
0x01, // iManufacturer
0x02, // iProduct
0x00, // iSerialNumber
0x01 // bNumConfigurations
};
xi
x
Annexe
/* Configuration 1 Descriptor */
const char configDescriptor1[]= {
// Configuration Descriptor
0x09, // bLength - Descriptor size in bytes
0x02, // bDescriptorType - The constant CONFIGURATION (02h)
0x29,0x00, // wTotalLength - The number of bytes in the configuration
descriptor and all of its subordinate descriptors
1, // bNumInterfaces - Number of interfaces in the configuration
1, // bConfigurationValue - Identifier for Set Configuration and Get
Configuration requests
0, // iConfiguration - Index of string descriptor for the configuration
USB_SELF_POWER, // bmAttributes - Self/bus power and remote wakeup
settings
USB_MAX_POWER, // bMaxPower - Bus power required in units of 2 mA
// Interface Descriptor
0x09, // bLength - Descriptor size in bytes (09h)
0x04, // bDescriptorType - The constant Interface (04h)
0, // bInterfaceNumber - Number identifying this interface
0, // bAlternateSetting - A number that identifies a descriptor with alternate
settings for this bInterfaceNumber.
2, // bNumEndpoint - Number of endpoints supported not counting
endpoint zero
0x03, // bInterfaceClass - Class code
0, // bInterfaceSubclass - Subclass code
0, // bInterfaceProtocol - Protocol code
0, // iInterface - Interface string index
// Endpoint Descriptor
0x07, // bLength - Descriptor size in bytes (07h)
0x05, // bDescriptorType - The constant Endpoint (05h)
USB_HID_EP | 0x80, // bEndpointAddress - Endpoint number and direction
USB_TRANSFER_TYPE, // bmAttributes - Transfer type and supplementary
information
0x40,0x00, // wMaxPacketSize - Maximum packet size supported
EP_IN_INTERVAL, // bInterval - Service interval or NAK rate
// Endpoint Descriptor
xx
Annexe
0x07, // bLength - Descriptor size in bytes (07h)
0x05, // bDescriptorType - The constant Endpoint (05h)
USB_HID_EP, // bEndpointAddress - Endpoint number and direction
USB_TRANSFER_TYPE, // bmAttributes - Transfer type and supplementary
information
0x40,0x00, // wMaxPacketSize - Maximum packet size supported
EP_OUT_INTERVAL // bInterval - Service interval or NAK rate
};
const struct {
char report[USB_HID_RPT_SIZE];
}hid_rpt_desc =
{
{0x06, 0x00, 0xFF, // Usage Page = 0xFF00 (Vendor Defined Page 1)
0x09, 0x01, // Usage (Vendor Usage 1)
0xA1, 0x01, // Collection (Application)
// Input report
0x19, 0x01, // Usage Minimum
0x29, 0x40, // Usage Maximum
0x15, 0x00, // Logical Minimum (data bytes in the report may have minimum
value = 0x00)
0x26, 0xFF, 0x00, // Logical Maximum (data bytes in the report may have
maximum value = 0x00FF = unsigned 255)
0x75, 0x08, // Report Size: 8-bit field size
0x95, HID_INPUT_REPORT_BYTES, // Report Count
0x81, 0x02, // Input (Data, Array, Abs)
// Output report
0x19, 0x01, // Usage Minimum
0x29, 0x40, // Usage Maximum
0x75, 0x08, // Report Size: 8-bit field size
0x95, HID_OUTPUT_REPORT_BYTES, // Report Count
0x91, 0x02, // Output (Data, Array, Abs)
0xC0} // End Collection
};
void USB_Init_Desc(){
USB_config_dsc_ptr[0] = &configDescriptor1;
USB_string_dsc_ptr[0] = (const char*)&strd1;
USB_string_dsc_ptr[1] = (const char*)&strd2;
USB_string_dsc_ptr[2] = (const char*)&strd3;
}
xx
ii
Annexe
j: Les composants
Composant Valeur
BLOC-1 R11 (Résistance fusible) 100mA, 50Ω
R12 (Résistance) 1 KΩ
DZ11, DZ12 (Diode Zener) BZX55C27
D11, D12, D13, D14 (Diode) 1N4001
BLOC-2 R21 (Résistance) 900 KΩ
R22 (Résistance) 100 KΩ
BLOC-3 74HC4051 (multiplexeur analogique) -
C31 (capacité) 100 nF
BLOC-4 R41, R42, R43, R44 (Résistance) 20 KΩ
R45, R49 (Résistance) 1 KΩ
R46 (Résistance) 8 KΩ
R47 (Résistance) 40 KΩ
R48 (Résistance) 200 KΩ
AOP41, AOP42, AOP43 (Amplificateur) LM324
74HC4051 (multiplexeur analogique) -
Bloc-5 PIC18f4550 (Microcontrôleur) -
R51, R53, R54 (Résistance) 1 KΩ
R52 (Résistance) 15 KΩ
C51, C52 (capacité) 22 pF
C53 (capacité) 470 nF
X1 (quartz) 20 MHz
D51 (Led) rouge
D52 (Led) vert
Bloc-6 NE555 (Timer) -
R61 (Résistance) 2 KΩ
R62 (Résistance) 10 KΩ
C61 (capacité) 10 uF
C62 (capacité) 680 nF
C63, C64, C65, C66 4.7 uF
D61, D62, D63, D64 (Diode) 1N4001
xx
iii