Quadroped Robot - (conjunto NIOSII) (9 / 13 paso)

Paso 9: Codificación - la disposición y el bucle de ejecución

Ahora el código la configuración inicial del sistema y entonces puesto le en un bucle de ejecución simple.

La configuración consiste en permitir que todos los dispositivos para accionar interrupciones e inicialmente los motores en OFF.

Debo señalar que este código está precedido por la sección. Data y las funciones de controlador. Además, ya se hicieron las siguientes declaraciones:

.equ temporizador, 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, 0x10000000

Por lo tanto, vamos a empezar.

.Section .text
.global pokemonmaster # lol. Cuando se escribe el código para tu robot, llamar a sus funciones lo que quieras.
pokemonmaster:
movia r27, 0x800000 / * inicializar la pila (alineada a 4) * /
movia r8, temporizador
movia r9, 0x6500 / * de conjunto tiempo de cuenta regresiva de 10 segundos 500000000 = 1DCD6500 * /
stwio r9,8(r8)
movia r9, 0x1DCD
stwio r9,12(r8)
movia r9, 0 x 0 / * Asegúrese de que el temporizador esté limpio * /
stwio r9,0(r8)
ldwio r9,0(r8) / * sólo para ver lo que está sucediendo aquí * /

movia r11, LEGO / * la dirección base de la GPIO está ahora en r11 * /
movia r9, 0x07f557ff / * inicialización de la Junta de control de Lego en r9 * /
stwio r9, 4(r11) / * tiendas en el registro de la dirección * /
r9 de movia, 0xFFFFFFFF
stwio r9, 0(r11)
# E:load:value
movia r9, 0xff3ffbff / * Sensor 0, umbral es hexagonal 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 / * Sensor 1, umbral es hexagonal 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 / * deshabilitar sensores de carga * /
stwio r9,0(r11)

movia r9, 0xffdfffff / * se pone en modo de estado * /
stwio r9,0(r11)

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

movia r8, JTAG_UART / * r8 ahora contiene la dirección base JTAG_UART * /
/ * Dile el UART para solicitar interrupciones cuando se reciben caracteres * /
Addi r9, r0, 0 x 1 / * set bit 0 (REI) del registro RSC a 1 * /
stwio r9, 4(r8)

Addi r9, r0, 0x900 / * bits 11 y 8 de ctl3 el valor 1 * /
wrctl ctl3, r9

movia r9, 1
wrctl ctl0, r9

movia r9, LEGO_Edge / * borrar el disparador de borde del sensor de lego * /
stwio r0,0(r9)

run_loop:
r9 de movia, LEDG
movia r20, LEGO

ldwio r19,0(r20)
SRLI r19, r19, 26
stwio r19,0(r9)
movia r9, LEGO_Edge
stwio r0,0(r9)
run_loop br

.global wall_escape_left
wall_escape_left: / * vueltas a cierta distancia para evitar una pared a la izquierda * /
movia r8, temporizador
STW r0,0(r8)

movia r9, 0x4 / * inicia el temporizador pero no continuo (necesita reinicio intencional) * /
STW r9,4(r8) / * iniciar el temporizador para un funcionamiento periodo 1 * /
r4 de movia, LEGO / * mueve la dirección del controlador motor en r4 para la función * /
Addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
llamar al 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:
r9,0(r8) LDW / * averiguar si la bandera se ha ido para arriba (ha pasado un período) * /
r10 de movia, 0 x 00000001
y r9, r9, r10
BEQ r9, r10, LEFT_CLEAR / * si el temporizador de tiempo... * /
br LEFT_LOOP
LEFT_CLEAR:
STW r0,0(r8) / * borrar la bandera * /
Addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
r4 de movia, LEGO
llamar al motors_forward / * empezar a caminar hacia adelante otra vez * /
ra,0(sp) LDW / * devolver la dirección de retorno * /
LDW r8,4(sp)
LDW r9,8(sp)
LDW r11,12(sp)
Addi sp, sp, 16 / * reducir la pila hacia abajo * /
RET

.global wall_escape_right
wall_escape_right:
movia r8, temporizador
STW r0,0(r8)

movia r9, 0x4
STW r9,4(r8)
r4 de movia, LEGO / * mueve la dirección del controlador motor en r4 para la función * /
Addi sp, sp, -16
STW r11,12(sp)
STW r9,8(sp)
STW r8,4(sp)
STW ra,0(sp)
llamar al 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)
r10 de movia, 0 x 00000001
y 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)
r4 de movia, LEGO
llamar al motors_forward
LDW ra,0(sp)
LDW r8,4(sp)
LDW r9,8(sp)
LDW r11,12(sp)
Addi sp, sp, 16
RET

Si era demasiado confuso, estoy totalmente feliz de responder la pregunta. Sólo les pedimos a continuación.

Artículos Relacionados

Mi séptimo proyecto: Conjunto de brazo de Robot

Mi séptimo proyecto: Conjunto de brazo de Robot

Hice en el pasado el uso de Smart tanque chasis 4 proyectos y quiero hacer algo muy diferente. Después de buscar en google y considerar diferentes materias por un par de días, me encontré con el conjunto del brazo Robot. Se ve impresionante! Proporci
Robot de Instructables de Minecraft

Robot de Instructables de Minecraft

No sé ustedes pero me encanta el Instructables Robot. Así que decidí hacer uno en Minecraft. Su bastante grande y es hueco. Convertí el interior de una casa. Espero que disfruten este instructable. No te olvides de votar.Paso 1: Lo que usted necesita
Mejorado el Robot araña

Mejorado el Robot araña

Siempre estoy buscando un nuevo proyecto para hacer en mi taller de robótica para niños. Mientras que robots araña son intrigantes, casi todos ellos son o demasiado complejas que implican 10 + servos o manera demasiado presupuesten para mi taller. En
Captar las ondas gravitacionales: Robots de realidad aumentada enseñar fundamentos de física para niños y adultos

Captar las ondas gravitacionales: Robots de realidad aumentada enseñar fundamentos de física para niños y adultos

Hacer invisible de las ondas gravitacionales, ondas de radio, ondas de sonido, etc., abarcable y más comprensible con la robótica de AR (realidad aumentada) mediante un sencillo dispositivo inventado en la edad de 12, en 1974. Este dispositivo es tan
Android Robot Lego

Android Robot Lego

En este proyecto construiremos un robot Lego Android. El nivel de dificultad de este tutorial es sencillo y está diseñado para adultos y niños. Habrá dos secciones principales de este tutorial, la cabeza y el cuerpo.Paso 1: Materiales y herramientasL
Robot de LEGO con la cámara GoPro

Robot de LEGO con la cámara GoPro

El drone que vamos a construir no solo será otro quadcopter descerebrado. Éste será capaz de regreso completamente autónoma a aterrizaje de hogar, autónomo, GPS asistido de vuelo, volar a alturas increíbles, velocidades, lo suficientemente fuertes pa
Ingeniería dibujo Robot

Ingeniería dibujo Robot

En este proyecto proponemos un sistema de dibujo robótico educativo para el aprendizaje de propósito. Nuestro sistema utiliza robot para dibujar la proyección de líneas y toda la ingeniería geometría como el cubo, triángulo, cuadrado, polígono autóno
Robot que se separa de la semilla

Robot que se separa de la semilla

el verano pasado fue traído a mi atención que se podía comprar casi todo lo necesario para automatizar cuidado césped pero una semilla propagación robot. Esto me intrigó. Para empezar, ¿por qué en la tierra nadie haría robots de cuidado de césped en
Pez robot (para la inspección de la cisterna)

Pez robot (para la inspección de la cisterna)

En este proyecto, se describe paso a paso, el proceso de hacer un robot pescado. No es fácil para la electrónica sobrevivir natación. Este robot tiene algunos comportamientos básicos, por ejemplo, cuando la nariz detecta una colisión, el pez se vuelv
Robot controlado por Android para principiantes (A Z)

Robot controlado por Android para principiantes (A Z)

¿Te gustan los Robots? ¿Eres nuevo en robótica? ¿Es usted pensando en construir un Robot desde cero? Si es así, este instructables es para usted. En este instructables voy a mostrarles cómo pueden construir un robot desde cero, también te muestro cóm
Laberinto Robot Solver, utilizando Inteligencia Artificial con Arduino

Laberinto Robot Solver, utilizando Inteligencia Artificial con Arduino

(Si te gusta este Instructable, no olvide votar en ella (por encima de: bandera de la esquina a la derecha). Rex, el Robot está compitiendo en robótica y sensores concursos. ¡Muchas gracias! ;-)Este Instructable fue desarrollado en mi último proyecto
Línea seguidor Robot - Control PID - Setup Android

Línea seguidor Robot - Control PID - Setup Android

== > Este proyecto obtuvo el 2 º premio en concurso de robótica de 2016.Muchas gracias por los votos ;-)El propósito de este proyecto es construir un Robot seguidor de línea con control PID. También utilizamos un dispositivo Android para configurar f
Robot Educativo Fischertechnik Arduino (RAFA)

Robot Educativo Fischertechnik Arduino (RAFA)

Con de robot de la ONU "crear como este proyecto trata de" fines educativos usando el sistema Fishertechnik y potenciandolo con todas las prestaciones de Arduino, con ello conseguimos una plataforma educativa:-muy versátil-adaptable a diferentes
Compañero de cama Robot cama

Compañero de cama Robot cama

Compañero de cama es una cama de robot autónomo que busca nuevos contratos. En otras palabras, he robotizado mi cama personal para socializar y compartir de sí mismo con otros.Tal vez un poco más de una explicación está en orden. Un acompañante puede