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.
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
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.