Búsqueda personalizada
Como siempre: No es tan difícil como parece.
Alarma GSM con USB programable (3b)
3b.- Activación del teclado
Si llego a saber la que se venía encima para activar un puñetero teclado con los microcontroladores 18Fxxxx Me parece que lo iba a implementar su ...(piiiiii...piiii...)
Empezamos por una conexión al puerto B ya que, después, podremos activarla por medio de interrupciones. de momento hacemos un escaneado cada 200ms.
Se descartan las librerías que trae el Ccs ya que son difíciles de implementar en las interrupciones. No he podido. Quizás me haya rendido pronto pero el tiempo es lo que más valoro.
Justo después del include del lcd colocamos las variables que vamos a usar y seguido se colocan las funciones. De esta forma ya se encuentra casi en el sitio para, luego, poder usar las interrupciones. Quedaría así:
Ahora, como no hay activada ninguna interrupción, hay que llamar a la subrutina (función, para otros) y devolverá la tecla pulsada.
La llamada se realiza así:
Tecla=Teclas[Test_Teclado()];
En la variable Tecla está el valor pulsado, si lo hay, o devuelve un espacio (ascii 0x20, en decimal 32). Colocando un condicional evitamos darle trabajo al LCD. Así solo escribe si hay una tecla pulsada manteniéndola hasta que se pulsa otra.
Ahora falta la conexión con el terminal GSM. Se incorporara un puerto I2C para otras ampliaciones de memoria y puertos.
Al probarla daba errores. Sobre todo al pasarla al timer1. Sin pulsar nada salían números aleatorios y de vez en cuando. A poco que se simula se observa que el uso de:
La interrupción queda así:
¡¡CUIDADO con el output_x(xx)!!
Pos anda que no funciona mal la rutina anterior para el teclado!! ¿Quién habrá sido el programador que la ha pasado? Esto me pasa por usar el pega y copia. No puedo ser más tonto.Al probarla daba errores. Sobre todo al pasarla al timer1. Sin pulsar nada salían números aleatorios y de vez en cuando. A poco que se simula se observa que el uso de:
output_b(xxx)
cambia el TRISB por tanto cambia las entradas y salidas... Monta un follón de tres pares de cojones (perdón por la expresión) ¿No hay ningún sitio en que indique lo mal que lo hace?La interrupción queda así:
Y la rutina que hemos colocado más abajo queda de la siguiente forma:
No olvidar cargar el TRISB CORRECTAMENTE. Quedaría así:
Ahora si podemos estar tranquilos con el puerto B. Anda que no se ha perdido el tiempo por culpa de los problemas con output_b(x). Para manejar el el puerto entero puede valer (para mi queda descartado para siempre su uso en cualquier programa) (no es tan difícil como parece pero se complica bastante)
Como siempre: No es tan difícil como parece.
Gracias por visitar mi blog personal. Si te ha gustado:
haz el favor de hacer clic en los anuncios de google que aparecen al
principio de cada entrada y date una vuelta por por ellos. Son céntimos
lo que aporta pero me ayudas a seguir subiendo cosas. Gracias.
No hay comentarios:
Publicar un comentario