Étape 7: Codage - les fonctions motrices
Tout d’abord, créez un nouveau.s fichier pour vos fonctions motrices. Nous allons faire référence à ces fonctions dans notre code plus tard, donc c’est agréable de les mettre tous au même endroit. Aussi - n’oubliez pas que, dans l’Assemblée, les valeurs d’entrée aux fonctions sont passées dans r4, r5, r6, r7 et ensuite sur la pile. On assumera que l’adresse de commande du moteur sera passé avec la r4.Pour économiser de l’espace, j’appellerai simplement tous les éclater et en poussant de la pile avec #pop et #push respectivement. Afin de préciser à tous les nouveaux à l’Assemblée, popping et poussant se réfère à l’enregistrement des données de registre de la mémoire afin que les registres peuvent être utilisés pour autre chose, et mettre les valeurs à l’époque où cette chose se fait:)
.global motors_forward # REMEMBER THE .global ! Si vous n’avez pas, vous vous demanderez pourquoi vous ne pouvez pas utiliser vos fonctions.
motors_forward :
#push
MOVIA r9, 0x004000008
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_reverse :
#push
MOVIA r9, 0x00400000a
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_stop :
#push
MOVIA r9, 0x004000ff
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_turn_left :
#push
MOVIA r9, 0x0040000b
stwio r9,0(r4)
#pop
RET
.global motors_forward
motors_turn_right :
#push
MOVIA r9, 0x0040000c
stwio r9,0(r4)
#pop
RET
Maintenant, quiconque connaît ces moteurs à l’intérieur et dehors citerai maintenant que nous utilisons seulement une jambe définie lors d’un virage, et que c’est inefficace. Je suis d’accord, et à l’origine, nous avons eu les deux jambes aider dans le tournant. Malheureusement, nos jambes ont souffert d’un manque de rigidité, et sur des surfaces de friction élevée (classiquement bons pour robots marcheurs), Hecaton presque déchiré lui-même. Ainsi, nous avons collé avec un face turn. N’hésitez pas à modifier cette option, ou ajoutez à cela comme bon vous semble.
Pour plus de commodité, j’ai inclus le fichier motors.s que nous avons écrit pour notre robot ci-dessous :