Software del Control de Motor
La
Figura 53
muestra un diagrama de flujo que describe la nueva interrupción RTI software. El único
cambio funcional de la rutina de PWM desarrollada antes en este capítulo, es añadir una instrucción al principio
de la rutina de servicio de interrupción RTI. Esta instrucción decrementa la variable RTIDlyCnt. Esta variable se
usa para las tres rutinas que leen la entrada de los pulsadores para desarrollar un retardo contra los rebotes de los
pulsadores.
Como se mencionó en el capítulo de Programación , normalmente hay muchas maneras de realizar una
tarea específica usando el juego de instrucciones del microcontrolador. Para demostrar esto, una parte de la
rutina de interrupción RTI revisada, tiene implementada una ligera diferencia. Se puede revisar el
Listado del Programa de Control de Velocidad
partes, la variable PWMFine y la variable PWMCoarse. Para hacer esto, se usa una combinación de
instrucciones de desplazamientos y de rotaciones
para poner los cuatro bits más altos del
acumulador A (DesiredPWM) en los cuatro bits
más bajos del registro X (PWMCoarse) y los
cuatro bits más bajos del acumulador A en los
cuatro
bits
más
altos
(PWMFine). Este método requiere nueve bytes de
memoria de programa y 26 ciclos de CPU.
Usando la alternativa del
Listado del Programa de Control de Velocidad
se puede conseguir el mismo resultado en sólo tres
bytes de memoria de programa y 13 ciclos de
CPU.
La rutina RTIInt en el
del Programa
de Control de Velocidad
demuestra la alternativa. La secuencia original de
la instrucción de 9-bytes, se ha reemplazado con
dos instrucciones, LDX #16 y MUL. La
instrucción
MUL
multiplica
acumulador por el valor en el registro de índice y
pone el resultado en X:A (encadenamiento de X y
A). Multiplicando un número binario por 16 es
equivalente a desplazar el valor izquierdo por
cuatro posiciones. Igual como en la aplicación
original, los cuatro bits más altos de DesiredPWM
están ahora en los cuatro bits más bajos del
registro X (PWMCoarse) y los cuatro bits más
bajos del registro A se
han movido en los cuatro
bits más altos del registro
A (PWMFine).
El diagrama de
flujo de la
Figura 54
describe la rutina del
bucle
principal
del
módulo de control de motor. Este módulo verifica
el estado de cada una de las tres entradas de los
pulsadores. Si se pulsa cualquiera de los tres
pulsadores, se llama a una rutina que maneja estas
acciones para este pulsador. Si no hay ningún
pulsador pulsado, el bucle principal se repite.
, que se tenía compartida la variable DesiredPWM en dos
del
acumulador
A
Listado 6.
,
Listado 6. Listado
el
valor
del
Figura 53. Diagrama de Flujo de la Rutina RTI Revisada
106
Listado 6.