Quadroped Robot - (montage NIOSII) (9 / 13 étapes)

Étape 9: Codage - Setup & la boucle d’exécution

Nous maintenant coder la configuration initiale du système et puis le mettre dans une simple boucle d’exécution.

La configuration implique permettant à tous les périphériques pour déclencher les interruptions et en affectant au départ les moteurs OFF.

Je dois souligner que ce code est précédé de la section .data et les fonctions du gestionnaire. En outre, les instructions suivantes ont déjà été faites :

.EQU minuterie, 0x10002000
.EQU LEGO, 0x10000060
.EQU LEGO_IRQ11, 0 x 800
.EQU LEGO_IRQ8, 0 x 100
.EQU LEGO_Edge, 0x1000006C
.EQU JTAG_UART, 0x10001000
.EQU LEDG, 0x10000010
.EQU LEDR, 0 x 10000000

Alors, commençons.

.section .text
.global pokemonmaster # lol. Lorsque vous écrivez du code pour votre robot, appelez vos fonctions comme vous voulez.
pokemonmaster :
MOVIA r27, 0x800000 / * initialiser la pile (alignée sur la 4) * /
MOVIA r8, minuterie
MOVIA r9, 0x6500 / * du ensemble temps de compte à rebours de 10 secondes 500000000 = 1DCD6500 * /
stwio r9,8(r8)
MOVIA r9, 0x1DCD
stwio r9,12(r8)
MOVIA r9, 0 x 0 / * veiller à ce que la minuterie est propre * /
stwio r9,0(r8)
ldwio r9,0(r8) / * juste pour voir ce qui se passe ici * /

MOVIA r11, LEGO / * l’adresse de base de la GPIO est maintenant en r11 * /
MOVIA r9, 0x07f557ff / * initialisation de Lego de contrôle des stupéfiants dans r9 * /
stwio r9, 4(r11) / * magasins dans le registre de Direction * /
MOVIA r9, 0xFFFFFFFF
stwio r9, 0(r11)
# E:load:value
MOVIA r9, 0xff3ffbff / * capteur 0, le seuil est HEX E 1111|1-111|0-0-1-1-11-11-11-11-10-11-11-11-11-11 * /
stwio r9,0(r11)
# E:load:value
MOVIA r9, 0xff3fefff / * capteur 1, le seuil est HEX E 1111|1-111|0-0-1-1-11-11-11-10-11-11-11-11-11-11 * /
stwio r9,0(r11)

MOVIA r9, 0xffbfffff / * désactiver les capteurs pour le chargement * /
stwio r9,0(r11)

MOVIA r9, 0xffdfffff / * en mode état * /
stwio r9,0(r11)

movia r9,0x18000000     /******************************************************************/
stwio r9,8(r11)

MOVIA r8, JTAG_UART / * r8 contient maintenant l’adresse de base de JTAG_UART * /
/ * Dire l’UART pour demander des interruptions lors de la réception des caractères * /
addi r9, r0, 0 x 1 / * set bit 0 (REI) du Registre RSE pour 1 * /
stwio r9, 4(r8)

addi r9, r0, 0x900 / * valeur bits 11 et 8 de ctl3 1 * /
wrctl ctl3, r9

MOVIA r9, 1
wrctl ctl0, r9

MOVIA r9, LEGO_Edge / * effacer la gâchette de bord capteur lego * /
stwio r0,0(r9)

run_loop :
MOVIA r9, LEDG
MOVIA r20, LEGO

ldwio r19,0(r20)
SRLI r19, r19, 26
stwio r19,0(r9)
MOVIA r9, LEGO_Edge
stwio r0,0(r9)
BR run_loop

.global wall_escape_left
wall_escape_left: / * tours a laissé une certaine distance pour éviter un mur * /
MOVIA r8, minuterie
STW r0,0(r8)

MOVIA r9, 0 x 4 / * démarre la minuterie mais non continue (nécessite le redémarrage intentionnelle) * /
STW r9,4(r8) / * démarrer la minuterie pour un run de période 1 * /
MOVIA r4, LEGO / * déplace l’adresse du contrôleur de moteur dans la r4 pour la fonction * /
addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
appel motors_turn_left
LDW ra,0(sp)
LDW r8,4(sp)
LDW r9,8(sp)
LDW r11,12(sp)
addi sp, sp, 16
LEFT_LOOP :
LDW r9,0(r8) / * savoir si le drapeau est allé vers le haut (une période passée) * /
MOVIA r10, 0 x 00000001
et r9, r9, r10
BEQ r9, r10, LEFT_CLEAR / * si la minuterie est expirée... * /
BR LEFT_LOOP
LEFT_CLEAR :
STW r0,0(r8) / * effacer l’indicateur * /
addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
MOVIA r4, LEGO
appelez le motors_forward / * commencer à marcher vers l’avant à nouveau * /
LDW ra,0(sp) / * ramener l’adresse de retour * /
LDW r8,4(sp)
LDW r9,8(sp)
LDW r11,12(sp)
addi sp, sp, 16 / * rétrécir la pile vers le bas * /
RET

.global wall_escape_right
wall_escape_right :
MOVIA r8, minuterie
STW r0,0(r8)

MOVIA r9, 0 x 4
STW r9,4(r8)
MOVIA r4, LEGO / * déplace l’adresse du contrôleur de moteur dans la r4 pour la fonction * /
addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
appel motors_turn_right
LDW ra,0(sp)
LDW r8,4(sp)
LDW r9,8(sp)
LDW r11,12(sp)
addi sp, sp, 16
RIGHT_LOOP :
LDW r9,0(r8)
MOVIA r10, 0 x 00000001
et r9, r9, r10
BEQ r9, r10, RIGHT_CLEAR
BR RIGHT_LOOP
RIGHT_CLEAR :
STW r0,0(r8)
addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
MOVIA r4, LEGO
appel motors_forward
LDW ra,0(sp)
LDW r8,4(sp)
LDW r9,8(sp)
LDW r11,12(sp)
addi sp, sp, 16
RET

Si c’était beaucoup trop confus, je suis totalement heureux de répondre question. Il suffit de leur demander ci-dessous.

Articles Liés

Boucliers d’attache rapide

Boucliers d’attache rapide

nous sommes Cougar robotique 4251 et c'est pour le programme de commandites de Instructables.Des protections sont un élément essentiel pour un robot concurrentiel de la FTC. Ils gardent des choses extérieures hors de votre bot et toutes vos choses à
Digilent MRK + Instructions de montage pour le Robot qui suit-ligne

Digilent MRK + Instructions de montage pour le Robot qui suit-ligne

Vue d'ensembleLe Kit de Robot à moteur Digilent suivi de ligne (ligne + MRK) fournit le point de départ parfait pour ceux nouveaux à la robotique, mais a le pouvoir de servir aux conceptions avancées et applications ainsi. Les paires MRK + ligne notr
Smart Robot Kit montage

Smart Robot Kit montage

fondamentalement un charmant assemblage requis, chômeurs rumba son pour ceux qui ne lisent pas les instructions qui ne sont pas Instructables parce que le pénis A:, B: vous ne faites pas confiance au système autant qu'un gars au hasard sur l'internet
IoT - contrôler un Robot de Pi framboise sur internet avec HTML et shell scripts seulement

IoT - contrôler un Robot de Pi framboise sur internet avec HTML et shell scripts seulement

(Si vous aimez cette Instructables, n'oubliez pas de voter à ce sujet (ci-dessus : drapeau de coin à droite). il est en concurrence sur l'INTERNET des objets et des concours d'automatisation. Merci beaucoup! ;-)Dans cette instructables, nous allons a
Robot simple Pi

Robot simple Pi

Simple Robot Pi vise à mettre contrôle robot en forme simple, la conception d'un robot est similaire à la polyvalente robot GOPIGO construit par industries dextre.La liste des piècesFramboise (1) pi (tout modèle) mais avec le récent lancement de pize
Bot de chien : Lego Robot Rover avec Webcam

Bot de chien : Lego Robot Rover avec Webcam

Voici comment faire un robot Lego, que vous pouvez contrôler de n'importe quel écran via wifi. Il a également une webcam donc vous pouvez voir où votre cours et la LED s'allume pour les yeux ! Il s'agit d'un grand projet à faire avec vos enfants car
Les tirelires robot

Les tirelires robot

Faire le robot ami, pas ennemi de robot.Faire quelque chose à compter pour garder votre petite monnaie en un seul endroit. Mettre en place pour qu'arduino, voiture d'occasion ou un collège.Réutiliser les contenants en plastique pour enregistrer vos p
Fraise de mousse robot

Fraise de mousse robot

Dans le cadre des choses pour moi et mes clients, j'ai effectuer fréquemment des tâches fastidieuses qui pourraient être automatisées. L'une d'entre elles est la coupe de feuilles de mousse en gros rouleau. Dans la photo, vous voyez le rouleau de mou
Mini Robot Platform

Mini Robot Platform

L'objectif de ce projet est de développer un châssis miniature pour expérimenter avec des robots essaim très basique. L'inspiration principale est fantastique projet MIT de James McLurkin depuis le début des années 1990 http://www.ai.mit.edu/projects
Projet de Circuit - 1er papier papier Blinky Robot

Projet de Circuit - 1er papier papier Blinky Robot

Cet amusant petit projet est une introduction rapide et bon marchée aux circuits de papier. Il utilise aussi robuste autoportante gens de papier de mon précédent ' ible (Magnet lumineux est un joyeux petit robot avec un joyeux feu rouge sur la tête.
Une main robotique modulaire & bras (avec la gamme étendue de mouvement) (3D imprimés)

Une main robotique modulaire & bras (avec la gamme étendue de mouvement) (3D imprimés)

Bonjour à tous ! Il s'agit de ma prothèse de bras et des mains de prototype que j'ai été la conception depuis plusieurs mois maintenant. C'est encore un peu d'un work in progress, et depuis que je suis en finir avec les classes de collège pour le sem
Comment faire des petits robots avec nRover Conseil

Comment faire des petits robots avec nRover Conseil

Le nRover, est une petite planche conçue pour construire des petits robots comme UGV (véhicules sans pilote au sol), suiveur de ligne ou à la domotique, il peut être contrôlé par wifi, Bluetooth ou radio de contrôle. L'objectif principal est le dével
Otto - build vous possédez robot en deux heures !

Otto - build vous possédez robot en deux heures !

Qui est Otto ?Un robot interactif que n'importe qui peut le faire !Que peut faire les Otto ?Otto promenades, danse, produit des bruits et évite les obstacles.Pourquoi est-ce que Otto a spécial ?Otto est complètement open source, compatible Arduino, 3
Enhanced Robot Spider

Enhanced Robot Spider

Je suis toujours à la recherche d'un nouveau projet de le faire à mon atelier robotique pour les enfants. Alors que les araignées robots sont intrigantes, la quasi-totalité d'entre eux sont soit trop complexes impliquant 10 + servos ou budget de mani