TODOPIC

Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Zero13 en 25 de Julio de 2005, 10:36:00

Título: Pic a Pic - Comunicacion Serie
Publicado por: Zero13 en 25 de Julio de 2005, 10:36:00
Hola, me gustaria saber si para realizar una comunicacion serie RS232 ( TX Pic 1 a RX Pic 2 ) es necesario en cada Pic poner en la salida ó recepcion de datos un Max232.

Los Micros a utilizar serian:

2 micros 16F876A a 4 Mhz ó 20 Mhz ( a 9600 bps ó 19200 bps )

Hace algun tiempo probe a simularlo con el Proteus y funcionaba sin Max232...pero lo probe en placa..y no se entera.

He utilizado el mandato HSEROUT y HSERIN, alguna recomendacion al respecto?

La idea es poder intercambiar mensajes entre BOT"s mediante 433 Mhz con emisoras y receptores de esta frecuencia.

Espero vuestros consejos.

Gracias.

Zero13
Visitar mi Blog dedicado a la RobotiKa
http://zerobots.bitacoras.com
Título: RE: Pic a Pic - Comunicacion Serie
Publicado por: atlasdelcarinakeel en 25 de Julio de 2005, 11:53:00
Que tal, no es necesario que usas un max232 ya que los niveles de voltaje en la salida o entrada serial de los pic es TTL, simplemente configura bien un PIC como transmisor y otro como receptor usando el modulo Usart del 876.Sonrisa
Título: RE: Pic a Pic - Comunicacion Serie
Publicado por: Zero13 en 26 de Julio de 2005, 01:01:00
Gracias! atlasdelcarinakeel Giño

Zero13
Visitar mi Blog dedicado a la RobotiKa
http://zerobots.bitacoras.com
Título: RE: Pic a Pic - Comunicacion Serie
Publicado por: J0N4TH4N en 26 de Julio de 2005, 09:54:00
Zero13, para comunicar los robots via radiofrecuencia, usaras el protocolo serial directamente o utilizaras algun Encoder/Decoder?.. me interesaria saber como te va en el proyect ya que tuve serios problemas con unos intentos que realice. Saludos Sonrisa
Título: RE: Pic a Pic - Comunicacion Serie
Publicado por: carlyvalente en 28 de Julio de 2005, 01:49:00
En principio y sin mayores complicaciones de distancia he logrado enviar un byte "crudo" sin necesidad de preámbulos ni paquetes por RF.
Lo imprescindible es que la comunicación primero se pruebe por cable y que funcione 100% , luego y sin ningun cambio lo haces por RF a ver que tal.
Dependiendo de los transmisores (ASK, FSK) y sus modos de modular puede que necesites apagar el transmisor para economizar baterias (caso FSK que transmite portadora aun cuando no le envies datos para mandar) , en el caso ASK no ocurre eso ya que solo transmite a "todo o nada", o sea que un 1 (bit) hace emitir a toda potencia y un 0 no transmite nada, dejando un espacio en blanco y así el receptor interpreta el dato.
Generalmente , enviando una serie de 10101010 (55h o AAh) es suficiente para avisar al receptor que comienza una nueva emision y luego se envia el byte o bytes que te interesan. A esto se le llama paquete y es mas confiable que enviar un byte "crudo" al aire.

UN osciloscopio es imprescindible para ver los datos que se envian y reciben pero cuidado, que la usart envía siempre el bit menos significativo primero!
También un analizador de espectro es muy util a la hora de ver que potencia transmites y en que frecuencia.
Bueno, espero haberte sido de ayuda aunque , cuando releo lo que he escrito ni yo mismo lo entiendo ! jajajajajaja

PD: lo que te propone aqui el compañero es un encoder decoder que son muy baratos y te simplificarán  mucho la tarea a la hora de "empaquetar" esos datos.
Ht12, mm53200, um3750 etc etc tambien hay uno de motorola ... creo el mc145026  y su par, si no me equivoco.
Título: RE: Pic a Pic - Comunicacion Serie
Publicado por: Zero13 en 28 de Julio de 2005, 02:02:00
Gracias a todos por esta valiosa informacion Giño tomo nota.

Sonrisa
Slds!
Zero13
http://zerobots.bitacoras.com
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: johnyrpo en 09 de Noviembre de 2006, 11:25:17
Hola a todos,  para un laboratorio para la clase de comunicaciones estoy implementando un    modulador   FSK  y demodulador FSK y nesesito  desarrollar con un pic que me reciva una señal de 10 bit en forma serie y me lo ponga  ponga en forma paralela  en los puertos para poder visualizar el codigo de  entrada, lo que sucede es que no  manejo bien la programacion delos pic por lo tanto no he podido desarrollar el programa.

Si alguno de ustedes me pude colaborar.

En alguna parte  escuhe de una UART con 16F84 pero de 8 bits,  yo requiro una de 10 bit con 16f873


Gracias

Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: maunix en 09 de Noviembre de 2006, 11:29:35
Hola a todos,  para un laboratorio para la clase de comunicaciones estoy implementando un    modulador   FSK  y demodulador FSK y nesesito  desarrollar con un pic que me reciva una señal de 10 bit en forma serie y me lo ponga  ponga en forma paralela  en los puertos para poder visualizar el codigo de  entrada, lo que sucede es que no  manejo bien la programacion delos pic por lo tanto no he podido desarrollar el programa.

Si alguno de ustedes me pude colaborar.

En alguna parte  escuhe de una UART con 16F84 pero de 8 bits,  yo requiro una de 10 bit con 16f873


Gracias



johnyrpo no necesitas para nada usar la usart o uart.  Tampoco el protocolo NRZ con su start o stop.  Solamente deberás ir leyendo los bits en secuencia (con una cadencia de tiempo que tú conoceras, no se si sacas un clock del demodulador o cómo lo piensas hacer) y al ir leyendo cada bit, lo guardas en una variable la cual vas rotando.

Luego ese dato lo sacas por un puerto conformando así los 10 bits que necesitas.

¿tienes el hardware armado?

¿en qué lenguaje programas?

¿En qué parte del programa tienes problemas?
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: ESTECA55 en 09 de Noviembre de 2006, 23:57:52
Hola, tengo una duda sobre que tipo de somunicacion usar entre dos pic, no quise crear un tema solo para esta consulata asique me meti aca.

Como dije necesito comunicar solamente dos pic en un mismo circuito, un 16f877 con un 16f628, y queria saber que tipo de comunicacion me recomiendan, I2C, SPI o 232.

Como son 2 pic solamente en un principio pense en usar RS232 (Tx -> Rx), descarte el I2C ya que el 628 no lo tiene incorporado en la usart.
En principio solo voy a enviar datos, el motivo de la comunicacion es que me quede corto con los pines del 877.

Bueno estoy sujeto a sus comentarios.

PD: maunix, que bueno encontra gente de la zona en el fojo jeje, yo hace 3 años que me vine a estudiar a cba.
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: maunix en 10 de Noviembre de 2006, 08:24:05
Hola, tengo una duda sobre que tipo de somunicacion usar entre dos pic, no quise crear un tema solo para esta consulata asique me meti aca.

Como dije necesito comunicar solamente dos pic en un mismo circuito, un 16f877 con un 16f628, y queria saber que tipo de comunicacion me recomiendan, I2C, SPI o 232.

El SPI es más simple de poner a punto , probar y usar.  El i2c es ideal pero requiere bastante más esfuerzo para hacerlo funcionar sobre todo el modo esclavo , y la lectura/escritura de un pic master al pic esclavo.   

No se de cuanto tiempo dispones, pero si te decidis por el i2c te sugiero que leas el datasheet del i2c de philips que tiene en su página.  Es gratis para bajar y es sumamente importante leerlo antes de usar el módulo para realmente entender cómo funciona.

Además, está muy bien explicado.

Como son 2 pic solamente en un principio pense en usar RS232 (Tx -> Rx), descarte el I2C ya que el 628 no lo tiene incorporado en la usart.

Una aclaración, los pics tienen un módulo usart con niveles TTL o de Vdd en caso de que el pic no sea alimentado con 5V.  El RS232 es otra norma que contempla otros niveles de tensión (3V < Vcero <18V para un 0 lógico y -3V < Vuno < -18V para un uno lógico).  Además de usar señalizaciones como RTS, DTR, etc.

Hacer una usart por software no es tan simple como parece porque es una comunicación asíncrona, y si usas alguna rutina que te de ya hecha el CCS u otro compilador tienes que tener presente que tiene limitaciones.


PD: maunix, que bueno encontra gente de la zona en el fojo jeje, yo hace 3 años que me vine a estudiar a cba.

Jeje, yo también vine hace unos 13 años a estudiar unos 13 años y me quedé....  :mrgreen:

Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: ESTECA55 en 10 de Noviembre de 2006, 09:10:09
Gracias,

Cuano me referia a la comunicacion 232 me referi mal, en realidad la idea era usar la usart, pero sin los max y demas, usando niveles TTL entre los pic.
Entiendo que se pueden usar mas pines, pero si no recuerdo mal, creo que es posible configurar la usart para usar solo 2 pines Rx y Tx, corrivanmen si no es asi.

De todos modo me voy a poner a buescar info sore SPI.

Saludo
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: dhmejia en 10 de Noviembre de 2006, 09:37:43
esteca55, dices que el motivo de la comunicación es que te estan faltando pines del 877, dependiendo de lo que estes haciendo puede ser mas fácil usar un registro de desplazamiento por ejemplo el 4094 para aumentar el número de salidas.

saludos,
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: ESTECA55 en 10 de Noviembre de 2006, 10:52:28
dhmejia, te cuento, lo que mas me roba pines del 877 son unos 11 leds del panel, (multiplezazo bajo un poco la cantidad de salidas) y varios reles.
Había pensado en usar un shift register, para los led y los reles, pero no se si sera muy conveniente conectar los reles al shift register ya que hasta que actualise el valor de todas las salidas en paralelo, los mismos proran ir activandose y desactivandose, y temo que se gasten mas rapido, que opinan ustedes, no se si me explico.

En cuanto a las demas cosas no puedo meterlas un de estos, ya ue tengo el teclado, al mismo bufer que en LCD (pondría poner el LCD con un shift, pero tendria que dejar el teclado y es peor orque se me suman los 2 pines para controlar el shift), 16 entradas analógicas, que como el pic dispone de 8, y encima quiero ponerle la Vref+, para eso use mux analógicos externos al pic, pero tengo que controlar los mux con lo ue pierdo 4 pines mas, a todo esto se le suman 2 sensores de RPM dos salidas por PWM, entradas en paralelo desde la PC y 4 salidas para controlar un variador de trifasica conjuntamente con las salidas de PWM,  cosas que no puedo poner en un shift

Saludos, espero sus comentarios
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: maunix en 10 de Noviembre de 2006, 12:54:12
Gracias,

Cuano me referia a la comunicacion 232 me referi mal, en realidad la idea era usar la usart, pero sin los max y demas, usando niveles TTL entre los pic.
Entiendo que se pueden usar mas pines, pero si no recuerdo mal, creo que es posible configurar la usart para usar solo 2 pines Rx y Tx, corrivanmen si no es asi.

Sí, sería lo que se llama un control de flujo "por software".  :)


De todos modo me voy a poner a buescar info sore SPI.


Es bastante simple, con lo que dice el datasheet del pic te debiera ser suficiente.  :)
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: dhmejia en 10 de Noviembre de 2006, 20:01:50
esteca55, la ventaja que tienen los 4094 y los registros similares a este es que tienen una especie de buffer interno en el cual se van desplazando los datos y luego de que uno ya termino de enviar lo que necesita da un pulso en el pin de strobe y la salida cambia de una sola vez, por lo tanto no sucede lo de el encendido y apagado mientras se envia el dato serial.  Este registro es muy facil de usar y es muy util en estos casos.

saludos,
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: ESTECA55 en 10 de Noviembre de 2006, 21:22:18
Gracias por la aclaracion dhmejia, pensaba que hera un shift register normal, la verdad que ve combiene usar uno de estos antes que meter un pic mas jeje

Gracias
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: johnyrpo en 12 de Noviembre de 2006, 10:12:02
MAUMIX GRACIAS POR RESPONDER A MI INQUITUD.

Te soy sincero, la verdad apenas estoy dando mis primeros pasos en los micros, el lenguaje de programacion estoy utilizando MPASM del programa MPLAB

Te cuento en detalle que es lo que nececito.

Con un micro 16f877, utilizando el conversor A/D con resolucion de 10bits ,  tomo la señal y la envio por el  pin  TX. esta señal pasa por un modulador FSK y lugo de nuevo por un demodulador FSK. En este punto debo tener de nuevo la señal enviada por el primer micro. La idea es tomar esta señal  y entrarla a un micro   en forma serie y pasarla a  uno delos  puertos  y visualizarla en 10 leds, luego utilizar este puerto y con una escalera R2R hacer un conversor  D/A.
La programacion del primer micro es:

LIST P=16F877A
          INCLUDE P16F877A.INC
      OPCION EQU 81
      CBLOCK 20H
      UNI,DEC,CEN,AUX,
      REG1,REG2,REG3,REG4,REG8,REG9,AUX1
      ENDC
      ORG 00
         GOTO CONFI
      ORG 05
CONFI   NOP
      BANKSEL RCSTA
      BSF RCSTA,SPEN      ;
      BSF STATUS,5      ;Banco 1
      BCF STATUS,6
      MOVLW B'10001110'   ;Justifica ala derecha ADRESH y
      MOVWF ADCON1      ;selecciona AN0
      CLRF TRISC         ;Selecciona puerto C como salida
      MOVLW B'00000010'
      MOVWF TXSTA   
      MOVLW .6
      MOVWF SPBRG   
      BANKSEL PIR1
      BSF PIR1,TXIF
      CLRF PORTC         ;Limpia puerto C
      GOTO TX
TX       NOP
      CALL CONVAD
      CALL BINBCD
      CALL INTX
      GOTO TX
INTX    MOVF CEN,W
      ADDLW 30
      CALL INTX1
      MOVF DEC,W
      ADDLW 30
      CALL INTX1
      MOVF UNI,W
      ADDLW 30
      CALL INTX1
      MOVLW .20
      CALL INTX1
      RETURN
INTX1    MOVWF TXREG
      BANKSEL TXSTA
      BSF TXSTA,TXEN
      BANKSEL PIR1      
PREG2   BTFSS PIR1,TXIF
       GOTO PREG2
      BCF PIR1,TXIF
      BANKSEL TXSTA
      BCF TXSTA,TXEN
      BANKSEL PORTA
      RETURN
CONVAD   MOVLW B'00000001'   ;Frecuencia de nuestreo, canal RA0/AN0 y
      MOVWF ADCON0      ;prende conversor
      CALL PAUSA
      BSF ADCON0,2      ;Inicia proceso de conversión      
PREG   BTFSC ADCON0,2      ;Salta cuando termina proceso de conversión
      GOTO PREG         
      BANKSEL TRISA      ;Banco 1
        MOVF ADRESL,W      ;Lleva el dato a REG8
      BANKSEL PORTA
      MOVWF REG8
      RETURN
PAUSA   MOVLW .5
      MOVWF REG9
PAUSA1   DECFSZ REG9
      GOTO PAUSA1
      RETURN
BINBCD    MOVF REG8,W
         MOVWF AUX
         CLRF UNI
       CLRF DEC
         CLRF CEN
         MOVLW .100
DCENT   SUBWF AUX
         BTFSS STATUS,C   ;Cundo resultado positivo C=1
         GOTO CORREG
         INCF CEN
         GOTO DCENT
CORREG    ADDWF AUX
         MOVLW .10
DDEC    SUBWF AUX
         BTFSS STATUS,C   ;Cundo resultado positivo C=1
         GOTO CORRE1
         INCF DEC
         GOTO DDEC
CORRE1    ADDWF AUX
         MOVF AUX,W
         MOVWF UNI
         RETURN
      END


No tengo ni idea como aherlo, si no es mucho  pedir  y me disculpas la confianza me podrias  hacer un programa que me realice  lo que requiero.


Muchas gracias
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: BrunoF en 12 de Noviembre de 2006, 15:53:16
Hola.
A ver si esto que te hice te sirve:

Antes que nada, SDK_PULSE esta usado en ambos algoritmos como pin envio/recepcion de datos.

#DEFINE   SDK_PULSE PORTB,0   ;//Bit por el cual se envian los datos al FSK

Envio:

Código: ASM
  1. ;REG1 contendria ADRESL
  2. ;REG2 contendria ADRESH
  3.  
  4. ENVIAR                          ;Envio LSB-MSB(Little Indian) de los 10 bits obtenidos del CAD
  5.         MOVLW   .10             ;Indicar que se van a enviar 10 bits
  6.         MOVWF   AUX             ;Guardar valor en variable
  7.  
  8. NEXT_BIT
  9.  
  10.         ;//¿¿¿DEMORA ENTRE BITS???
  11.         RRF     REG2,F          ;Rotar registro hacia la derecha(Afecta flag C)
  12.         RRF     REG1,F          ;Rotar registro hacia la derecha(Afecta flag C)
  13.         BTFSC   STATUS,C        ;¿Enviar alto o bajo?
  14.         GOTO    ALTO           
  15.  
  16.         BCF     SDK_PULSE       ;Bajo
  17.         GOTO    CHECK          
  18.  
  19. ALTO    BSF     SDK_PULSE       ;Alto
  20. CHECK
  21.         DECFSZ  AUX,F           ;¿Enviados los 10?
  22.         GOTO    NEXT_BIT        ;No. seguir con el proximo
  23.  
  24.         RETURN

Recepcion:

Código: ASM
  1. RECIBIR
  2.         MOVLW   .10
  3.         MOVWF   AUX
  4.  
  5. NEXT_BIT2
  6.         ;//DEMORA ENTRE ADQUISICION DE BITS????
  7.         BCF     REG2,2          ;Suponer bajo
  8.         BTFSC   SDK_PULSE       ;Realmente es un bajo?
  9.         BSF     REG2,2          ;No. Poner en alto
  10.  
  11.         RRF     REG2,F          ;Rotar Registro
  12.         RRF     REG1,F          ;Rotar Registro
  13.         DECFSZ  AUX,F           ;10 veces?
  14.         GOTO    NEXT_BIT2       ;No, proximo bit
  15.  
  16.         MOVF    REG1,W          ;REG1<0:7> contiene ADRESL
  17.         MOVWF   PORTB           ;volcar en PUERTOB
  18.  
  19.         MOVF    REG2,W          ;REG2<0:1> contiene ADRESH
  20.         ANDLW   B'00000011'     ;volcar en PUERTOC
  21.         MOVWF   PORTC
  22.        
  23.         RETURN

Saludos.
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: ceci_lamorocha en 24 de Septiembre de 2015, 11:30:15
hola amigos como estan !
tengo una gran duda y estube buscando informacion por google sin exito  :(
se puede hacer una comunicacion sincrona entre 2 pics usando la USART ?
los ejemplos que veo en google de comunicacion sincrona solo lo hacen por SPI o I2C, tendran algun ejemplo con la USART ?
saludos !
Título: Re: Pic a Pic - Comunicacion Serie
Publicado por: KILLERJC en 24 de Septiembre de 2015, 11:56:05
Si se puede hacer, pero va a depender que tipo de comunicación quieras

Pierdes la capacidad de que sea full-duplex, redondeandolo un poco, termina siendo un SPI que tiene la posibilidad de enviar 9bits en ves de 8.
Tal ves las ventajas son:
- ese 9no bit que permite una detección de error a través de paridad. Por que enviar un 9no bit de información si que es raro.
- Utilizar 2 cables

Y la desventaja frente al SPI
- No poder enviar y recibir al mismo tiempo (como hace el SPI con sus 3 hilos )

O que pueda ser usado como un SPI con 2 cables, ya que el receptor puede enviar 8 bits.

Lo utilizaría? No se, se pierde velocidad usándolo en modo asíncrono, el sincrono es 4 veces mas rápido que el asíncrono solo si te fijas en el reloj ( la UART Sincrona Tiene la misma velocidad que el SPI).
Ademas de eso se le exige enviar 3 bits mas por cada byte, o 2 bits mas por cada 9 bits. Asi que si es mucho mas lento el asíncrono.
Pero tenes la ventaja que es full-duplex y en 2 cables. Que pienso que es una gran ventaja esa.

Nuevamente todo depende de la aplicación que le vayas a dar.

En el datasheet viene explicado paso a paso como setear el modulo como sincrono. tanto como receptor como transmisor.