Hola, es la primera vez que escribo en este foro aunque me ha servido de muchiiiiiiiiiiiiisima ayuda. Bueno,no me enrollo.
De proyecto de fin de carrera estoy realizando una alarma con un PIC 16f876 que consta de un display 16x2 conectado con 4 lineas, teclado matricial de12 teclas y buzzer lo cual va separado de la centralita (ya que algunos robos se tienen llevado a cabo rompiendo simplemente la alarma), y en la centralita un siemens m55 (al menos hasta que presente el proyecto, el cual implemento fisicamente) para realizar dos llamadas en principio.
Dispuse de un alcatel 511 y un siemens c35 los cuales no me respondian a los comandos AT y un c55 que se me apagaba a los 20 sg de estar conectado al ordenador. (Desconozco las causas pero lo digo por si alguien intenta realizar un proyecto con dichos terminales)
De inicio, la alarma visualiza un " Introduce Codigo" en donde se puede introducir el codigo para armar la alarma o el codigo de configuracion.
En la configuracion tenemos tres submenus que son para cambiar claves tanto para armar como para poder entrar en la configuracion de nuevo, cambiar los dos numeros de tlf a los que dar aviso (si se dispara la alarma) y modificar los tiempos de retardo a la conexion y a la desconexion.
Emplee un sensor de humos y otro de movimiento con un 4078 cuya salida va conectada a int0 y un 74151 para saber e informar cual de los sensores se ha disparado.
Por el momento todo funciona perfectamente (mas o menos) excepto la comunicacion con el telefono movil.
Mi intencion es enviarle ATD 616; (solo de prueba) con lo cual desde el ordenador responde perfectamente llamando pero al conectarlo al micro en RC6 y RC7 como es logico.......... nada.
No se donde esta el fallo ya que aun no dispuse de osciloscopio por ahora por lo que posteo el trozo de codigo dedicado a dicha comunicacion. Ahh por cierto, como prueba visualizo lo que transmito por el display tambien, lo cual funciona bien pero no hace nada el telefono.
El micro lleva de oscilador un cristal de 4 Mhz.
#DEFINE PAGE0 BCF STATUS,5 ;Selecciona el banco0
#DEFINE PAGE1 BSF STATUS,5 ;Selecciona el banco1
#define RS PORTC, 1 ;La linea RS del display
#define E PORTC, 0 ;La linea Enable del display
#define DATA PORTB ;Nombrar DATA como Portb para el display
LIST P=16f876
include p16f876.inc
__CONFIG _WDT_OFF & _XT_OSC & _CP_OFF & _LVP_OFF & _PWRTE_ON ;Se configuran los Fuses
errorlevel -302
INICIO CLRF INTCON
CLRF STATUS
clrf PORTC ; Initialize Port B
PAGE1 ; Cambiamos al Banco 1
movlw 06h
movwf adcon1
movlw 0c0h
movwf OPTION_REG
clrf TRISC
clrf TRISB
PAGE0
clrf flag1
call lcdInic
call llamanumero1
*
*
*
*
llamanumero1 call cleardisplay ; Borra pantalla de LCD
bsf rcsta,7 ; Habilitamos puerto serie,recepcion de 8 bits
PAGE1 ; Cambia a banco1
movlw 80h ; Configuramos RC7/RX como entrada y RC6/TX como salida.
movwf trisc
movlw 24h
movwf txsta ; Configuramos como 8 bits,altavvelocidad y modo asincrono
movlw .25
movwf spbrg ; Configuramos el spbrg para una frecuencia en Baudios de 9600
PAGE0 ; Cambia a banco0
bsf RS ; Habilita Modo Datos del display
movlw "A"
call envialo
call retardo2
movlw "T"
call envialo
call retardo2
movlw "D"
call envialo
call retardo2
movlw "6"
call envialo
call retardo2
movlw "1"
call envialo
call retardo2
movlw "6"
call envialo
call retardo2
movlw ";"
call envialo
call retardo2
movlw 0dh
call envialo
acaba goto acaba
envialo PAGE1
bsf txsta,5
PAGE0
movwf txreg ; Introducimos lo de W en el buffer
page1
sigue btfss txsta,1 ; ¿Acabo de transmitir?
goto sigue ; No, continua esperando
PAGE0
call comandolcd ; Si, escribe el caracter en el LCD
return
Antes de "enviar" dicho comando el pin tx se encuentra a 0 y al acabar queda a 1.
No hice una tabla por ahora por si acaso, prefiero repetir codigo hasta tenerlo funcionando (debido a la mala experiencia que tuve al principio con las tablas)
Si el codigo esta bien cual sera el problema?
No debo conectar directamente el micro al telefono?
Hice un par de pruebas colocando un par de resistencias de distintos valores entre +4.85V que es la tension de alimentacion de PIC y RC6 y RC7 (pull up) asi que el movil se me apagaba solo en cuanto le "enviaba" dicho comando AT.
Probe tambien a colocarle un par de zener de 3v3 por lo que vi en un esquema con nokia pero .....nada.
Ojala podais ayudarme ya que espero presentar dicho proyecto en mayo y solo estoy realizandolo fisicamente por ahora y por la falta de tiempo no puedo investigar muchas cosas y debo pasarlas por alto.
Es la primera vez que hago algo con algun microcontrolador y fui aprendiendo todo por el camino por lo que aun estoy muy verde.
Espero colaborar mas. Saludos.