8 canales temporizador programable (4 / 13 paso)

Paso 4: Interrupciones de teclado

Quería hacer uso de la interrupción PORTB interrupción cambio de oprimir cualquier tecla. Para ello, una interrupción de la costumbre tuvo que ser creado en Flowcode, para esa dirección de PORTB y datos es configurar correctamente antes y después de cada interrupción de teclado. Una interrupción es generada cada vez que un botón es presionado o liberado. La rutina de interrupción solo responde cuando se presiona una tecla.

INTERRUPCIÓN PERSONALIZADO

Código de habilitación

PORTB = 0b00001110;
TRISB = 0b11110001;

INTCON. RBIE = 1;

intcon2. RBIP = 1;

intcon2. RBPU = 1;

rcon. IPEN = 0;

Código del controlador

Si (intcon & (1 << RBIF))

{FCM_%n();

PORTB = 0b00001110;

TRISB = 0b11110001;

WREG = portb;

clear_bit (intcon, RBIF);

}

Se encontraron problemas

Durante una interrupción, la rutina de servicio de interrupción debe sin condiciones, llamar a cualquier otro macro que podría utilizarse en algún lugar en el resto del programa. Esto llevará eventualmente a pila problemas de desbordamiento, como la interrupción puede ocurrir al mismo tiempo que el programa principal está en la misma subrutina. Esto es también identificado como un grave ERROR por Flowcode cuando se compila el código.

En el código de la costumbre del teclado debajo de GetKeyPadNumber, hay tal llamada a la macro Delay_us, que causa un desbordamiento de pila. Para superar esto, he quitado el comando Delay_us(10) y lo reemplazó con 25 líneas de "wreg = porta;" comandos. Este comando Lee PORTA y coloca su valor en el registro W, sólo para conseguir algo de retraso. Este comando se compilarán en una sola instrucción similar al ensamblador movf porta, 0. El reloj de 10MHz utilizado en el proyecto, cada instrucción será 400ns, y para obtener una demora en 10us, necesitaba 25 de estas instrucciones.

Nota sobre la segunda línea de la figura 3: código de aduana GetKeypadNumber, que el comando original de delay_us(10) ha sido desactivado con "/ /". Debajo de esto, he añadido mi 25 "wreg = porta;" comandos para obtener un nuevo retraso de 10us. No hay llamadas a todas las macros en el código Keypad_ReadKeypadNumber, la macro de teclado ahora puede utilizarse dentro de una rutina de servicio de interrupción.

Cabe señalar que los componentes de teclado Flowcode y eBlocks no utiliza las resistencias de pull-up estándar en las líneas de entrada. En cambio, utiliza resistencias de pull-down de 100K. Debido a alguna interferencia encontrada en el teclado durante el desarrollo, las resistencias de 100 K fueron sustituidas por 10 K, y todas las resistencias de 10 K sustituido con 1 K 5. El teclado fue probado para trabajar correctamente con puntas de 200mm.

Artículos Relacionados

Movimiento sensible LCD en tiempo real reloj/alarma/temporizador (programa actualizado)

Movimiento sensible LCD en tiempo real reloj/alarma/temporizador (programa actualizado)

necesitaba un reloj para mi oficina en casa (donde me paso las mañanas del fin de semana construyendo robots y tal) y quería que encajen en la decoración de mi banco de trabajo electrónica. Me decidí a construir uno con todas las "entrañas" expu
CAVAPS: 8 canales regulador/programa/grabadora

CAVAPS: 8 canales regulador/programa/grabadora

Composites Advanced VAcuum Pump SystemAl principio, estaba buscando un regulador de la bomba de vacío para evitar la solución de la pérdida controlada y a reducir el tiempo de funcionamiento de la bomba.Pero "quién puede hacer grande puede hacer pequ
Temporizador de funcionamiento del agua

Temporizador de funcionamiento del agua

este proyecto es para la sincronización cuánto tiempo el agua ha estado funcionando desde el grifo de la cocina.  El proyecto utiliza el programa Mircosft pequeño básico y una interfaz Makey Makey para un ordenador.Paso 1: Paso 1 Materiales necesario
Sistema de riego controlado por frambuesa Pi

Sistema de riego controlado por frambuesa Pi

Cada primavera mi esposa obtiene realmente ambiciosa y plantas de un huerto grande. Como el verano se alarga, ambición vueltas a la pereza y por desgracia de que muchas de las plantas mueren una muerte lenta y fulminante negligencia debido a la falta
Hormigón arquitectónico: Casquillos, casquillos de la columna y chimenea hogar y chimenea de la pared

Hormigón arquitectónico: Casquillos, casquillos de la columna y chimenea hogar y chimenea de la pared

Como arquitecto tengo a veces una visión para elemento de diseño o acabado que es difícil o costoso de adquirir o construir. Por ejemplo, molde concreto productos como encimeras o muebles son hermoso y durable, pero relativamente caro.En 2011 fui a p
Láser de CO2 que corta chapa

Láser de CO2 que corta chapa

Nota: realmente no estoy compitiendo para ganar el láser, una camiseta estaría muy bien, gracias.Vi el concurso y pensé que sería divertido para mostrar mi sistema.Introducción. La idea general de este sistema de láser de CO2 es que un haz de luz se
Sistema de control de temperatura usando Labview (Atmega32)

Sistema de control de temperatura usando Labview (Atmega32)

RESUMENEste trabajo describe un marco de encendido, sistemas de control de temperatura proporcional y lineal. El diseño e implementación de este proceso se realiza utilizando LABVIEW, el software de banco de trabajo virtual. El proyecto incluye la ad
Auto Reset de un dispositivo USB.

Auto Reset de un dispositivo USB.

¿No todos odiamos tener que desconecte y vuelva a conectar un dispositivo usb si ha dejado de responder? Mi UIRT USB es la clave a mi casa y automatización de comodidad. En ocasiones bloquea y debo volver a enchufarlo o reiniciar la pc.Aquí es cómo f
INFRA rojo mando ROBOCAR usando AVR (ATMEGA32) MCU

INFRA rojo mando ROBOCAR usando AVR (ATMEGA32) MCU

El presente proyecto describe un diseño e implementación de un infrarrojo (IR) remoto controlado RoboCar que puede ser utilizado para diversas aplicaciones de control sin tripulación automatizado. He diseñado RoboCar controlado remoto (movimiento de
Mi sistema de hidroponía interior de DWC

Mi sistema de hidroponía interior de DWC

este instructable cubrirá la construcción y operación de un sistema de hidroponía cultivo de aguas profundas. Hasta ahora, tengo correctamente cultiva pimientos banana en esta configuración con total facilidad ya que la mayor parte del proceso está a
Configurar su propio servidor Web! ¿

Configurar su propio servidor Web! ¿

Alguna vez has querido tener un lugar donde podía guardar sus archivos y acceder a ellos en cualquier lugar tienes una conexión a Internet? Decir que quisiera tener tu biblioteca de música disponible en caso de que usted quiso darle una canción a uno
Automático Solar Powered invernadero sistema de riego

Automático Solar Powered invernadero sistema de riego

Solía molestarme que dividiría mi tomates debido a la falta de agua mientras estaba en el trabajo, así que decidí construir un sistema de riego automático para que esto no podría suceder! Yo quería que fuese solar alimentado por lo que no tengo que c
Suspendió la iluminación

Suspendió la iluminación

este es un rápido, barato y simple suspendido instalación luz utilizando algunos luz y cadena.La mayoría, si no todos los artículos pueden encontrar alrededor de la casa cochera.  Sólo salió y compró los materiales necesitaba y era capaz de permanece
Proyecto de acuaponia arranque del garage

Proyecto de acuaponia arranque del garage

Acuaponia es utilizando residuos de pescado para alimentar las plantas. A su vez, las plantas ayudan a limpiar el agua de en que los peces viven. Este sistema funciona por bombeo de agua de una pecera a través de un lecho crece, luego dejar drenar el