Autor Tema: RS485 con PIC16F876  (Leído 2048 veces)

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

Desconectado JUANPIC

  • PIC10
  • *
  • Mensajes: 3
RS485 con PIC16F876
« en: 30 de Agosto de 2004, 11:00:00 »
Hola a todos. Quiero conectar una PIC16F876 como Master con otra PIC16F876 como esclava. He hecho una red RS-485 con el MAX 1483, pero no hay manera que me funcione, les he puesto a cada MAX1483 su resistencia de 120 Ohm entre el canal A y B.
En el programa del PIC maestro intento simplemente enviar todo el rato lo que tengo en un puerto hacia el PIC esclavo.  Y en el esclavo simplemente hago de receptor todo el rato a la espera de algun dato.
El resultado es que no me va, y necesitaria información tanto de algun soft en asincrono como sincrono half duplex, o de harware.
Necesito ayuda de lo que sea . Gracias.

Desconectado gauchosuizo

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 457
RE: RS485 con PIC16F876
« Respuesta #1 en: 31 de Agosto de 2004, 00:13:00 »
hola Juanpic

para poder saber que es lo que pasa, tendrias que poner el circuito y el programa. Asi te podemos dar mas detalles.
Saludos desde Suiza, Pablo.

Desconectado JUANPIC

  • PIC10
  • *
  • Mensajes: 3
RE: RS485 con PIC16F876
« Respuesta #2 en: 31 de Agosto de 2004, 15:03:00 »
Hola de nuevo.
Aquí tienes el programa de la PIC MASTER , y  la de la PIC ESCLAVO.   
El circuito no se como enviartelo, ya que no funciona eso de enviar ficheros adjuntos, porque te dice que no hay suficiente espacio disponible.

 "MASTER"


                    LIST             P=16F876
   INCLUDE   P16F876.INC

W      EQU   0
f      EQU   1


   ORG   00h
      GOTO   Inicializa
      ORG   05h

Inicializa   BSF   STATUS,RP0
      MOVLW   B"00000110"
      MOVWF   ADCON1

      MOVLW   B"00000011"
      MOVWF   TRISA

      MOVLW   B"00000000"
      MOVWF   TRISB

      BCF   STATUS,RP0
      CLRF   PORTA
      CLRF   PORTB

Ini_UART   BSF   STATUS,RP0
      BSF   TRISC,6
      BSF   TRISC,7
      BCF   PIE1,RCIE
      BCF   PIE1,TXIE

      MOVLW   B"00100100"
      MOVWF   TXSTA

      BCF   STATUS,RP0
      MOVLW   B"10010000"
      MOVWF   RCSTA
      BSF   STATUS,RP0

      MOVLW   12
      MOVWF   SPBRG   
      BCF   STATUS,RP0
      

TORNA      MOVF   PORTA,W
      MOVWF   TXREG

      BSF   STATUS,RP0

TXW_UART   
      BTFSS   TXSTA,TRMT
      GOTO   TXW_UART
      BCF   STATUS,RP0




      GOTO   TORNA

      END


"ESCLAVO"



   LIST   P=16F876
   INCLUDE P16F876.INC
   

W      EQU   0
f      EQU   1


      ORG   00h
      GOTO   Inicializa
      ORG   05h

Inicializa   BSF   STATUS,RP0
      MOVLW   B"00000110"
      MOVWF   ADCON1

      MOVLW   B"00000000"
      MOVWF   TRISA

      MOVLW   B"00000000"
      MOVWF   TRISB

      BCF   STATUS,RP0
      CLRF   PORTA
      CLRF   PORTB

Ini_UART   BSF   STATUS,RP0
      BSF   TRISC,6
      BSF   TRISC,7
      BCF   PIE1,RCIE
      BCF   PIE1,TXIE

      MOVLW   B"00100100"
      MOVWF   TXSTA

      BCF   STATUS,RP0
      MOVLW   B"10010000"
      MOVWF   RCSTA
      BSF   STATUS,RP0

      MOVLW   12
      MOVWF   SPBRG   
      BCF   STATUS,RP0
      
TORNA      

RxW_UART   BTFSS   PIR1,RCIF
      GOTO   RxW_UART
      MOVF   RCREG,W
      MOVWF   PORTA
   
      GOTO    TORNA
   

      END




Desconectado T0ni0

  • PIC16
  • ***
  • Mensajes: 196
RE: RS485 con PIC16F876
« Respuesta #3 en: 01 de Septiembre de 2004, 06:31:00 »
Hola, he cambiado algunas cosas del programa MASTER, aki va:



;"MASTER"

   
   LIST P=16F876
   INCLUDE P16F876.INC

   __CONFIG _CP_ALL & _WDT_OFF & _BODEN_ON & _PWRTE_ON & _XT_OSC & _WRT_ENABLE_ON & _LVP_OFF & _DEBUG_ON & _CPD_OFF

W EQU 0
f EQU 1

   
   ORG 00h
   GOTO Inicializa
   ORG 05h

Inicializa BSF STATUS,RP0
   MOVLW B"00000110"
   MOVWF ADCON1
   
   MOVLW B"00000011"
   MOVWF TRISA
   
   MOVLW B"10000000"
   MOVWF TRISC
   
   MOVLW B"00000000"
   MOVWF TRISB

   BCF STATUS,RP0
   CLRF PORTA
   CLRF PORTB

Ini_UART BSF STATUS,RP0
   BSF TRISC,6
   BSF TRISC,7
   BCF PIE1,RCIE
   BCF PIE1,TXIE

   MOVLW B"00100100"
   MOVWF TXSTA
   
   BCF STATUS,RP0
   MOVLW B"10010000"
   MOVWF RCSTA
   BSF STATUS,RP0
   
   MOVLW D"25"   ;con un cristal de 4MHz son 9600bauds
   MOVWF SPBRG
   BCF STATUS,RP0


TORNA:
   

TXW_UART   BSF STATUS,RP0

   BTFSS TXSTA,TRMT
   GOTO TXW_UART
   BCF STATUS,RP0
   
   MOVLW A"A"
   ;MOVF PORTA,W
   MOVWF TXREG

   GOTO TORNA

   END



Ha destacar:

Palabra de configuración (para poder depurar yo correctamente)

carga al SPBRG:  he puesto 25 por que tengo un cristal de 4MH y lo quiero a 9600 ok?

Forma de envio: he cambiado la secuencia, primero miro si se puede enviar y luego envio.

Dato a enviar: cargo una A aunque he probado de enviar el PORTA y también va bien.

Trisc:  definición de salida el TX

Pruebalo y nos cuentas


P.D. per les etiquetes veig que no estic sol, salut CAT
- T0ni0 -
30RCF112

Desconectado JUANPIC

  • PIC10
  • *
  • Mensajes: 3
RE: RS485 con PIC16F876
« Respuesta #4 en: 01 de Septiembre de 2004, 09:41:00 »
HOLA TOni0, he probado lo que me has dicho, pero me sigue sin funcionar, veo como se enciende el led del TX MASTER pero al cabo de unos 8 segundos se para. Y en cuanto al esclavo no me refleja nada en el puerto.


 

anything