<?xml version="1.0" encoding="utf-8"?><!DOCTYPE article  PUBLIC '-//OASIS//DTD DocBook XML V4.4//EN'  'http://www.docbook.org/xml/4.4/docbookx.dtd'><article><articleinfo><title>WebHome/Hardware/Teclas</title><revhistory><revision><revnumber>6</revnumber><date>2016-09-06 21:15:39</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>5</revnumber><date>2016-09-06 21:15:16</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>4</revnumber><date>2016-09-06 21:01:09</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>3</revnumber><date>2016-09-06 20:51:57</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>2</revnumber><date>2016-09-06 20:38:35</date><authorinitials>GuillermoSteiner</authorinitials></revision><revision><revnumber>1</revnumber><date>2016-09-06 20:37:07</date><authorinitials>GuillermoSteiner</authorinitials></revision></revhistory></articleinfo><section><title>Manejo de Teclado en EDU-CIAA</title><para>Para ejemplificar la habilitación de un pin como entrada para un pulsador, se habilitará el bit corresponde al Switch 1 de la placa EDU-CIAA-NXP </para><para>Pasos: </para><section><title>1. Selección del pin como GPIO</title><para>Esto se realiza en la SCU, además se establece el buffer de entrada y se activa el pullup. </para><screen><![CDATA[Chip_SCU_PinMux(1,0,MD_PUP|MD_EZI|MD_ZI,FUNC0); /* P1_0 en GPIO 0 bit 4 */]]></screen></section><section><title>2. Configuración de la dirección del pin</title><para>Ahora ya en el periférico GPIO se configura el bit del puerto como salida ( 0 )  </para><screen><![CDATA[Chip_GPIO_SetDir(LPC_GPIO_PORT, 0,(1<<4),0);]]></screen></section><section><title>3. Anular rebotes</title><para>El rebote mecánico del pulsador en los cambios de estado del mismo (el momento de pulsarlo o soltarlo), se traduce como una oscilación ente 1 y 0 en la entrada digital del micro.  Para evitar que estas fluctuaciones se tomen como una serie de pulsaciones consecutivas, se deben tomar algunas precauciones. </para><screen><![CDATA[int ValorTecla1()
{
   int valor,valor_anterior;
   int contador;
   while(contador<1000) {
      valor = !Chip_GPIO_ReadPortBit(LPC_GPIO_PORT,0,4); // leer tecla (las teclas se activa por 0)
      if(valor!=valor_anterior) {
         valor_anterior = valor;
         contador=0;  
      } else {
         contador++;
      }
   }
   return valor;
}]]></screen></section><section><title>4. Anular múltiples repeticiones</title><screen><![CDATA[main() {
   int tecla1,tecla1_anterior;
   while(1) {
      tecla1 = ValorTecla1()  ;
      if(tecla1!=tecla1_anterior && tecla1==1) {
         Led_Color_Toggle(LED1);
      }
      tecla1_anterior = tecla1;
   }
}]]></screen></section></section></article>