Modifications

Sauter à la navigation Sauter à la recherche
426 octets ajoutés ,  19 avril 2015 à 09:47
aucun résumé de modification
Ligne 1 : Ligne 1 :  
{{MicroPython-Hack-Prepare-NAV}}
 
{{MicroPython-Hack-Prepare-NAV}}
  −
{{traduction}}
      
== introduction ==
 
== introduction ==
Ligne 36 : Ligne 34 :  
* {{fname|stm}} est un module qui offre un ensemble de constante pour facilement accéder plus facilement aux différents registres du microcontrôleur de la PyBoard. Essayer d'exécuter {{fname|import stm}} puis {{fname|help(stm)}} sur l'invite REPL. Cela vous fournira toutes les constantes disponibles.
 
* {{fname|stm}} est un module qui offre un ensemble de constante pour facilement accéder plus facilement aux différents registres du microcontrôleur de la PyBoard. Essayer d'exécuter {{fname|import stm}} puis {{fname|help(stm)}} sur l'invite REPL. Cela vous fournira toutes les constantes disponibles.
 
* {{fname|stm.GPIOA}} est l'adresse, en mémoire, du périphérique GPIOA. Sur la carte PyBoard, la LED rouge est sur le "port A", broche PA13.
 
* {{fname|stm.GPIOA}} est l'adresse, en mémoire, du périphérique GPIOA. Sur la carte PyBoard, la LED rouge est sur le "port A", broche PA13.
* {{fname|movwt}} déplace un nombre 32-bit dans un registre. It is a convenience function that turns into 2 thumb instructions: {{fname|movw}} followed by {{fname|movt}}. The {{fname|movt}} also shifts the immediate value right by 16 bits.
+
* {{fname|movwt}} déplace un nombre 32-bit dans un registre (un ''word''). C'est une fonction bien pratique qui exécute les deux fonctions basiques suivantes: {{fname|movw}} suivit de {{fname|movt}}. Le {{fname|movt}} décale (''shift'') la valeur de 16 bits (''à droite'').
* {{fname|strh}} stores a half-word (16 bits). The instruction above stores the lower 16-bits of {{fname|r1}} into the memory location {{fname|r0 + stm.GPIO_BSRRL}}. This has the effect of setting high all those pins on port A for which the corresponding bit in {{fname|r0}} is set. In our example above, the 13th bit in {{fname|r0}} is set, so PA13 is pulled high. This turns on the red LED.
+
* {{fname|strh}} stocke un ''half-word'' (16 bits, la moitier d'un ''Word''). L'instruction ci-avant stocke les 16-bits de poids faible de {{fname|r1}} à l'adresse mémoire {{fname|r0 + stm.GPIO_BSRRL}}. Cela à pour effet de placer toutes les broches du port A au niveau haut (HIGH) pour les bit correspondant activé dans le registre {{fname|r0}}. Dans l'exemple ci-dessus, le 13ieme bit dans {{fname|r0}} est activé, donc PA13 est placé au niveau haut (high) ce qui à pour effet d'allumer la LED rouge.
    
== Accepter des arguments ==
 
== Accepter des arguments ==
 +
Une fonction assembleur Inline peut accepter jusqu'à 3 arguments. Si ils sont utilisés, ces arguments doivent être nommés {{fname|r0}}, {{fname|r1}} et {{fname|r2}} pour refléter les registres et les conventions d'appel.
   −
Inline assembler functions can accept up to 3 arguments. If they are used, they must be named {{fname|r0}}, {{fname|r1}} et {{fname|r2}} to reflect the registers and the calling conventions.
+
Voici une fonction qui additionne ces arguments:
 
  −
Here is a function that adds its arguments:
      
  <nowiki>@micropython.asm_thumb
 
  <nowiki>@micropython.asm_thumb
Ligne 49 : Ligne 46 :  
     add(r0, r0, r1)</nowiki>
 
     add(r0, r0, r1)</nowiki>
   −
This performs the computation {{fname|1=r0 = r0 + r1}}. Since the result is put in {{fname|r0}}, that is what is returned. Try {{fname|asm_add(1, 2)}}, it should return 3.
+
Cette fonction exécute le calcul {{fname|1=r0 = r0 + r1}}. Etant donné que le résultat est placé dans le registre {{fname|r0}}, ce sera donc la valeur qui sera retournée.  
 +
 
 +
Essayez la commande {{fname|asm_add(1, 2)}} qui devrait retourner la valeur 3.
    
== Les boucles ==
 
== Les boucles ==
We can assign labels with {{fname|label(my_label)}}, and branch to them using {{fname|b(my_label)}}, or a conditional branch like {{fname|bgt(my_label)}}.
+
Nous pouvons assigner un libellé (''label'' en anglais) a l'aide de {{fname|label(mon_label)}}, et faire sauter l'exécution du code vers l'étiquette (''to branch'' en anglais) en utilisant {{fname|b(mon_label)}}, ou un branchement conditionnel tel que {{fname|bgt(mon_label)}}.
   −
The following example flashes the green LED. It flashes it {{fname|r0}} times.
+
L'example de code suivant fait clignoter la LED vertes. La LED clignotera {{fname|r0}} fois.
    
  <nowiki>@micropython.asm_thumb
 
  <nowiki>@micropython.asm_thumb
 
def flash_led(r0):
 
def flash_led(r0):
     # get the GPIOA address in r1
+
     # placer l'adresse GPIOA dans r1
 
     movwt(r1, stm.GPIOA)
 
     movwt(r1, stm.GPIOA)
   −
     # get the bit mask for PA14 (the pin LED #2 is on)
+
     # obtenir un masque de bits pour PA14 (broche de la LED #2)
 
     movw(r2, 1 << 14)
 
     movw(r2, 1 << 14)
   Ligne 68 : Ligne 67 :  
     label(loop1)
 
     label(loop1)
   −
     # turn LED on
+
     # allumer la LED
 
     strh(r2, [r1, stm.GPIO_BSRRL])
 
     strh(r2, [r1, stm.GPIO_BSRRL])
   −
     # delay for a bit
+
     # attendre un moment
 
     movwt(r4, 5599900)
 
     movwt(r4, 5599900)
 
     label(delay_on)
 
     label(delay_on)
Ligne 78 : Ligne 77 :  
     bgt(delay_on)
 
     bgt(delay_on)
   −
     # turn LED off
+
     # éteindre la LED
 
     strh(r2, [r1, stm.GPIO_BSRRH])
 
     strh(r2, [r1, stm.GPIO_BSRRH])
   −
     # delay for a bit
+
     # Attendre un peu
 
     movwt(r4, 5599900)
 
     movwt(r4, 5599900)
 
     label(delay_off)
 
     label(delay_off)
Ligne 88 : Ligne 87 :  
     bgt(delay_off)
 
     bgt(delay_off)
   −
     # loop r0 times
+
     # boucler r0 fois
 
     sub(r0, r0, 1)
 
     sub(r0, r0, 1)
 
     label(loop_entry)
 
     label(loop_entry)
29 917

modifications

Menu de navigation