Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
fr:avr:registers [2010/03/18 15:29] sdeniaudfr:avr:registers [2020/07/20 09:00] (current) – external edit 127.0.0.1
Line 22: Line 22:
 [{{  :images:logic:register_buttons_and_bits.png?240|Les "boutons" du registre et la valeur des bits}}] [{{  :images:logic:register_buttons_and_bits.png?240|Les "boutons" du registre et la valeur des bits}}]
  
-Puisque l'état des interrupteurs du registre peut facilement être traité comme un nombre et vice versa, un registre peut être comparé à une mémoire, qui peut contenir des données de la taille d'un nombre. Par cette comparaison, nous voyons que les registres sont en réalité des créneaux de mémoire. La différence entre un registre et un créneau de mémoire est qu'une créneau de mémoire stocke seulement les informations, alors que dans un registre ces informations contrôlent en réalité quelque chose. Par exemple, si une valeur binaire de 01100001 est écrite à un registre, cela signifie que trois boutons imaginaires sont appuyés et quelque chose arrive.+Puisque l'état des interrupteurs du registre peut facilement être traité comme un nombre et vice versa, un registre peut être comparé à une mémoire, qui peut contenir des données de la taille d'un nombre. Par cette comparaison, nous voyons que les registres sont en réalité des créneaux de mémoire. La différence entre un registre et un slot de mémoire est qu’un slot de mémoire stocke seulement les informations, alors que dans un registre ces informations contrôlent en réalité quelque chose. Par exemple, si une valeur binaire de 01100001 est écrite à un registre, cela signifie que trois boutons imaginaires sont appuyés et quelque chose arrive.
  
 Avec un lecteur de cassette il est possible d'appuyer sur chaque bouton séparément, mais dans un registre il est plus difficile de changer la valeur d'un "interrupteur" ou le bit. Concrètement il est nécessaire de changer le contenu entier du registre. Avant le changement de la valeur d'un bit, il faut savoir qu'il y a beaucoup de registres dans un micro-contrôleur. Certaines parties du micro-contrôleur utilisent des dizaines de registres pour les contrôler. La variété des registres signifie qu'il y doit avoir une façon de distinguer les différents des registres ce que l'on réalise en les nommant. Un registre, par exemple, est appelé PORTB. En réalité, ces noms doivent juste rendre les choses plus faciles pour le développeur et chaque nom correspond à une adresse numérique. Avec un lecteur de cassette il est possible d'appuyer sur chaque bouton séparément, mais dans un registre il est plus difficile de changer la valeur d'un "interrupteur" ou le bit. Concrètement il est nécessaire de changer le contenu entier du registre. Avant le changement de la valeur d'un bit, il faut savoir qu'il y a beaucoup de registres dans un micro-contrôleur. Certaines parties du micro-contrôleur utilisent des dizaines de registres pour les contrôler. La variété des registres signifie qu'il y doit avoir une façon de distinguer les différents des registres ce que l'on réalise en les nommant. Un registre, par exemple, est appelé PORTB. En réalité, ces noms doivent juste rendre les choses plus faciles pour le développeur et chaque nom correspond à une adresse numérique.
Line 35: Line 35:
 </code> </code>
  
-Il n'y a rien de difficile à écrire et lire les valeurs d'un registre, mais il devient un peu délicat si on doit modifier seulement un bit. Pour modifier des bits, on a besoin d'avoir des connaissances en mathématiques binaires et utiliser des systèmes numériques différents. Il ne serait pas impossible de ne traiter que des nombres binaires, mais ils peuvent être un peu ennuyeux, parce que des nombres binaires sont assez long et c'est pourquoi la plupart des personnes utilisent des nombres hexadécimaux plus courts.+Il n'y a rien de difficile à écrire et lire les valeurs d'un registre, mais il devient un peu délicat si on doit modifier seulement un bit. Pour modifier des bits, on a besoin d'avoir des connaissances en mathématiques binaires et utiliser des systèmes numériques différents. Il ne serait pas impossible de ne traiter que des nombres binaires, mais ils peuvent être un peu ennuyeux, parce que des nombres binaires sont assez longs et c'est pourquoi la plupart des personnes utilisent des nombres hexadécimaux plus courts.
  
 [{{  :images:logic:logic_hexadecimal.png?209|Nombres hexadécimaux}}] [{{  :images:logic:logic_hexadecimal.png?209|Nombres hexadécimaux}}]
Line 45: Line 45:
 [{{  :images:logic:logic_all_4.png?550  |Négation, multiplication logique, addition logique et séparation exclusive}}] [{{  :images:logic:logic_all_4.png?550  |Négation, multiplication logique, addition logique et séparation exclusive}}]
  
-~~PB~~+<pagebreak>
  
   * **Négation / Inversion** \\ Le négation inverse la valeur du bit, un 0 devient 1 et vice et versa. En C, la négation correspond au symbole "~".   * **Négation / Inversion** \\ Le négation inverse la valeur du bit, un 0 devient 1 et vice et versa. En C, la négation correspond au symbole "~".
Line 86: Line 86:
 </code> </code>
  
-~~PB~~+<pagebreak>
  
 ==== Inverser la valeur d'un bit ==== ==== Inverser la valeur d'un bit ====
Line 121: Line 121:
 [{{  :images:logic:op_bit_get.png?229|Lire la valeur d'un bit}}] [{{  :images:logic:op_bit_get.png?229|Lire la valeur d'un bit}}]
  
-Pour lire une ou plusieurs valeurs d'un bit d'un registre la même opération que pour mettre un bit en position basse est nécessaire - la multiplication logique. L'un des opérants doit être le registre et l'autre le bitmask, où le seul bit en position haute est celui que l'on doit lire sur le registre.Ci-dessous le code de C correspondant à l'opération montrée à droite :+Pour lire une ou plusieurs valeurs d'un bit d'un registre la même opération que pour mettre un bit en position basse est nécessaire - la multiplication logique. L'un des opérants doit être le registre et l'autre le bitmask, où le seul bit en position haute est celui que l'on doit lire sur le registre. Ci-dessous le code de C correspondant à l'opération montrée à droite :
  
 ~~CL~~ ~~CL~~
Line 131: Line 131:
 </code> </code>
  
-~~PB~~+<pagebreak>
  
 ==== Déplacer la valeur d'un bit ==== ==== Déplacer la valeur d'un bit ====
Line 150: Line 150:
 [{{  :images:logic:op_bit_shift_right.png?241|Déplacement à droite}}] [{{  :images:logic:op_bit_shift_right.png?241|Déplacement à droite}}]
  
-L'opération de déplacement à droite fonctionne de la même manière que celle à gauche. Elle est représentée par le symbole ">>" en langage C. Le déplacement à droite est utilisé pour récupérer la valeur logique d'un bit à partir d'un bitmask. Un exemple pricinpal montre comment lire la valeur d'un bit simple. Ce qui suppose que le bit qui doit être lu n'est pas à son rang le plus bas, mais par exemple au rang 5. Dans ce cas le résultat pourrait à la fois être 0x20 ou 0x00, mais parfois il est nécessaire d'avoir ou 0 ou 1 comme résultat, c'est dans ce cas que l'on utilise le décalage à droite.but sometimes a result of 1 or 0 is needed and that is when the right shift comes to the rescue.  L'opération en C ressemble à ça:+L'opération de déplacement à droite fonctionne de la même manière que celle à gauche. Elle est représentée par le symbole ">>" en langage C. Le déplacement à droite est utilisé pour récupérer la valeur logique d'un bit à partir d'un bitmask. Un exemple principal montre comment lire la valeur d'un bit simple. Ce qui suppose que le bit qui doit être lu n'est pas à son rang le plus bas, mais par exemple au rang 5. Dans ce cas le résultat pourrait à la fois être 0x20 ou 0x00, mais parfois il est nécessaire d'avoir ou 0 ou 1 comme résultat, c'est dans ce cas que l'on utilise le décalage à droite. L'opération en C ressemble à ça:
  
 ~~CL~~ ~~CL~~
Line 172: Line 172:
 L'image montre le registre UCSRnA du micro-contrôleur ATmega128, qui supporte "le contrôle USART et le statut du registre A". Ce registre est utilisé pour configurer le module USART de l'AVR afin d'en lire ses statuts. Tous les noms de registres de l'AVR sont écrits en lettre capitales, mais le lecteur notera que le nom du registre contient la lettre minuscule n. On utilise un n minuscule pour identifier l'index du module; Certains ATmega128 contiennent deux modules USART identiques, qui ne sont décrit qu'une seule fois, l'utilisateur remplacera alors le n par un 0 ou 1. ATmega128 contient donc les deux registres UCSR0A et UCSR1A. L'image montre le registre UCSRnA du micro-contrôleur ATmega128, qui supporte "le contrôle USART et le statut du registre A". Ce registre est utilisé pour configurer le module USART de l'AVR afin d'en lire ses statuts. Tous les noms de registres de l'AVR sont écrits en lettre capitales, mais le lecteur notera que le nom du registre contient la lettre minuscule n. On utilise un n minuscule pour identifier l'index du module; Certains ATmega128 contiennent deux modules USART identiques, qui ne sont décrit qu'une seule fois, l'utilisateur remplacera alors le n par un 0 ou 1. ATmega128 contient donc les deux registres UCSR0A et UCSR1A.
  
-Le contenu d'un registre est représenté par une boîte à 8 slots avec une ligne en gras. Chaque slot représente un bit. Les rangs des bits sont marqués au-dessus de la boîte - en croissant de droite à gauche. Puisque AVR est un micro-contrôleur de 8 bits, la plupart des registres sont de 8 bit aussi. Il y a quelques exceptions, quelques registres sont de 16 bits, mais ils consistent en réalité en deux registres de 8 bits. Comme chaque registre a un nom, chaque bit dans le registre a aussi un nom - comme les boutons sur un lecteur de cassette. Chaque bit est décrit dans la fiche technique. Les noms de bit sont des abréviations et la lettre n minuscule peut être remplacée par l'index du module, comme avec les noms de registre. Quelques registres n'utilisent pas tous les 8 bits, dans ce cas le slot du bit est marquée avec un trait d'union.+Le contenu d'un registre est représenté par une boîte à 8 slots avec une ligne en gras. Chaque slot représente un bit. Les rangs des bits sont marqués au-dessus de la boîte - en croissant de droite à gauche. Puisque AVR est un micro-contrôleur de 8 bits, la plupart des registres sont de 8 bits aussi. Il y a quelques exceptions, quelques registres sont de 16 bits, mais ils consistent en réalité en deux registres de 8 bits. Comme chaque registre a un nom, chaque bit dans le registre a aussi un nom - comme les boutons sur un lecteur de cassette. Chaque bit est décrit dans la fiche technique. Les noms de bit sont des abréviations et la lettre n minuscule peut être remplacée par l'index du module, comme avec les noms de registre. Quelques registres n'utilisent pas tous les 8 bits, dans ce cas le slot du bit est marquée avec un trait d'union.
  
 Au-dessous des bits du registre on trouve deux lignes, qui définissent si le bit est en lecture (R), en écriture (W) ou les deux (R/W). Par exemple, les bits de statut ne peuvent pas être écrasés et même s'il est essayé dans le programme, le bit restera inchangé. Si le bit est marqué en écriture, la lecture aboutira toujours à une valeur spécifique définie dans la fiche technique. La deuxième ligne spécifie la valeur par défaut du bit, valeur prise après chaque remise à zéro du micro-contrôleur. Au-dessous des bits du registre on trouve deux lignes, qui définissent si le bit est en lecture (R), en écriture (W) ou les deux (R/W). Par exemple, les bits de statut ne peuvent pas être écrasés et même s'il est essayé dans le programme, le bit restera inchangé. Si le bit est marqué en écriture, la lecture aboutira toujours à une valeur spécifique définie dans la fiche technique. La deuxième ligne spécifie la valeur par défaut du bit, valeur prise après chaque remise à zéro du micro-contrôleur.
fr/avr/registers.1268926166.txt.gz · Last modified: 2020/07/20 09:00 (external edit)
CC Attribution-Share Alike 4.0 International
www.chimeric.de Valid CSS Driven by DokuWiki do yourself a favour and use a real browser - get firefox!! Recent changes RSS feed Valid XHTML 1.0