Blog | Archivo | Contacto | Administración |
Me he propuesto hacerme esos controladores domésticos que mencioné en el post nº 4 (si no lo has visto, mira el archivo, que para eso está).
El paso esencial es el interconectar el ordenador a la red montada por los cables de la luz, para lo cual pensaba usar un PIC que tuviese UART (USART) para comunicarse con el PC, y llevar por software el protocolo que tuviese esa red (en otro post os contaré el que he diseñado, porque X10 es una guarrería).
De nuevo hoy he ido a comprar mis chucherías, incluyendo un PIC 16F628A (más barato que el 16F84A, y con un montón de mejoras y cosas extras), y un MAX233 (para convertir los niveles de voltaje TTL - RS232) por el que me han clavado un poco más del doble del precio del PIC. En fin, al menos no necesita condensadores externos, como el MAX232.
El programa ha llevado un poco, debido al sistema de interrupciones del PIC para el envío. Al final, sólo uso interrupciones para la recepción; recepción asíncrona y envío síncrono. Más que de sobra para lo que necesito. Hacer que haga un saludo al principio, y un eco de los caracteres recibidos, invirtiendo las mayúsculas y minúsculas para saber que está funcionando, y a correr.
El código es algo así:
;Esto es una prueba del USART para el pic 16F628A
list p=16f628a
include <p16f628a.inc>
SalvaW equ 0x20
org 0x00
goto Inicio
org 0x04
btfsc PIR1, RCIF
call RxInt
;Otras interrupciones
retfie
RxInt:
movwf SalvaW
movfw RCREG
xorlw 0x20
call Envia
movfw SalvaW
return
;--------------------------------------------
Envia:
bsf STATUS, RP0
EsperaEnvio:
btfss TXSTA, TRMT
goto EsperaEnvio
bcf STATUS, RP0
movwf TXREG
return
;--------------------------------------------
Inicio:
bsf STATUS, RP0
movlw B'00100100' ;TXSTA: TXEN, BRGH
movwf TXSTA
movlw D'25' ;SPBRG: 9600 baudios
movwf SPBRG
bsf PIE1, RCIE ;PIE1: RCIE
bcf STATUS, RP0
movlw B'10010000' ;RCSTA: SPEN, CREN
movwf RCSTA
movlw B'11000000' ;INTCON: Hablito interrupciones (general) y periféricas
movwf INTCON
movlw 'H'
call Envia
movlw 'o'
call Envia
movlw 'l'
call Envia
movlw 'a'
call Envia
movlw D'13'
call Envia
Bucle:
goto Bucle
end
El circuito de prueba y el resultado:
Sale "Holala" en el HyperTerminal porque intenta emular un terminal con protocolo definido y se hace un lío con los caracteres de control (retorno de carro en este caso). Oh lalá, es una señal.
Ya falta menos…
Cuando cuento que hago tal o cual cosa pareciera como si esta se hiciese siempre a la primera, como si nunca me equivocase. Nada más lejos de la realidad.
Hoy por ejemplo, tras probar el programa del PIC en el emulador (MPLAB SIM), apañar el tema de las interrupciones, probarlo en el Proteus (Isis), y montar cuidadosamente todas las conexiones en la placa de prototipos, no funcionaba. Y del software no podía ser, ni de la configuración del PIC.
Metí el polímetro y vi unos valores raros de entrada / salida en las patas TX y RX, así que pensé que el problema era del MAX233. Poco después descubrí con horror que no era eso, gracias al olfato. Había cometido uno de los peores errores: había confundido Vdd y Vss en el PIC (le había invertido el voltaje). Afortunadamente son duros y tienen diodos protectores, no se que les hace la gente esa que dice que se los carga. En cualquier caso, una vez subsanado funcionó todo perfectamente.
La única secuela ha sido esta:
Del calor de la corriente disipada se ha fundido un poco el plástico de la placa de prototipos, ese era el olor que detecté.
Por si alguien quiere hacer cosas con la electrónica, os daré unos consejos:
¡Ánimo, Habisoft, de esta logras emanciparte!
Y eso que me consta que hay gente que osa irse a vivir sola sin tener acabados los controladores domésticos caseros de ia integrada...
Besos,
Z.
P(t) Alguien va a ganar una apuesta...
A ver si es verdad que me emancipo ya, está un poco difícil el tema de los lofts.
A mi me consta algo peor, que hay gente que se va a vivir sola sin tener siquiera cama o fogones.
P(t): Alguien va a ganar una apuesta, en efecto; y no eres tú.
Comer y dormir... Mariconadas!
Z.
Vaaamos, vamos. Alguien va a ganar una apuesta, y soy yo.
Y os recuerdo que algunos se emancipan sin tener siquiera ADSL. Son unos pringaos, sí, pero ahí están.
Post cerrado