Autor Tema: Comunicacion entre pic con modulo USART  (Leído 3753 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Correia

  • PIC10
  • *
  • Mensajes: 39
Comunicacion entre pic con modulo USART
« en: 04 de Octubre de 2011, 23:22:40 »
buenas noches a todos, la presente es que realize la comunicacion entre dos pic16f628a uno como transmisor y otro como recpetor, realize las programaciones pertinente y simule en proteus y me corrio perfecto, pero ahorita lo monte en fisico y no me funciona, me pregunto si es que para dos pic requiero de alimentacion de 5v paralela, una para un pic y otra para otro, los terminales RX y TX de los pines los conecte con un simple cable y lo conecte como debe ser, alguien me aconsejaria que tenga mucha experiencia en montajes fisicos.
-Tsuki no Tamashi
-Microcontroladores
-Robotica
-Evangelion
-Einstein

Desconectado groundman

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1870
    • www.ingeniopic.com
Re: Comunicacion entre pic con modulo USART
« Respuesta #1 en: 05 de Octubre de 2011, 18:51:03 »
para saber cual de los dos circuitos te esta fallando.o si son los dos.
lo mejor es que lo comprueves con el hiperterminal de windows.claro que tendras que montar una interface rs232 con un max 232.
Montando mi primera impresora 3D (Raprep Prusa i3)

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Comunicacion entre pic con modulo USART
« Respuesta #2 en: 06 de Octubre de 2011, 06:51:17 »
Citar
me pregunto si es que para dos pic requiero de alimentacion de 5v paralela, una para un pic y otra para otro
Si, alimenta los dos.

Citar
los terminales RX y TX de los pines los conecte con un simple cable y lo conecte como debe ser,

A que distancia estan? mas de un metro y medio te daran problemas, incluso menos dependiendo del ambiente.

Aqui tienes un ejemplo de soft con es PIC, miralo por si tienes algun error.

http://www.todopic.com.ar/foros/index.php?topic=24720.msg204913#msg204913



Desconectado Correia

  • PIC10
  • *
  • Mensajes: 39
Re: Comunicacion entre pic con modulo USART
« Respuesta #3 en: 09 de Octubre de 2011, 20:40:50 »
buenas muchachos, saben que solvente el problema y me funcionan los micros, pero ahora sucede algo que me tiene muy estresado, la idea de mi comunicacion entre dos micros es que uno enviara una secuencia de numeros (del 1-10) en binario y el otro pic que programe como receptor los recibira y los mostrara por una salida del porta de 4 bits (4 leds), todo eso gobernado por un interruptor en el pic transmisor conectado a ra0 que cuando este pasado (estado 0) se ejecutara el envio de numeros y cuando este abierto (estado 1) se detendra el envio de informacion, el micro que funciona como receptor, programae el recibiento de informacion por interrupciones (es mas rapido), ahora dejare los codigos fuentes de ambas programaciones para ver si algo malo esta, en proteus corre bien, ahora sucede que en fisico (montados en protoboard) cuando paso el interruptor, el micro recpetor muestra los 4 leds encendidos (en vez de empezar mostrar el numero 1 en binario y despues el dos asi hasta el 10 y se reinicie el ciclo) y muestra otros valores en binarios que no son los que programe en el micro que es emisor (el que transmite los datos al otro micro para que los muestre), para personas ya con mucha experiencia practica que podria ser? aqui dejo las programaciones:

MICRO QUE ES RECEPTOR:
 
Código: [Seleccionar]
;********USANDO EL USART*********
;*Modo: Asincrono****************
;*Tipo:Recepcion***************
;*Made By: Manuel Correia********
;********************************
;*Clock=4MHz*********************
;se programara el modo recepcion de informacion por medio de interrupciones.

list      p=16f628A           ; list directive to define processor
#include <p16F628A.inc>       ; processor specific variable definitions

errorlevel  -302              ; suppress message 302 from list file

__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT

;*****variables de uso genereal******
dato_rec equ 0x22
w_temp equ 0x23
status_temp equ 0x24
;****definicio de etiquetas*****
#define banco0 bcf STATUS,5
#define banco1 bsf STATUS,5
;************************************
org 0x00
goto main
org 0x04
goto serv_int ;servicio de interrupcion

main
movlw 0x07
movwf CMCON ; se desabilita los pines del PORTA.
banco1 ; trabajando solo como I/O digitales.
clrf TRISA
movlw b'00000010'
movwf TRISB ; configuracion de RB1(RX) como entrada y RB2(TX) como salida.
bcf TXSTA,4 ; seleccionado modo asincrono.
bsf TXSTA,2 ; modo de baudio high.
movlw 0x19
movwf SPBRG ; se carga velocidad 9600 baudios.
bsf PIE1,5  ; habilitamos interrupcion por recpecion de dato.
bsf INTCON,GIE
bsf INTCON,PEIE
banco0
bsf RCSTA,7 ; habilitamos puerto serial.
bcf RCSTA,6 ; seleccionamos recepcion de 8 bits.
bsf RCSTA,4 ; habilitamos recepcion continua de datos.
clrf PORTA ;limpiamos los latch
;***************************
bucle
nop
goto $-1
;***************************
;*servicio de interrupcion**
;***************************
serv_int
movwf w_temp
swapf STATUS,w
movwf status_temp
btfss PIR1,RCIF
goto lel
movf RCREG,w
movwf PORTA
nop
lel swapf status_temp,w
movwf STATUS
swapf w_temp,f
swapf w_temp,w
bcf PIR1,RCIF
retfie
;****************************
end


ahora la programacion del micro que es emisor:
Código: [Seleccionar]
;********USANDO EL USART*********
;*Modo: Asincrono****************
;*Tipo:Transmision***************
;*Made By: Manuel Correia********
;********************************
;*Clock=4MHz*********************
;mejorado para montaje practico en fisico
;*El siguiente programa muestra la configuracion del modulo usart como modo asincrono, para el envio de datos solamente*



list      p=16f628A           ; list directive to define processor
#include <p16F628A.inc>       ; processor specific variable definitions

errorlevel  -302              ; suppress message 302 from list file

__CONFIG   _CP_OFF & _DATA_CP_OFF & _LVP_OFF & _BOREN_OFF & _MCLRE_OFF & _WDT_OFF & _PWRTE_ON & _INTOSC_OSC_NOCLKOUT

;**variables*********************
cont equ 0x22
valor equ 0x23
;********************************
#DEFINE banco0 bcf STATUS,5
#DEFINE banco1 bsf STATUS,5
;********************************

;**********INICIO****************

org 0x00
goto main
org 0x05
;*******configuracion de puertos y registros********
main
banco0
movlw 0x07
movwf CMCON
banco1
movlw b'00000111' ;configuracion del TMR0 como temporizador y prescaler 256
movwf OPTION_REG
bsf TRISA,0 ; ra0 como entrada.
movlw 0x02
movwf TRISB
movlw 0x04
movwf TXSTA ;*configura modo asincrono, baud rate de alta velocidad.
movlw 0x19
movwf SPBRG ;velocidad a 9600 baudios con cristal de 4MHz.
bsf TXSTA,TXEN ;*habilita transmision.
banco0
bsf RCSTA,SPEN
clrf PORTA  ; eliminado los latchs.
clrf PORTB
clrf valor
;***********************************
bucle
nop
nop
goto bucle2
bucle2
btfss PORTA,0 ;tuve que ponerlo asi, por que en fisico el interruptor abierto lo lee como 0 y cuando lo paso como 1
goto $-1      ; primera vez que me sucede asi en un montaje fisico.
nop
banco1
btfss TXSTA,TRMT  ;preguntamos si esta vacio para transmitir nuevo dato.
goto $-1
nop
banco0
movf valor,w
xorlw d'10'
btfsc STATUS,Z
goto repetir
incf valor,f
call TRANSMITIR
call unsegundo
goto bucle2

;************************
repetir
clrf valor
goto bucle2
;******************************
;*Rutina de envio de datos*****
;******************************
TRANSMITIR
banco1
btfss TXSTA,TRMT ;comprobacion de que TSR este vacio.
goto $-1
banco0
movf valor,w
movwf TXREG
return
;*******************************
unsegundo
movlw d'16'
movwf cont
clrf TMR0
btfss INTCON,T0IF
goto $-1
bcf INTCON,T0IF
decfsz cont,f
goto $-5
return
;*******************************
end
NOTA: en ambas programaciones desabilite el master clear (MCLR_OFF), por lo que en fisico no conecte nada a los pines 4 donde esta el MCLR.
-Tsuki no Tamashi
-Microcontroladores
-Robotica
-Evangelion
-Einstein

Desconectado Correia

  • PIC10
  • *
  • Mensajes: 39
Re: Comunicacion entre pic con modulo USART
« Respuesta #4 en: 09 de Octubre de 2011, 20:48:49 »
ambos pic estan a una distancia pequeña de 1cm, no se si esto afecte, ya que el pic que es recpetor le falta dos pines el 9 y 10 pero para otras programacion me ha funcionado.
-Tsuki no Tamashi
-Microcontroladores
-Robotica
-Evangelion
-Einstein

Desconectado mtristan

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 395
Re: Comunicacion entre pic con modulo USART
« Respuesta #5 en: 09 de Octubre de 2011, 22:31:41 »
.


Parece que el problema es de "rebote" en el interruptor. Para solucionarlo, lee el interruptor, esperá unos 50 a 100ms (o más, dependiendo del interruptor) y volvé a leerlo; si coinciden las lecturas, entonces el valor es válido, sino seguramente la entrada está en un estado inestable porque el interruptor está cambiando de estado justo en ese momento, así que las lecturas no serán válidas.
¿Yo entendí mal, o cuando el interruptor está abierto, la entrada queda en circuito abierto? :? Si es así, es necesario que agregues una resistencia de pull-up o pull-down, dependiendo de la conexión que hayas hecho.

Saludos.

When you see a good move, look for a better one (Emanuel Lasker)