12 julio, 2015

Alarma GSM con USB programable (3b)




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.

¡¡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.

11 julio, 2015

Alarma GSM con USB programable (3a)






Búsqueda personalizada

 Como siempre: No es tan difícil como parece.

Alarma GSM con USB programable (3a)
Arrancando el LCD de la alarma

     Lo primero es configurar el esquema en Proteus para la visualización con el lcd. Con 2 lineas por 16 caracteres es más que suficiente de momento. Se usará para ver la configuración y los datos que se van enviando.
     La R3 Es para dar el contraste al LCD. Con 1k se ven estupendamente los caracteres. El archivo para el control se llama flex_lcd.c. A parte de no dar problemas en la simulación es muy facil de configurar. Basta con asignar las patillas como las tenemos conectadas en Proteus. Lo descargamos de:
y pegamos al principio de nuestro programa las definiciones de las patillas del LCD como nos indica el mismo archivo descargado.
     Colocando el valor del los PIN_xx igual que la configuración que realicemos en Proteus arranca y se visualiza sin problemas. Solo hay que llevar cuidado con las patillas a colector abierto del microcontrolador y las del MCRL.
     Realizamos un programa que nos inicialice el lcd y el usb y nos imprima en el lcd el dato enviado por usb y que lo devuelva al usb. El programa puede ser:
     Compilamos el programa, Arrancamos la simulación Proteus y arrancamos el Hiperterminal.
     Nada más arrancar ha salido la bienvenida. Como el cursor está en la segunda Línea, lo que enviemos se va a plasmar allí (lcd_gotoxy(1,2);). Se envía 6 9 4 L 7 T. y el resultado es:
El 54 pertenece al valor decimal del número 6
El 57 pertenece al valor decimal del número 9
El 52 pertenece al valor decimal del número 4
El 76 pertenece al valor decimal del número L
El 55 pertenece al valor decimal del número 7
El 84 pertenece al valor decimal del número T
     Ha salido todo junto en el LCD al no preveer los espacios. De momento queda así. 
     Ya tenemos dos cosas en marcha: El USB y el LCD. En estos momentos podemos transmitir, recibir y visualizar con el microcontrolador Pic 18F4455 sin usar un solo componente electrónico.



 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.

Alarma GSM con USB programable (1)






Búsqueda personalizada

 Como siempre: No es tan difícil como parece.


Alarma GSM con USB programable
(1.- El usb Pic-PC con XP)

     Empezar es lo más complicado. Lo primero es ver como funciona el usb en el microcontrolador. Conectar al PC un microcontrolador y que windows lo reconozca. En esta ocasión se utiliza un 18F4455. Para usar otro Pic simplemente hay que cambiar el micro en el esquema y en el programa.
Aunque cambiará se empieza por lo más básico: El Mplab y Proteus Isis.
     Con Mpalb creamos un proyecto y en main.c colocamos el siguiente código:
     Ahora compilamos, indicará unos avisos y al final el tan esperado BUILD SUCCEEDED. Con esto ya tenemos, de momento, terminado el programa del microcontrolador. Ahora vamos al esquema anterior del circuito y realizamos doble clic sobre el microcontrolador. Se abre el editor de componentes y en Program File colocamos la dirección del archivo que se ha generado al compilar el programa en proteus: main.hex
     Guardamos con clic OK y salvamos el esquema (Ctrl + S). Instalamos los drivers del VIRTUAL USB de Proteus. Suele estar en la carpeta de instalación\Virtual USB\Install USB Drivers.
     Con esto ya podemos, no es verdad de momento, simular el microcontrolador sin usar nada de electrónica. Ningún componente electrónico físico va a participar.
Vamos a Proteus isis y simulamos:
     Abre correctamente el analizador de USB y ahora conectamos nuestro dispositivo al ordenador. Para ello hacemos clic en el conector de USB.
     Windows detecta que hay algo conectado. Seleccionamos No por el momento y Siguiente
     Ahora seleccionamos Instalar desde una lista o ubicación especifica.
     Ahora solo queda asignar el camino donde hemos descomprimido el archivo que hemos o vamos a bajar con el nombre de mchpcdc.inf que uno se puede descargar desde:
     Hay ocasiones, sobretodo cuando se han realizado unas cuantas pruebas, en que ya no informa del nuevo hadware conectado. Nos dirigimos al Administrador de dispositivos y allí está lo que hemos conectado.
     Si le pedimos que instale los drivers que se han descargado, seguramente no los reconocerá. y pedirá que busquemos otros. Probemos los que probemos no va a funcionar ninguno. Hay que realizar unas pequeñas modificaciones y también personalizaremos nuestro dispositivo.
     Abrimos  el archivo usb_desc_cdc.h que se ha cargado a nuestro proyecto al compilar
     Y nos vamos al final del archivo. Aquí es donde lo personalizamos.
     La longitud de la cadena tiene que ser exacta. Si el número de la cadena es mayor saldrán caracteres que no tienen que ver con nuestro dispositivo. Se suprimirán caracteres si el número de la cadena es inferior, para ello hay una fórmula muy sencilla que es:
(Número de letras + 1)*2 = longitud a poner

Ejemplo en string1 queremos poner JVMA, esta tiene 4 caracteres por tanto:

longitud a poner = ( 4 + 1 ) x 2 = 5 x 2 = 10
     Lo mismo ocurre con el string2. En este caso no cambia el valor del tamaño de la cadena al coincidir la longitud que había.
     Volvemos a guardar y compilamos de nuevo (Built All). Cargamos otra vez el main.hex en el 18F4455 (con detener la ejecución del simulador y reanudarla es suficiente)
Ahora le toca al Driver. Abriremos con el archivo mchpcdc.inf, que una vez descargado se ha de descompilar, y nos dirigimos al final del archivo.
     Cambiamos el DRIVERFILENAME y lo personalizamos cambiando DESCRIPTION. Una vez reconocido del dispositivo se verá que se ha personalizado el dispositivo. Lo aceptaremos naturalmente. ¿Cómo no va a pasar la firma si lo estamos haciendo nosotros?
     Es posible que quede una última cosa por hacer y no cuesta nada revisarlo. Si el dispositivo no es reconocido es que no coinciden unos datos que ahora mismo vamos a ver.
Abrimos el archivo usb_desc_cdc.h y buscamos este trozo de programa.
         0x61,0x04, //vendor id (0x04D8 is Microchip, or is it 0x0461 ??)  ==8,9
Se intercambian los valores en el archivo mchpcdc.inf (0x0461)
         0x33,0x00, //product id   ==10,11
Se intercambian los valores en el archivo mchpcdc.inf (0x0033)
Mucho cuidado con eso. Abrimos el archivo mchpcdc.inf y al principio tiene que estar el dispositivo.
     Si no está hay que añadirla. De otra manera: EL DRIVER NO NOS SERVIRÁ. Windows no lo reconocerá como válido.
     Notese que los valores se han puesto acorde con el archivo usb_desc_cdc.h
     Los otros valores que aparecen indicando el cambio (no los he quitado para que se vea que pueden cambiar) son los que tenía el driver en un principio. Dependiendo del archivo cargaremos SIEMPRE los valores que nos marque usb_desc_cdc.h
     Una vez terminado de cargar ha de salir la ventana de Finalización del asistente
     Ya se puede ver recompensado el esfuerzo con la personalización de nuestro prototipo.
     Ahora ya podemos disfrutar de una simulación completa sin el uso de componentes electrónicos ni cables. Si enviamos el 1 nos devuelve el texto perteneciente al uno y si mandamos 2 nos devuelve el texto perteneciente al dos.
     Para configurar el puerto a nuestro gusto (en mi pc solo dispongo de un puerto COM y algunas veces, dependiendo del dispositivo que conecto, me cambia el puerto, se puede personalizar. Es decir: podemos asignar el puerto de comunicaciones que queramos. Para ello ir a:
Inicio -> Panel de Control -> Sistema -> Hardware -> Administrador de dispositivos
      y expandimos el puerto de comunicaciones Puertos (COM & LPT) Y doble clic sobre nuestro dispositivo.
      Nos vamos a la pestaña configuración de Puerto \ Opciones avanzadas
      y se puede cambiar el puerto COM en la pestaña: Número de puerto COM.
 La configuración del HyperTerminal, que es lo que puede dar problemas, está explicada en otro post.
 (próximamente)
CONFIGURAR EL HIPERTERMINAL PARA RECIBIR DATOS Y ENVIAR UN SOLO BIT


 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.

07 julio, 2015

Factusol: Eliminar la búsqueda de actualizaciones





Búsqueda personalizada

 Como siempre: No es tan difícil como parece.

Factusol: Eliminar la búsqueda de actualizaciones
La incomodidad de que nos avise de la existencia de actualizaciones si el programa funciona correctamente es fácil de eliminar.
 
 Basta con dirigirnos a  la instalación del programa que por defecto está en:
C:\Archivos de programa\FactuSOL 2000
y localizamos el archivo Actualizaciones
lo abrimos con el Bloc de notas y cambiamos el True por False.
Guardamos el documento (Archivo\Guardar) y no vuelve a aparecer el aviso de descarga de actualizaciones.
En el Indice del blog encontrareis más sobre Factuso.


 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.