Autor Tema: Duda sobre Rs485  (Leído 1700 veces)

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

Desconectado eldire

  • PIC10
  • *
  • Mensajes: 47
Duda sobre Rs485
« en: 22 de Junio de 2010, 14:24:14 »
Buenas, como siempre estoy por aqui dando el follon.

Estoy realizando unas practicas para el manejo del 485 con pbp. El pic que tengo pensado utilizar es el 18F26K20. Utilizando el usart que tiene. La practica que me ocupa es la siguiente:

Maestro envia una "A" a esclavo, si el esclavo es "A" envia una "B", si el maestro recibe una "B" cambia el estado a alto de un led si no es una B pone en bajo un led. Adjunto codigo y simulacion en proteus.


Codigo del maestro.

Código: [Seleccionar]
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 1200
define OSC 4
Control var PORTA.0
Led var PORTB.7
Lestado var PORTB.6
Reci var byte
'Aplicacion Principal
Gosub Rojo ' Parpadeo inicial para saber que el pic esta vivo.

Inicio:
    high Control ' Ponemos en alto el Re-De del 485.
    hserout ["A",13,10] ' Enviamos la A al esclavo
    low Control ' Ponemos en bajo el Re-De del 485.
    pause 200
    hserin [Reci]
    pause 200
    if Reci<>"B" then
        gosub Ko
    else
        gosub Ok
    endif
    gosub rojo
Goto Inicio
Rojo:
    high led
    pause 200
    low led
    pause 200
return
Ko:
    low Lestado
return
Ok:
    high Lestado
return

End

Codigo del esclavo
Código: [Seleccionar]
DEFINE HSER_RCSTA 90h
DEFINE HSER_TXSTA 20h
DEFINE HSER_BAUD 1200
define OSC 4
Control var PORTA.0
Led var PORTB.7
Lestado var PORTB.6

Reci var byte
'Aplicacion Principal
Gosub Rojo ' Parpadeo inicial para saber que el pic esta vivo.

Inicio:
    low Control ' Ponemos en bajo el Re-De del 485.
    hserin [Reci] ' Enviamos la A al esclavo
    HIGH Control ' Ponemos en Alto el Re-De del 485.
    pause 200
    if Reci<>"A" then
        gosub Ko
    else
        hserout ["B",13,10]
    endif
    low control
    pause 200
    gosub rojo
Goto Inicio
Rojo:
    high led
    pause 200
    low led
    pause 200
return
Ko:
    low Lestado
return
Ok:
    high Lestado
return

End
.

El problema es que las dos primeras comunicaciones las recibo, pero despues el esclavo cae y el maestro aguanta un poco mas hasta que cae. Alguna sugerencia para salir de este problema.

Gracias por anticipado y perdon por el tocho que me ha salido.