Cours:CoursM2103 : Différence entre versions
(→Action si 0/1) |
(→Lire l'état d'une entrée) |
||
Ligne 97 : | Ligne 97 : | ||
Action si broche '''P{{Rouge|E}}{{Bleu|5}}''' à '''0''' : | Action si broche '''P{{Rouge|E}}{{Bleu|5}}''' à '''0''' : | ||
'''if ( bit_is_clear(PIN{{Rouge|E}},P{{Rouge|E}}{{Bleu|5}}) )...''' | '''if ( bit_is_clear(PIN{{Rouge|E}},P{{Rouge|E}}{{Bleu|5}}) )...''' | ||
+ | || | ||
+ | |||
+ | ===Exemples=== | ||
+ | |||
+ | {{Rouge|'''<big>Attention</big>'''}}, il vaut mieux mettre quques parenthèses en trop que pas assez !! | ||
+ | |||
+ | <source lang=cpp> | ||
+ | ... | ||
+ | </source> | ||
+ | |} | ||
+ | |||
+ | |||
+ | {| | ||
+ | |-style="vertical-align:top;" | ||
+ | | | ||
+ | |||
+ | ==Attendre un changement d'état=== | ||
+ | |||
+ | include <avr/sfr_defs.h> | ||
+ | |||
+ | Attendre que '''P{{Rouge|C}}{{Bleu|3}}''' soit à '''1''' : | ||
+ | '''loop_until_bit_is_set(PIN{{Rouge|C}},P{{Rouge|C}}{{Bleu|3}}) ;''' | ||
+ | Attendre que '''P{{Rouge|E}}{{Bleu|5}}''' soit à '''0''' : | ||
+ | '''loop_until_bit_is_clear(PIN{{Rouge|E}},P{{Rouge|E}}{{Bleu|5}});''' | ||
|| | || | ||
Version du 3 février 2023 à 08:42
Sommaire
gestion des broches
Entrée/Sortie
Direction Input/OutputMettre la broche PC3 en sortie : DDRC |= ( 1 << PC3 ); Mettre la broche PE5 en entrée : DDRE &=~ ( 1 << PE5 ); |
Exemples
// modifier la direction de toutes les broches d'un port
// ex : PA0,PA1,PA2,PA3 en entrées
// ex : PA4,PA5,PA6,PA7 en sortie
DDRA=0b11110000;
//ou
DDRA=0xF0;
//ou
DDRA=(1<<PA7)|(1<<PA6)|(1<<PA5)|(1<<PA4)|(0<<PA3)|(0<<PA2)|(0<<PA1)|(0<<PA0);
//ou
DDRA|=(1<<PA7)|(1<<PA6)|(1<<PA5)|(1<<PA4);
DDRA&=~((1<<PA3)|(1<<PA2)|(1<<PA1)|(1<<PA0));
|
Modifier l'état d'une sortie
Il faut avoir déclarer la broche en sortie, cf ci-dessus !!
Mettre à 0/1Mettre la broche PC3 à 1 : PORTC |= ( 1 << PC3 ); Mettre la broche PE5 à 0 : PORTE &=~ ( 1 << PE5 ); |
ExemplesAttention, il vaut mieux mettre quques parenthèses en trop que pas assez !! ...
// mettre la broche PA2 à 1 :
PORTA |= (1<<PA2);
// mettre la broche PB3 à 0 :
PORTB &=~ (1<<PB3);
// changer l'état de la broche PC5 :
PORTC ^=~ (1<<PC5);
// mettre les broche PB2 et PB3 à 1 :
PORTB |= ( (1<<PB2) | (1<<PB3) );
// mettre les broche PC4 et PC6 à 0 :
PORTB &=~ ( (1<<PC4) | (1<<PC6) );
// mettre à 0 PA0 PA1 PA2 et à 1 PA3 PA4 PA5 PA6 PA7
// !! attention, cela modifie toutes les sorties !!
PORTA = 0b11111000;
// ou
PORTA = (1<<PA7)|(1<<PA6)|(1<<PA5)|(1<<PA4)|(1<<PA3)|(0<<PA2)|(0<<PA1)|(0<<PA0);
|
Lire l'état d'une entrée
Il faut éventuellement avoir déclarer la broche en entrée, cf ci-dessus !!
Action si 0/1include <avr/sfr_defs.h> Action si la broche PC3 à 1 : if ( bit_is_set(PINC,PC3) )... Action si broche PE5 à 0 : if ( bit_is_clear(PINE,PE5) )... |
ExemplesAttention, il vaut mieux mettre quques parenthèses en trop que pas assez !! ...
|
Attendre un changement d'état=include <avr/sfr_defs.h> Attendre que PC3 soit à 1 : loop_until_bit_is_set(PINC,PC3) ; Attendre que PE5 soit à 0 : loop_until_bit_is_clear(PINE,PE5); |
ExemplesAttention, il vaut mieux mettre quques parenthèses en trop que pas assez !! ...
|