summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--n/avr/doc/cours.txt19
-rw-r--r--n/avr/doc/schema_avr.jpgbin11792 -> 0 bytes
-rw-r--r--n/avr/doc/schema_avr.pngbin0 -> 7115 bytes
3 files changed, 15 insertions, 4 deletions
diff --git a/n/avr/doc/cours.txt b/n/avr/doc/cours.txt
index 83c7d49..ec0f19b 100644
--- a/n/avr/doc/cours.txt
+++ b/n/avr/doc/cours.txt
@@ -26,7 +26,7 @@ avantages :
[Interface] On peux les faires fonctionner avec pleins d'autres
composants.
-*Image-center: schema_avr.jpg
+*Image-center: schema_avr.png
~Schéma structurel d'un AVR~
Les AVR s'alimentent avec du 5V.
@@ -111,7 +111,7 @@ branchée sur A0. Pas très pratique.
Afin d'éviter de changer les bits des autres pattes du port, il faut donc
utiliser les fonctions logiques :
- [Mettre un bit à 1] Il faut faire un ''OU exclusif'' ;
+ [Mettre un bit à 1] Il faut faire un ''OU'' ;
[Mettre un bit à 0] Il faut faire un ''ET'' du registre PIN avec un
mot de 8 bits qui aura des 1 partout sauf pour le bit qu'on veut
changé.
@@ -120,13 +120,24 @@ utiliser les fonctions logiques :
~8 correspond à l'inverse de 8. En binaire, ça donne l'inverse de
00001000, c'est à dire 11110111. Notez que seul le 3ème bit est à 0
car c'est celui là qu'on veut changer */
- PORTA &= ~8
+ PORTA &= ~8
/* Passer de 0 à 1 le 3ème bit du PORTA */
PORTA |= 8
+Il existe une macro ''_BV'' (définie dans |common/io.h|) qui permet de
+travailler directement avec le rang du bit que l'on veut changer. L'exemple
+précédent devriendrait alors :
+ PORTA &= ~_BV(3) /* 1 << 3 = 8 */
+ PORTA |= _BV(3)
+
Notez que l'on peut aussi travailler avec plusieurs bits d'un coup. Par
exemple si on veut passer les bits 2 et 3 de PORTA à 1, il suffit de faire :
PORTA |= 12 /* 2³ + 2² = 12 */
+ /* Pareil en utilisant la macro _BV */
+ PORTA |= _BV(2) + _BV(3)
+
+Essayez d'utiliser cette macro car, de manière génénale, elle rend le code
+plus lisible.
* Des périphériques tout fait dans l'AVR
L'AVR contient des périphériques tout fait comme par exemple :
@@ -182,7 +193,7 @@ Précautions à prendre pour les interruptions :
soit bien vue dans les deux parties du code ;
[Autoriser les interruptions] Il faut utiliser la fonction ''sei ()''
dans le code pour les activer ;
- [Interdire les interruptions] Il faut utiliser la fonction ''cei ()''
+ [Interdire les interruptions] Il faut utiliser la fonction ''cli ()''
dans le code pour les désactiver.
* Interrupteur en entrée
diff --git a/n/avr/doc/schema_avr.jpg b/n/avr/doc/schema_avr.jpg
deleted file mode 100644
index 7033666..0000000
--- a/n/avr/doc/schema_avr.jpg
+++ /dev/null
Binary files differ
diff --git a/n/avr/doc/schema_avr.png b/n/avr/doc/schema_avr.png
new file mode 100644
index 0000000..7760917
--- /dev/null
+++ b/n/avr/doc/schema_avr.png
Binary files differ