TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: sergioneri en 07 de Julio de 2009, 03:29:04
-
hola de nuevo estoy colocando de una vez todas mis dudas, estoy realizando una practica en la que requiere una conversion de analogo digital, Tomar lectura del voltaje emitido por un receptor optico ,Las lecturas provenientes del ADC seran enviadas por el puerto serial RS232 y procesadas en LabVIEW(incluyendo un acondicionador de 0 a 5 volts)
. Para mostrar el voltaje que se esta reciviendo desde el PIC. y ya logre ke se comunique pero lo que lee son unos signos raros no numeros, ay lo estoy conectando directo el rs232 al pic16f877a y no se si ocupe ay realizar un circuito o algo o ke tenga mal conectado el rs 232, solo tengo conectados los cablesitos de tierra(pin5),recibir datos(pin2) y el de transmitir(pin3) del rs232, ojaa pudieran decirme en donde se encuentra el error saludos
-
Hola Sergio!
Aqui no somos adivinos ni brujos :D :D :D
si nos comentan que Lenguaje usa y nos pone tu codigo para estudiarlo y mas informacion, seguro que te ayudamos.
:mrgreen:
Saludos
-
a disculpa aqui esta mi codigo:
LIST p=16F877A ; Tipo de procesador PIC16F877A
#include "P16F877A.inc" ; Archivo de definicion de registros del micro
; Palabra de configuracion
__config _CP_OFF & _DEBUG_OFF & _WRT_OFF & _CPD_OFF & _LVP_ON & _BODEN_OFF & _PWRTE_ON & _WDT_OFF & _XT_OSC
org 0x00
goto main
org 0x04
main
;;;;;;;;;;;;;;;;;;;;;;;CONFIGURACION PARA TRASMISION;;;;;;;;;;;;;;;;;;;;;;;
;----------------------------------------------------------------------------------------------------------------
BSF STATUS,RP0
BCF STATUS,RP1 ;CAMBIAMOS AL BANCO1 BUSCANDO TXSTA
;-------CONFIGURACION DE TXSTA REGISTRO DE TRANSMISION-------;
BCF TXSTA,6;TRANSMISION DE 8 BITS
BCF TXSTA,4;MODO ASINCRONO
BSF TXSTA,2;HIGH BAUD RATE
;---------------------------------------------------------------------------------------------------------------
; CONFIGURACION DE PUERTOS
BSF TRISC,7;
BSF TRISC,6; SETS USART ON
;----------CONFIGURACION DE RCSTA REGISTRO DE RECEPCION-------;
BCF STATUS,RP0;CAMBIAMOS AL BANCO 0
BSF RCSTA,7;CONFIGURA EL PIN RC6 COMO SALIDA SERIAL y RC6 COMO ENTRADA SERIAL
BCF RCSTA,6;
BSF RCSTA,4;HABILITA LA RECEPCION CONTINUA
;----------------------------------------------------------------------------------------------------------------
;--------CONFIGURACION DEL BAUD RATE----------;
BSF STATUS,RP0;CAMBIAMOS AL BANCO 1
MOVLW D'25'
MOVWF SPBRG;CONFIGURAMOS BAUD RATE CON VALOR DE 25
;---------------------------------------------------------------------------------------------------------------
;-----------CONFIGURACION DE ADCON1-----------;
BSF ADCON1,7;RIGHT JUSTIFIED
BSF ADCON1,6;OSCILADOR EN fosc/16
BCF ADCON1,3;CONFIGURACION DE BITS DE PUERTO A
BCF ADCON1,2
BCF ADCON1,1
BCF ADCON1,0
;---------------------------------------------------------------------------------------------------------------
;-----CONFIGURACION DE PUERTOS DE ENTRADA Y SALIDA------;
BSF TRISA,1;CONFIGURAMOS EL PIN 0 DE PORTA COMO ENTRADA
;----------------------------------------------------------------------------------------------------------------
;------------CONFIGURACION DE ADCON0-------------;
BCF STATUS,RP1
BCF STATUS,RP0;CAMBIAMOS AL BANCO 0
BCF ADCON0,7;FOSC/16
BSF ADCON0,6;
BCF ADCON0,5;SELECCIONA CANAL AN0
BCF ADCON0,4
BCF ADCON0,3
BSF ADCON0,0;ENCIENDE EL A/DC
;----------------------------------------------------------------------------------------------------------------
CYCLE
BSF STATUS,RP0; CAMBIAMOS AL BANCO 1 PARA HABILITAR TX
BSF TXSTA,5;HABILITAR TRANSMISION***********************
;;;;;;;;;;;;;;;;;;;;;;;;;;;COMIENZA LA CONVERSION;;;;;;;;;;;;;;;;;;;;;;;
BCF STATUS,RP0
BCF STATUS,RP1;CAMBIAMOS AL BANCO 0
BSF ADCON0,2;PONE EN GO LA CONVERSION
BTFSC ADCON0,2;SI = 0, LA CONVERSION HA TERMINADO.
GOTO $-1
;----------------------------------------------TRANSMIT 1------------------------------------------------
BSF STATUS,RP0;CAMBIAMOS AL BANCO 1
BTFSS TXSTA,TRMT; REVISA BANDERA DE FIN DE TRANSMISION SI 1, REG VACIO
GOTO $-1
MOVF ADRESL,0;MOVEMOS LA CONVERSION A W
BCF STATUS,RP0; CAMBIAMOS AL BANCO 0
MOVWF TXREG; MOVEMOS LA CONVERSION AL REGISTRO DE TRASMISION
CLRW
;-------------------------------------------TRANSMIT 2------------------------------------------------------
BSF STATUS,RP0
BTFSS TXSTA,TRMT; SI 1, YA TRANSMITIO, BUFFER VACIO
GOTO $-1
CALL PAUSE
BCF STATUS,RP0;CAMBIAMOS AL BANCO 0 PARA MOVER LOS BIT RESTANTES DE LA CONVERSION A TXREG
MOVF ADRESH,0; MOVEMOS LA CONVERSION A W
MOVWF TXREG; MUEVE BITS MAS SIGNIFICATIVOS ADRESH A TRANSMISION
CLRW
BSF STATUS,RP0; CAMBIAMOS AL BANCO 1
BTFSS TXSTA,TRMT; SI 1, YA TRASMITIO, BUFFER VACIO
GOTO $-1
CALL PAUSE
GOTO CYCLE
PAUSE
BCF STATUS,RP0
MOVLW 0XFF
MOVWF 0X21
DECFSZ 0X21
GOTO $-1
RETURN
END
-
hola de nuevo estoy colocando de una vez todas mis dudas, estoy realizando una practica en la que requiere una conversion de analogo digital, Tomar lectura del voltaje emitido por un receptor optico ,Las lecturas provenientes del ADC seran enviadas por el puerto serial RS232 y procesadas en LabVIEW(incluyendo un acondicionador de 0 a 5 volts)
. Para mostrar el voltaje que se esta reciviendo desde el PIC. y ya logre ke se comunique pero lo que lee son unos signos raros no numeros, ay lo estoy conectando directo el rs232 al pic16f877a y no se si ocupe ay realizar un circuito o algo o ke tenga mal conectado el rs 232, solo tengo conectados los cablesitos de tierra(pin5),recibir datos(pin2) y el de transmitir(pin3) del rs232, ojaa pudieran decirme en donde se encuentra el error saludos
tu programa seria aun mas facil si lo realizaras en ccs,
-
ccs? no tiene es que es para la escuela y solo nos dan la opcion de hacerlo de la forma que tengo
-
Si estas enviando el resultado directo de la conversion, el signo raro es el equivalente ASCII del valor de lectura del ADC (supongo que trabajas a 8 bits). Si quieres enviar numeros por el serial, debes primero: pasar tu numero, resultado de la conversion, a BCD y segundo: pasar cada uno de los numeros, resultado de la conversion BCD, a ASCII.
Supongamos que el ADC da una conversion de 125 (ocupa un solo registro de 8 bits). Este valor se lo pasa a BCD: 1.2.5 (ocupa 3 registros de 8bits) y por ultimo lo pasamos a ASCII '1','2','5' (ocupa 3 registros de 8 bits).
Para pasar de entero a ASCII basta con sumarle el string '0'.
Saludos
-
tu programa seria aun mas facil si lo realizaras en ccs,
:z) Ese comentario no da solución a nada :undecided:
Aquí rutinas (http://www.todopic.com.ar/foros/index.php?topic=23812.msg213329#msg213329) que te serán muy útiles para realizar lo que indica muy bien MLO_
-
mmm es que no tengo problemas en el codigo sino mas bien es que no se bien conectar el rs232, como decia solo tengo conectados los cablesitos de tierra(pin5),recibir datos(pin2) y el de transmitir(pin3) del rs232, y no se aparte necesite otra cosa para lograr la conversion como un pequenio circuito o algo, esa solo era el problema ke presento
-
Aquí (http://www.todopic.com.ar/foros/index.php?topic=24720.msg201413#msg201413) tienes el circuito necesario, y en la siguiente página el circuito completo, por ejemplo para conectar a un 16F84A
-
:shock: :shock:
Estas conectando directamente el PIC al PC????? ufff!!!
Necesitas que el MAX232 vaya al rescate amigo ... en el link que te dio Suky esta todo muy bien explicado. Sin embargo veo que no estas enviando el valor en BCD.
Saludos
-
a gracias, ya lo conecte como me dicen pero sigo teniendo lo mismo, conecte el pic al max 232 como el que circuito que tiene suky pero me sigue marcando lo mismo,utilize ese programa llamado siow y lee pero no lee ni binario, ni nada saca en la ventana de abajo numeros asi 00 ff ee 00 ... y en la otra puros signos raros y no se que onda,no entendi el ultimo mensaje, le falta a mi codigo eso?
-
Exacto! Y unos mensajes más arriba te he dejado un link con rutinas útiles para ese caso.
-
Si estas enviando el resultado directo de la conversion, el signo raro es el equivalente ASCII del valor de lectura del ADC (supongo que trabajas a 8 bits). Si quieres enviar numeros por el serial, debes primero: pasar tu numero, resultado de la conversion, a BCD y segundo: pasar cada uno de los numeros, resultado de la conversion BCD, a ASCII.
Supongamos que el ADC da una conversion de 125 (ocupa un solo registro de 8 bits). Este valor se lo pasa a BCD: 1.2.5 (ocupa 3 registros de 8bits) y por ultimo lo pasamos a ASCII '1','2','5' (ocupa 3 registros de 8 bits).
Para pasar de entero a ASCII basta con sumarle el string '0'.
Saludos
-
mmm que raroes que el codigo que aparece en el tercer mensaje no es mio solo lo usaba para ver como funciona por que segun el amigo que me lo paso ya estaba completo esta bien , lo que le hiba preguntar a suky es que de los circuitos que me pasaste viene un codigo qu usas con el pic 16F84A y lo compile y si lo compila bien , crees que nomasuando las mismas entradas y salidas funcione para lo que necesite?(es que hago esta pregunta por que nunca e utilizado otro pic distinto al que tengo y no se que diferencia existe y pensaba hacerlo como me decian pero todavia no me queda muy claro lo del bcd)gracias a todos por su ayuda