Documente Academic
Documente Profesional
Documente Cultură
A.U 2013-2014
Date : 14 - 11 - 2012
Classe : 5me anne Informatique -SLE
Documents non autoriss
Exercice 1 (6 points):
Write 0 bit
Write 1 bit
Read bit
Description
Implmentation
Envoyer un reset sur le bus et
Mettre le bus ltat bas, delay 480 s.
Relcher le bus, attendre 70 s.
tous
les
quipements
Lire linfo sur le bus:
connects seront lattente
o 0 = esclave prsent,
des commandes.
o 1 = pas desclave prsent
Attendre 410 s.
Envoyer un 0 sur le bus pour Mettre le bus ltat bas, attendre 60 s.
un slot de temps
Mettre le bus ltat haut, attendre 10 s.
Envoyer un 1 sur le bus pour Mettre le bus ltat bas, attendre 6 s.
un slot de temps
Mettre le bus ltat haut, attendre 64 s.
Lire un bit depuis un esclave Mettre le bus ltat bas, attendre 6 s.
pour un slot de temps
Relcher le bus, attendre 9 s.
Lire linfo sur le bus
Tableau 1: Oprations lmentaires
1/4
1. Compltez la fonction Init_ow () pour initialiser la broche PB9 comme broche de donnes du
bus 1-wire sachant que ce fils sera initialis comme une sortie PUSH_PULL. (2 points)
void Init_ow() {
GPIO_InitTypeDef GPIO_InitStructure;
//Enable GPIOs clock
RCC_APB2PeriphClockCmd,
);
// deinitialize GPIOs registers
...........................................................;
// Pins initialization
........................................................................................................................................................................................
........................................................................................................................................................................................
........................................................................................................................................................................................
}
Description
Cette fonction configure le pin du 1-Wire come sortie et met la sortie ltat bas.
Cette fonction configure le pin du 1-Wire come sortie et met la sortie ltat haut.
Cette fonction configure la pin du 1-Wire come entre et lit la valeur sur le bus.
Cette fonction permet denvoyer un bit sur le bus 1-wire
Cette fonction permet de lire un bit sur le bus 1-wire
Cette fonction permet de trasmettre un octet sur le bus 1-wire.
Cette fonction permet de trasmettre un octet sur le bus 1-wire.
Cette fonction permet de gnrer un reset sur le bus 1-Wire et dtecte la prsence
dun esclave.
Les cls dallas appels aussi I-BUTTON sont des cls didentification pour des utilisateurs dun
systme. Le fait de connecter la cl au lecteur permet de connecter les deux surfaces data et masse
de la cl au data et masse du bus 1-Wire du lecteur et ce qui enchainera lchange de donnes
didentification entre le lecteur et la cl.
Lidentifiant de la cl dallas est cod sur 64 bits transmises successivement la rception du code
0x33H depuis le lecteur.
Masse
Data
Cl Dallas
On se propose de raliser un lecteur des cls dallas on se basant sur la librairie de communication 1Wire dj prsent.
Le lecteur lit lidentifiant depuis lidentifiant de li-button en interrogeant le bus 1wire tout les 500
ms et transmet le code lu via USART et allume une LED en mettant la broche PA7 en tat haut pour 3
secondes.
4. Ecrire la programme principal en utilisant
usart_sendData(uint8_t * ). (3.5 points)
les
deux
fonctions
usart_init()
et
3/4
Annexe
typedef enum
{
GPIO_Speed_10MHz = 1,
GPIO_Speed_2MHz,
GPIO_Speed_50MHz
}GPIOSpeed_TypeDef;
typedef enum
{ GPIO_Mode_AIN = 0x0,
//mode analog input
GPIO_Mode_IN_FLOATING = 0x04,
//mode input floating
GPIO_Mode_IPD = 0x28,
GPIO_Mode_IPU = 0x48,
GPIO_Mode_Out_OD = 0x14,
GPIO_Mode_Out_PP = 0x10,
GPIO_Mode_AF_OD = 0x1C,
GPIO_Mode_AF_PP = 0x18
}GPIOMode_TypeDef;
typedef struct
{
uint16_t GPIO_Pin;
GPIOSpeed_TypeDef GPIO_Speed;
GPIOMode_TypeDef GPIO_Mode;
}GPIO_InitTypeDef;
typedef enum
{ Bit_RESET = 0,
Bit_SET
}BitAction;
#define
#define
#define
#define
#define
#define
#define
#define
#define
#define
GPIO_Pin_0
GPIO_Pin_1
GPIO_Pin_2
GPIO_Pin_3
GPIO_Pin_4
GPIO_Pin_5
GPIO_Pin_6
GPIO_Pin_7
GPIO_Pin_8
GPIO_Pin_9
((uint16_t)0x0001)
((uint16_t)0x0002)
((uint16_t)0x0004)
((uint16_t)0x0008)
((uint16_t)0x0010)
((uint16_t)0x0020)
((uint16_t)0x0040)
((uint16_t)0x0080)
((uint16_t)0x0100)
((uint16_t)0x0200)
#define
#define
#define
#define
#define
#define
#define
GPIO_Pin_10 ((uint16_t)0x0400)
GPIO_Pin_11 ((uint16_t)0x0800)
GPIO_Pin_12 ((uint16_t)0x1000)
GPIO_Pin_13 ((uint16_t)0x2000)
GPIO_Pin_14 ((uint16_t)0x4000)
GPIO_Pin_15 ((uint16_t)0x8000)
GPIO_Pin_All ((uint16_t)0xFFFF)