Arrancando Métodos En Los Cogs - Parallax Propeller Manual Del Usuario

Kit educativo
Tabla de contenido
Arrancando métodos en los Cogs
Todos los métodos en los objetos hasta este punto se han ejecutado en un solo Cog del chip Propeller,
el Cog 0. Cada vez que el método
LED parpadeaba a la vez. El método
diferentes parámetros para hacer que los LEDs parpadeen simultáneamente. El objeto BlinkWithCogs
mostrado en la Figura 5-4 muestra cómo hacer esto con los 3 comandos
El primer método en el objeto superior automáticamente arranca en el Cog 0 por lo que el método
Blink del objeto
BlinkWithCogs
instrucciones por lo que el Cog 0 se apaga. Mientras tanto los otros 2 Cogs se iniciaron cada uno
correo por 3 segundos. Después de que el último Cog se queda sin instrucciones el chip Propeller se
va a bajo consumo.
Figura 5-4: Arrancando métodos en Cogs con pase de parámetros
Arranque en
Cog 1
Arranque en
Cog 2
Arranque en
Cog 3
Mientras que el Cog 0 accesa RAM global no usada que viene después del código de programa para
almacenar direcciones de regreso en llamadas de método, variables locales y cálculos de expresiones
intermedias, otros Cogs que ejecutan métodos Spin deben tener variables para ellos. Tal espacio
variable reservado en RAM global para esas actividades temporales se llama espacio de pila y los
datos almacenados en cualquier momento es la pila. Note que el objeto
5-4 tiene una declaración variable de pila
llamadas
con 30 elementos
stack
El comando
cognew(Blink(4, clkfreq/3, 9), @stack[0])
disponible con los parámetros
pasa la dirección del arreglo
usando
y hacia arriba el regreso de dirección, variables locales y cálculos intermedios. El
9)
stack[0]
comando
cognew(Blink(5, clkfreq/7, 21), @stack[10])
Cog 2 con un apuntador a la dirección
Luego
cognew(Blink(6, clkfreq/11, 39), @stack[20])
método y diferente dirección en el arreglo
se llamaba, era llamado en secuencia, por lo que solo un
Blink
puede arrancar en diferentes Cogs, cada uno con
Blink
arranca en el Cog 0. Se ejecutan 3 comandos
'' BlinkWithCogs.spin
VAR
long stack[30]
PUB LaunchBlinkCogs
cognew(Blink(4, clkfreq/3, 9), @stack[0])
cognew(Blink(5, clkfreq/7, 21), @stack[10])
cognew(Blink(6, clkfreq/11, 39), @stack[20])
PUB Blink( pin, rate, reps)
dira[pin]~~
outa[pin]~
repeat reps * 2
waitcnt(rate/2 + cnt)
!outa[pin]
long stack[30]
,
,
[0]
stack[1]
stack[2]
,
, y
lo cual sucede en el Cog 1. El argumento
4
clkfreq/3
9
al Cog 1. Así el Cog 1 inicia ejecutando
stack[0]
en RAM para usar desde
stack[10]
stack.
Kit Educativo de Practicas Propeller: Fundamentos · Página 73
5: Prácticas de Métodos y Cogs
.
cognew
cognew
Cog 0
Comandos LaunchBlinkerCogs
Cog 1
Blinker(4, clkfreq/3, 9)
RAM @stack[0]
Cog 2
Blinker(5, clkfreq/7, 21)
RAM @stack[10]
Cog 3
Blinker(6, clkfreq/11, 39)
RAM @stack[20]
BlinkWithCogs
. Esto declara un arreglo de variables long
, ...,
,
stack[28]
stack[29]
llama al método
Blink
Blink(4, clkfreq/3,
inicia
Blink(5, clkfreq/7, 21)
stack[10]
hace lo mismo con diferentes parámetros de
y se queda sin
en la Figura
.
en el siguiente Cog
]
@stack[0
en el
hacia arriba.
Tabla de contenido
loading

Tabla de contenido