Diferencia entre revisiones de «Discusión:KBI (Keyboard interrupts) - MC9S08QE128»

De Wikitronica
Saltar a: navegación, buscar
(Página creada con « == Efecto rebote == El microprocesador para una persona es sumamente rápido, nosotros no somos capaces de percibir la ejecución de las instrucciones en tiempo rea...»)
 
 
(No se muestran 6 ediciones intermedias de 2 usuarios)
Línea 1: Línea 1:
   
+
== Comportamiento del KBI ==
== Efecto rebote ==
+
  
 +
Es necesario resaltar en este artículo que los pines del KBI pasan por una compuerta de tipo OR antes de entrar al módulo que genera las interrupciones. Esto quiere decir que si se activan dos pines de manera simultánea el KBI sólo generará una interrupción y no se podrá saber cual de los pines fue el causante. --[[Usuario:Racuna|Racuna]] ([[Usuario discusión:Racuna|discusión]]) 22:58 28 mar 2013 (VET)
  
El microprocesador para una persona es sumamente rápido, nosotros no somos capaces de percibir la ejecución de las instrucciones en tiempo real, por esto,  cuando se habilitan las encuestas o  interrupciones por teclado, puede ocurrir un fenómeno llamado rebote en el cual se acciona un botón y el micro observa varios flancos, lo que ocasiona una respuesta extraña por parte de este (o bien puede activarse varias veces sin que uno logre observarlo o parecer que no se activa).
+
Agregue la información debajo del diagrama de flujo y al final de la introducción. --[[Usuario:LuisiVelas|LuisiVelas]]
 
+
=== Rebote en interrupciones por teclado ===
+
                                                                                                                                                                                                                                                                                                                                                   
+
 
+
Para solucionar este problema es necesario, una vez que se activa la interrupción, colocar un tiempo de espera y luego volver a evaluar el estado de la bandera de interrupción, así se puede asegurar que los flancos ya no forman parte del accionamiento del botón anterior. Para esto se puede utilizar cualquiera de los Timers disponibles en el micro. A continuación se presentan dos ejemplos de rutinas para el tiempo de espera luego de accionar algún botón.
+
 
+
==== Ejemplo con RTC ====
+
 
+
Es necesario configurar el RTC para un tiempo mayor a 50ms, sin activar la interrupción de este. Para el ejemplo RTCLKS= #%00,  RTCPS= #%1011.
+
 
+
Reloj: 
+
    LDA #$06
+
    STA RTCMOD
+
 
+
Espera: 
+
    LDA RTCCNT
+
    CMP RTCMOD
+
    BNE Espera
+
 
+
Una vez culmina el tiempo de espera el programador puede limpiar la bandera de interrupción y salirse de esta o puede colocar la rutina reloj al principio de la interrupción, todo depende de la aplicación.
+
 
+
Para aumentar el rebote solo es necesario disminuir el tiempo de espera, si se considera que aún se observa rebote con ese tiempo de espera sólo es necesario incrementar el valor del módulo.
+
 
+
 
+
==== Ejemplo con un contador ====
+
 
+
Para utilizar este segmento de código es necesario inicializar las variables cnt y cnt1
+
 
+
Reloj:
+
    LDA #$00
+
    STA cnt
+
    STA cnt1
+
Espera:
+
    INC cnt
+
    BEQ Espera1
+
    BRA Espera 
+
Espera1:
+
    INC cnt1
+
    LDA #$0F
+
    CBEQ cnt1, Salir
+
    BRA Espera1 
+
 
+
Salir debe llevar al programa al flujo normal del código.  Normal  0      21      false  false  false    ES-VE  X-NONE  X-NONE
+

Revisión actual del 18:36 29 mar 2013

Comportamiento del KBI

Es necesario resaltar en este artículo que los pines del KBI pasan por una compuerta de tipo OR antes de entrar al módulo que genera las interrupciones. Esto quiere decir que si se activan dos pines de manera simultánea el KBI sólo generará una interrupción y no se podrá saber cual de los pines fue el causante. --Racuna (discusión) 22:58 28 mar 2013 (VET)

Agregue la información debajo del diagrama de flujo y al final de la introducción. --LuisiVelas

Contributors

LuisiVelas, Racuna