système d`aide a la navigation presentation

Transcription

système d`aide a la navigation presentation
BACCALAUREAT STI GENIE ELECTRONIQUE
PROJET DE CONSTRUCTION
ELECTRONIQUE
SYSTÈME D’AIDE A L A NAVIGATION
TRAVAUX PRATIQUES
MESURE DE LA VITESSE DU VENT ET DU BATEAU
CALCUL DE LA DISTANCE PARCOURUE DU BATEAU
PRE REQUIS :
 Les questions théoriques devront être réalisées en travail à la maison, les documents peuvent être
récupérés à cette adresse : http://genie.electrique.pem.perso.sfr.fr/TEL1.htm
 Programmation du µC ATMEGA8535 en langage C.
 Etude théorique et pratique du système d’aide à la navigation.
DOCUMENTATION ANNEXE :
 Documentation des Timers du µC ATMEGA8535»
 Documentations constructeur de capteur de vitesse ;
MATERIEL NECESSAIRE :






Générateur basse fréquence.
Micro-ordinateur.
Module de programmation AVRISP mk2 pour µC ATMEGA8535.
Logiciel de développement CODEVISION AVR.
Maquette de TP : AVR.
Chronomètre
ACTIVITES :
 Etudier le fonctionnement des "timers" afin de compter un évènement et en déduire une fréquence.
 Utiliser les "timers" pour mesurer la vitesse du vent et du bateau ainsi que la distance parcourue de celui-ci.
PRESENTATION
Ce TP est décomposé en 5 parties :
ère
La 1 partie permet de vérifier le bon fonctionnement du matériel (PC + CABLE + CARTE + AFFICHEUR).
Ainsi par la suite si les résultats attendus ne donnent pas satisfaction, il faudra se concentrer uniquement sur
votre programme.
nd
La 2 partie permet d’appréhender le fonctionnement du "timer0" et "timer1".
La 3ème partie permet de mesurer la vitesse du vent.
La 4ème partie permet de mesurer la vitesse et calculer la distance parcourue du bateau.
ème
La 5
partie permet d’aller plus loin en perfectionnant et adaptant les programmes précédents.
Système d’aide à la navigation
Page 1 / 11
1. VÉRIFICATION DU MATERIEL
Récupérer par le réseau sur le PcProf dans le répertoire BAC 2011 le répertoire du TP timer.
1.1 Ouvrir le logiciel CodeVisionAVR puis ouvrir la fenêtre de programmation en cliquant sur l’icône
1.2 Sélectionner la référence du µContrôleur dans la liste pour « Chip : » en regardant sur celui-ci.
1.3 Cliquer sur File  Load FLASH puis charger le fichier « test avr » qui se trouve dans le répertoire du TP.
1.4 Relier le PC à la carte AVR par le câble de programmation puis la mettre sous tension.
1.5 Cliquer sur Program  Erase Chip puis sur Program  FLASH.
1.6 Vérifier le fonctionnement de la carte : on placera la sortie TTL d’un GBF réglé sur 100 Hz sur l’entrée Freq.
Si la carte ne fonctionne pas appeler le prof.
2. PRINCIPE DE FONCTIONNEMENT DES "TIMERS"
2.1 COMPTER UN EVENEMENT
Le "Timer 0" est un compteur binaire 8 bits dont la valeur est contenue dans le registre TCNT0. Son horloge (TCK0)
peut être orientée parmi différentes sources comme l’horloge système qui correspond à celle du quartz (CK) ou la
broche PB0 configurée en entrée (T0). On choisit ces différentes possibilités en configurant le registre TCCR0.
Ouvrez le fichier « Timer AT8535_V2.pdf » et repérer ces informations.
Remarque importante : sur le schéma structurel annexe 1 de la carte AVR la broche PB0 est utilisée en
sortie pour la LED0. Comme T0 doit être une entrée on commandera la résistance de
pull up de cette entrée soit par le bouton poussoir SET connecté en PA0 soit par
l’entrée fréquence connectée en PD6.
2.1.1 Si le registre de contrôle TCCR0 vaut 7 quelle est la configuration choisie ?
2.1.2 D’après le schéma structurel de la carte AVR, déterminer si le compteur s’incrémentera au moment de
l’appui du bouton poussoir SET ou de son relâchement avec les lignes de code suivantes :
PORTA=0x1F;
// résistances de pull up pour les BP
DDRA=0x00;
// Port A en entrée
PORTB=0x00;
// Pas de résistance de pull up ou sortie à 0
DDRB=0x1E;
// PB1 à PB4 configurées en sortie, PB0 et PB5 à PB7 en entrée
PORTB.0 = ~PINA.0; // Activation résistance de pull up de l’entrée PB0 par BP SET
2.1.3 Quelle sera la valeur maximale que pourra contenir ce compteur. Exprimer cette valeur en décimale,
binaire et hexadécimale.
2.1.4 Indiquer par des flèches sur la feuille réponse 1 à quelles lignes de programme correspondent les
commentaires de l’encadré.
2.1.5 En déduire ce que fera ce programme en fonction du bouton poussoir SET.
2.1.6 Compléter le programme 1 et vérifier son bon fonctionnement.
2.1.7 Que se passe t-il une fois atteint la valeur maximale.
2.1.8 Modifier ce programme pour que le compteur s’incrémente au relâchement du bouton poussoir SET.
Système d’aide à la navigation
Page 2 / 11
2.2 DETERMINER UNE FREQUENCE
Par définition, la fréquence est le nombre d’évènements répétitifs en 1 seconde. Nous avons vu précédemment que
le "Timer0" peut compter un évènement, il correspondra donc à la fréquence en Hz si ce comptage se déroule
pendant un temps d’une seconde précisément. On pourrait utiliser l’instruction « delay_ms(1000) » pour fixer le
temps de mesure d’une seconde mais cela monopolise à plein temps le fonctionnement du microprocesseur et il ne
peut rien faire d’autre pendant ce temps. Nous allons donc à la place utiliser le "Timer1" pour cette durée qui
fonctionne sur le même principe que le "Timer0" comme vous pouvez le voir dans le fichier « Timer
AT8535_V2.pdf ».
2.2.1 D’après ce fichier pdf le "Timer0" évolue sur 8 bits. Est-ce de même pour le "Timer1" ?
2.2.2 Quel est le nom du registre correspondant au contenu de ce Timer1.
2.2.3 Quelle sera la valeur maximale que pourra contenir ce compteur. Exprimer cette valeur en décimale,
binaire et hexadécimale.
2.2.4 Déterminer la valeur binaire puis hexadécimale que devra contenir le registre de configuration
TCCR1B en le complétant ci-dessous pour sélectionner comme horloge de comptage celle du quartz
(horloge système CK) divisée par 210.
Bit 7
0
Bit 6
0
Bit 5
0
Bit 4
0
Bit 3
0
Bit 2
Bit 1
Bit 0
2.2.5 Quelle sera alors la fréquence d’horloge du timer1 si la fréquence du quartz vaut 4 MHz.
2.2.6 Calculer alors le temps nécessaire pour que le timer1 compte de 0 à sa valeur maximale définie à la
question 2.2.3.
2.2.7 Quelle sera la valeur en décimale, binaire et hexadécimale atteinte par le timer1 au bout d’une
seconde ?
2.2.8 Compléter le programme 2 sur la feuille réponse 1.
2.2.9 Compléter le programme et vérifier son bon fonctionnement en connectant sur l’entrée Freq un
générateur de signal rectangulaire 0-5v (sortie TTL) de fréquence 50 Hz puis 100 Hz.
2.2.10 Sachant que le "Timer0" évolue sur 8 bits, quelle sera la fréquence maximale théorique affichable ?
2.2.11 Vérifier cette valeur expérimentalement.
3. MESURE DE LA VITESSE DU VENT
3.1PRINCIPE ET CARACTERISTIQUES DU CAPTEUR DE VITESSE (ANEMOMETRE)
3.1.1 Traduisez en français les phrases colorisées du paragraphe intitulé "Description" de la documentation
constructeur de l’anémomètre P2546A (voir le fichier au format pdf).
3.1.2 D’après le schéma structurel de la fonction FS41 de votre dossier technique du système d’aide à la
navigation, quel est le niveau logique de la broche T0 du microcontrôleur si l’ILS (interrupteur à lame
souple) est ouvert puis fermé ?
3.1.3 Représenter par un chronogramme l’allure du signal T0 pour un tour de rotation des coupelles de
l’anémomètre.
3.1.4 Relevez sur la documentation de l’anémomètre la vitesse maximale mesurable du vent en m/s puis
exprimez-la en km/h.
3.1.5 Relevez l’expression de la relation liant la vitesse du vent à la fréquence de commutation de l’ILS
(interrupteur à lame souple).
3.1.6 Tracer alors en complétant les graphiques de la feuille réponse 2, la courbe représentant la fréquence
de commutation de l’ILS en fonction de la vitesse du vent en m/s puis en km/h.
3.2 AFFICHAGE DE LA VITESSE DU VENT
3.2.1
Complétez le programme 3 de la feuille réponse n°2 permettant d’afficher la vitesse en m/s.
3.2.2
Saisir les parties à compléter, compilez et programmez le microcontrôleur.
3.2.3 A l’aide d’un générateur de signal rectangulaire 0-5v (sortie TTL), valider le graphique de la question
3.1.6 en fixant quelques fréquences correspondantes.
3.2.4 Modifier votre programme pour afficher la vitesse du vent en km/h puis valider le second graphique de
la question 3.1.6.
Système d’aide à la navigation
Page 3 / 11
4. MESURE DE LA VITESSE ET DE LA DISTANCE PARCOURUE DU BATEAU
4.1 PRINCIPE ET CARACTERISTIQUES DU CAPTEUR
La société "AIRMAR" est un important constructeur de produits électroniques équipant les bateaux. Vous trouverez
dans le répertoire du TP TIMER des documents au format pdf correspondant à des capteurs et des informations sur
le principe de ceux-ci.
4.1.1 Traduisez en français les phrases colorisées du paragraphe intitulé "Speed Sensors" de la page 17 du
fichier "airmar_theory".
4.1.2 En vous aidant du lexique du dossier technique du système d’aide à la navigation ou d’internet, établir
les conversions d’unités en complétant le tableau de la feuille réponse 3.
4.1.3 Relevez sur la documentation du capteur de vitesse S300 (modèle sans flasques (no fins)), la vitesse
maximale mesurable en nœuds puis exprimez-la en km/h.
4.1.4 Relevez le nombre d’impulsions délivrées par ce capteur pour une distance parcourue de 1 mille
nautique. En déduire le nombre d’impulsions pour 1 mètre et 1 km. Quelle est précisément la distance
parcourue en mètre et en mille nautiques entre deux impulsions.
4.1.5 En supposant que la vitesse soit de 1 nœud, quel sera le nombre d’impulsions en 1 heure et en 1
seconde. Repérer cette dernière valeur arrondie sur la documentation.
4.1.6 En déduire la fréquence des impulsions pour la vitesse maximale.
4.1.7 Combien de temps en seconde faudra-t-il pour parcourir 1 mille nautique et 1km à la vitesse maximale.
4.2 AFFICHAGE DE LA VITESSE DU BATEAU
4.2.1 Complétez le programme 4 de la feuille réponse n°3 permettant d’afficher la vitesse en nœud.
4.2.2 Complétez, compilez et programmez le microcontrôleur.
4.2.3 A l’aide d’un générateur de signal rectangulaire 0-5v (sortie TTL), valider l’affichage de la vitesse
maximale en fixant la fréquence correspondante déterminée à la question 4.1.6.
4.2.4 Modifier votre programme pour afficher la vitesse du bateau en km/h puis valider son bon
fonctionnement.
4.3 AFFICHAGE DE LA DISTANCE PARCOURUE DU BATEAU
4.3.1 Complétez le programme 5 de la feuille réponse n°4 permettant d’afficher la vitesse en nœud et la
distance parcourue en mille nautique.
4.3.2 Saisissez, compilez et programmez-le.
4.3.3 En fixant la fréquence correspondante à la vitesse maximale, chronométrer le temps mis pour une
distance de 1 mille et valider avec celui déterminé à la question 4.1.7.
4.3.4 Modifier votre programme pour afficher la vitesse en km/h et la distance parcourue en kilomètre puis
valider son bon fonctionnement avec un chronomètre.
Système d’aide à la navigation
Page 4 / 11
5. ADAPTION ET PERFECTIONNEMENT (POUR ALLER PLUS LOIN)
5.1.1 Proposez un programme permettant d’afficher la vitesse du vent (sans décimal) en nœud ou en km/h
suivant l’appui ou le relâchement du bouton poussoir SET en respectant l’affichage suivant :
X
0
Y
0
1
2
3
4
5
6
V
i
t
e
s
s
1
7
8
9
e
d
u
X X
n
o
10
e
11
12
13
14
15
v
e
n
t
:
u
d
5.1.2 Adapter ce programme si on remplace le modèle de l’anémomètre par le "AN4" puis le "WE14" (voir
fichier pdf correspondant).
5.1.3 Adapter le programme de la question 4.3.4 si on remplace le modèle du capteur par le S61(voir fichier
pdf correspondant).
5.1.4 Quel est alors le problème rencontré lors de la validation de ce dernier programme. Comment
l’expliquer. Proposer une solution de remédiassions.
Système d’aide à la navigation
Page 5 / 11
Feuille Réponse n°1
Question 2.1.4
Programme 1
#include <mega8535.h>
#include <lcd.h>
#include <stdlib.h>
#include <delay.h>
Commentaires :
#asm
.equ __lcd_port=0x15
#endasm
void main(void)
{
unsigned char chaine_caractere[4]={0};
PORTA=0x1F;
DDRA=0x00;
PORTB=0x00;
DDRB=0x1E;
lcd_init(16);
TCCR0=0x07;
TCNT0=250;
OCR0=0x00;
while (1)
{
PORTB.1 = PORTB.0 = ~PINA.0;
itoa (TCNT0, chaine_caractere);
lcd_gotoxy(0,0);
lcd_putsf(" ");
lcd_gotoxy(0,0);
lcd_puts(chaine_caractere);
delay_ms(20);
}
- // Programme principal.
- // Boucle sans condition.
- // Début du programme principal.
- // Début de la boucle.
- // Fin du programme principal.
- // Fin de la boucle.
- // Initialise l’afficheur lcd.
- // Configure l’entrée d’horloge du timer0.
- // Définit la broche "T0" en entrée.
- // Charge les bibliothèques d’équivalences et de procédures.
- // Attribue le portC pour commander l’afficheur lcd.
- // Déclare une variable qui représentera le contenu du timer0.
- // Charge la variable avec le contenu du timer0.
- // Déclare une suite de caractères représentant un nombre à afficher sur
l’afficheur lcd.
- // Convertit le contenu numérique d’une variable en une suite de caractères
ASCII correspondant.
- // Place le curseur au début de la première ligne de l’afficheur lcd.
- // Efface les 3 caractères de l’afficheur précédemment affichés.
- // Attente permettant à l’œil de voir la valeur affichée.
- // Affiche une suite de caractères ASCII sur le lcd.
}
Question 2.2.8
#include <mega8535.h>
#include <lcd.h>
#include <stdlib.h>
Programme 2
#asm
.equ __lcd_port=0x15
#endasm
main()
{
unsigned char chaine_caractere[4]={0};
PORTD=0x00;
DDRD=0x00;
PORTB=0x00;
DDRB=0x00;
lcd_init(16);
TCCR0=0x07;
TCCR1A=0x00;
TCCR1B= _ _ _ _ _;
Commentaires à compléter:
A compléter
while(1)
{
PORTB.0 = PIND.6;
if (TCNT1 >= _ _ _ _ _ )
{
itoa (TCNT0, chaine_caractere);
lcd_gotoxy(0,0);
lcd_putsf(" ");
lcd_gotoxy(0,0);
lcd_puts(chaine_caractere);
TCNT0=0;
TCNT1=0;
};
};
}
Système d’aide à la navigation
// Test si le Timer1 a atteint une durée d’une seconde.
// . . . . .
// . . . . .
// . . . . .
// . . . . .
Page 6 / 11
Feuille Réponse n°2
Question 3.1.6 :
Fréquence
(Hz)
Vitesse
(m/s)
Fréquence
(Hz)
Vitesse
(km/h)
Question 3.2.1
#include <mega8535.h>
#include <lcd.h>
#include <stdlib.h>
Programme 3
#asm
.equ __lcd_port=0x15
#endasm
main()
{
unsigned int comptage;
unsigned char chaine_caractere[6]={0};
DDRB=0x00;
DDRC=0xFF;
lcd_init(16);
TCCR0=0x07;
TCCR1A=0x00;
TCCR1B= _ _ _ _ _;
A compléter
while(1)
A compléter (voir question 3.1.5)
{
PORTB.0 = PIND.6;
if (TCNT1>= _ _ _ _ _ )
{
comptage=_ _ _ _ + _ _ _ _ * _ _ _ _ ;
itoa (comptage, chaine_caractere);
lcd_gotoxy(0,0);
lcd_putsf("
"); //affiche 7 espaces pour effacer la valeur précédente.
lcd_gotoxy(0,0);
lcd_puts(chaine_caractere);
lcd_putsf(" m/s");
TCNT0=0;
TCNT1=0;
};
};
}
Système d’aide à la navigation
Page 7 / 11
Feuille Réponse n°3
Question 4.1.2
1 mille nautique = . . . . . . . . . . . mètre.
1 nœud = . . . . . . . . . . . mille/heure = . . . . . . . . . . . km/h
Question 4.2.1
Programme 4
#include <mega8535.h>
#include <lcd.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x15
#endasm
main()
{
float vit_noeud;
char chaine_caractere[10]={0};
PORTD=0x00;
DDRD=0x00;
PORTB=0x00;
DDRB=0x00;
lcd_init(16);
TCCR0=0x07;
TCCR1A=0x00;
TCCR1B= _ _ _ _ _ _ ;
while(1)
{
PORTB.0 = PIND.6;
if (TCNT1>= _ _ _ _ _ )
{
vit_noeud=TCNT0 / _ _ _ _ _ _ ;
ftoa (vit_noeud,1, chaine_caractere);
lcd_gotoxy(0,0);
lcd_putsf("
");
lcd_gotoxy(0,0);
lcd_puts(chaine_caractere);
lcd_putsf(" noeud");
A compléter (voir question Q2_2_4)
A compléter (voir question Q2_2_7)
A compléter (voir question Q4_1_5)
TCNT0=0;
TCNT1=0;
};
};
}
Système d’aide à la navigation
Page 8 / 11
Feuille Réponse n°4
Question 4.3.1
Programme 5
#include <mega8535.h>
#include <lcd.h>
#include <stdlib.h>
#asm
.equ __lcd_port=0x15
#endasm
main()
{
float vit_noeud;
float distance_mille = 0.0;
char chaine_caractere[10] = {0};
PORTD=0x00;
DDRD=0x00;
PORTB=0x00;
DDRB=0x00;
lcd_init(16);
TCCR0=0x07;
TCCR1A=0x00;
TCCR1B= _ _ _ _ _ ;
while(1)
{
if (TCNT1 >= _ _ _ _ _ )
{
PORTB.0 = PIND.6;
vit_noeud = TCNT0 / _ _ _ _ _ ;
ftoa (vit_noeud,1, chaine_caractere);
lcd_gotoxy(0,0);
lcd_putsf("
");
lcd_gotoxy(0,0);
lcd_puts(chaine_caractere);
lcd_putsf(" noeud");
// Pour afficher 100000 milles
A compléter (voir question Q4_1_5)
A compléter (voir question Q4_1_4)
distance_mille = distance_mille + TCNT0 * _ _ _ _ _ ;
ftoa (distance_mille,3, chaine_caractere);
lcd_gotoxy(0,1);
lcd_putsf("
");
lcd_gotoxy(0,1);
lcd_puts(chaine_caractere);
lcd_putsf(" mille");
TCNT0=0;
TCNT1=0;
};
};
}
Système d’aide à la navigation
Page 9 / 11
Annexe 1
JPI2C
Extension
I2C
a
b
+5V
1
2
BornePWM
PWM
+
GND2
R2
10k
CapTempInt
2
SCL
Tout
SDA
1
Frequence
A0
A1
A2
GND
SDA
+5V
AnalogInter
BU1
+
Capteur
Température
I2C
C103
C5
100n
Buzzer
0
0
0
S0
S1
S2
S3
S4
0
+5V
BPInc
PA4
BPDec
PA3
OK
PA2
Echap
PA1
SET
PA0
1
2
3
4
5
6
7
8
9
10
ISP
he10-10
TXD
RXD
+5V
0
0
OC2/PD7
ICP/PD6
OC1A/PD5
OC1B/PD4
INT1/PD3
INT0/PD2
TXD/PD1
RXD/PD0
TOSC2/PC7
TOSC1/PC6
PC5
PC4
PC3
PC2
PC1
PC0
XTAL2
XTAL1
TXD
RXD
D7
D6
D5
D4
10k
D4
D5
D6
D7
EN
R/W
RS
1
2
3
4
5
6
7
8
9
10
11
12
13
14
4MegHz
C3
22p
0
S4
C4
22p
S3
S2
0
S1
0
S0
D1
1N4148
+10V
1N4001
RA1
680
RESET
ALIM 10V
UA1
LM7805C
VCC2
1
IN
GND
C2
1uF
CA1
0
LEDA1
0
Système d’aide à la navigation
OUT
PT5V
3
CA2
330nF
GND
LCD
2X16
RLED4
330
RLED3
330
RLED2
330
RLED1
330
RLED0
330
LED4
LED3
LED2
LED1
LED0
+5V
DA1
2
Vcc
+
RESET
VSS
VDD
VO
RS
R/W
E
D0
D1
D2
D3
D4
D5
D6
D7
X1
+5V
R4
4,7K
0
LCD
D[7..4]
at90s8535
0
0
12
PWM
Frequence
Buzzer
SCL
SDA
21
20
19
18
17
16
15
14
29
28
27
26
25
24
23
22
12
13
t
VCC
AVCC
PA0/ADC0
PA1/ADC1
PA2/ADC2
PA3/ADC3
PA4/ADC4
PA5/ADC5
PA6/ADC6
PA7/ADC7
PB0/T0
PB1/T1
PB2/AIN0
PB3/AIN1
PB4/SS
PB5/MOSI
PB6/MISO
PB7/SCK
RESET
AREF
GND
AGND
AnalogExter
40
39
38
37
36
35
34
33
1
2
3
4
5
6
7
8
9
32
+5V
11
31
PA0
PA1
PA2
PA3
PA4
220 D5
1N4148
Entrée Analogique
extérieure
10
30
P1
U1
1N4148
D4
R6
buzzer
Q1
0
+5V
BorneAnalogExter
Rbuz
1.2k
100n
0
+5V
LEDT
t
220
D3
1N4148
0
7
6
5
DS1621
4
P2
10k
21
PTAnalogInter
1N4148
D2
R5
3
0
+5V
+5V
BorneFrequence
R3
1.5k
8
SCL
VCC
R1
10k
C1
10u
Page 10 / 11
100nF
0
Annexe 2
PRESENTATION DES PORTS D'E/S DE L'AT90S8535
1 : DESCRIPTION
Chacun des 4 ports d’interface parallèles de l’AT90S8535 sont accessibles au travers de 3 registres 8 bits.
- Un registre de direction DDRx : Un « 1 » logique dans un de ses bits, configure la broche de port
correspondante en sortie. Un « 0 » la configure en entrée.
- Un registre de données entrantes PINx : L’état des bits de ce registre reflète les niveaux présents en entrée
sur les broches correspondantes.
- Un registre de données sortantes ou d’option, PORTx : l’état des bits de ce registre fixe le niveau des broches
correspondantes qui sont configurées en sortie. Si les broches correspondantes sont configurées en entrée,
un « 1 » logique dans un des bits du registre valide, la résistance de rappel interne au +VCC.
2 : DESCRIPTION DES
Port A
Port B
Port C
Port D
REGISTRES
Registre de
Direction et adresse
DDRA
DDRB
DDRC
DDRD
Registre de données
entrantes et adresse
PINA
PINB
PINC
PIND
Identification des bits des registres :
Registre
Bit 7
Bit 6
Bit 5
PORTx
PORTx7 PORTx6 PORTx5
PINx
PINx7
PINx6
PINx5
DDRx
DDx7
DDx6
DDx5
Bit 4
PORTx4
PINx4
DDx4
Registre de données
sortantes et adresse
PORTA
PORTB
PORTC
PORTD
Bit 3
PORTx3
PINx3
DDx3
Bit 2
PORTx2
PINx2
DDx2
Nbre
de bits
8
8
8
8
Bit 1
PORTx1
PINx1
DDx1
Bit 0
PORTx0
PINx0
DDx0
3 : CONFIGURATION DES BROCHES
0
1
X
Bit du
PINx
0
0
1
Bit du
PORTx
Bit du
DDRx
Chaque broche d’un port peut être configurée individuellement. Il suffit pour cela de positionner à 1 ou à 0 les bits
des registres DDRx et PORTx.
Direction
XIN
XIN
X
Entrée
Entrée
Sortie
Configuration
Sans Pull-Up. (XIN est l’image du niveau présent sur la broche)
Avec Pull-Up. (XIN est l’image du niveau présent sur la broche)
Sortie symétrique Push-Pull. X est le niveau délivré par la broche.
La lecture du registre PINx donne l’état des broches du PORTx orientées en entrée. L’écriture dans le registre
PORTx fixe l’état des broches configurées en sortie. (PINx n’est accessible qu’en lecture)
Entrée avec résistance de rappel
Entrée sans résistance de rappel
VDD
Sortie
symétrique
(Push-pull)
R
1
ENTREE
1
1
VERS REGISTRE
PINX
ENTREE
VERS
REGISTRE
PINX
Système d’aide à la navigation
VDD
SORTIE
Vers registre
PORTx
VSS
Page 11 / 11

Documents pareils