Good day
I have a simple setup with <b>2 x PIC 16F877</b> and want to do <b>RS485 Comms</b> using <b>2 x SN75176</b> chips.
The one PIC is the <b>Master</b> and the other the <b>Slave</b>.
For debug purposes I send messages to my <b>PC using RS232</b> from the Master.
<font color="#993300">Below is my code for the MASTER:</font>
<hr>
<code>
Include "Modedefs.bas"
DEFINE OSC 4
DE_OR_RE VAR PORTC.5 ' DE and RE Pin of SN75176
RS232_DEBUG_PIN VAR PORTB.5 ' Debugging to PC
LEDPIN VAR PORTD.2 ' LED to confirm PIC is running
DATARECEIVED VAR BYTE
'======== HSEROUT, HSERIN SETTINGS ==========
DEFINE HSER_RCSTA 90h
define HSER_TXSTA 20h
define HSER_SPBRG 103
DEFINE HSER_CLOERR 1
RCIF VAR PIR1.5
TXIF VAR PIR1.4
ADCON1 = 7
TRISC = %10000000
Main:
HIGH LEDPIN &n bsp; &nbs p; ' Indicate PIC is running
HIGH DE_OR_RE &n bsp; ' Make ready for TX
PAUSE 100
HSEROUT ["S0"] &n bsp; ' Send "S0"
PAUSE 100
LOW LEDPIN
LOW DE_OR_RE &n bsp; ' Make ready for RX
PAUSE 100
SEROUT RS232_DEBUG_PIN,N2400,["WAITING FOR REPLY..", 13, 10] ' DEBUG TO PC
if RCIF then
hserin 100,Main,[WAIT ("R"),DATARECEIVED]
PAUSE 100
ENDIF
SEROUT RS232_DEBUG_PIN,N2400,["REC:",DATARECEIVED, 13, 10] ' DEBUG TO PC
PAUSE 100
GOTO Main
END
</code>
<hr>
<font color="#993300">Here is the code for the SLAVE:</font>
<hr>
Include "Modedefs.bas"
DEFINE OSC 4
DE_OR_RE VAR PORTC.5 ' DE and RE Pin of SN75176
LEDPIN VAR PORTD.2 ' LED to confirm PIC is running
DATARECEIVED VAR BYTE
'======== HSEROUT, HSERIN SETTINGS ==========
DEFINE HSER_RCSTA 90h
define HSER_TXSTA 20h
define HSER_SPBRG 103
DEFINE HSER_CLOERR 1
RCIF VAR PIR1.5
TXIF VAR PIR1.4
ADCON1 = 7
TRISC = %10000000
Main:
HIGH LEDPIN &n bsp; &nbs p; ' Indicate PIC is running
LOW DE_OR_RE &n bsp; ' Make ready for RX
PAUSE 100
if RCIF then
hserin 100,Main,[WAIT ("S"),DATARECEIVED] ' Looking for "S0"
PAUSE 100
IF DATARECEIVED = "0" THEN
HIGH DE_OR_RE ' Make ready for RX
PAUSE 100
HSEROUT ["R1"] &n bsp; ' Send R1
ENDIF
endif
LOW LEDPIN
PAUSE 100
GOTO MAIN
END
<hr>
<font color="#993300">Please find attached my schematic!</font>
<hr>
MY QUESTION:
<hr>
<font color="#993300">
The first time I connected the Slave to the 5v power and then after about 5 seconds the Master I get the following on the PC Side:
</font>
<b>
WAITING FOR REPLY..
WAITING FOR REPLY..
REC:˙
WAITING FOR REPLY..
REC:˙
WAITING FOR REPLY..
REC:˙
WAITING FOR REPLY..
REC:˙
WAITING FOR REPLY..
REC:˙
WAITING FOR REPLY..
REC:˙
</b>
<font color="#993300">
Then when I done it again I get the following:
</font>
<b>
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
</b>
<font color="#993300">
When I startup the Master first and then after a few seconds the Slave I get the following
</font>
<b>
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
REC:˙
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
</b>
<font color="#993300">
When I connect the Slave first, then the Master and then after a few seconds disconnect and connect the master again, it just keep on returning <b>"WAITING FOR REPLY.."</b>
</font>
<b>
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
REC:1
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
WAITING FOR REPLY..
</b>
<font color="#993300">
It is very unreliable, sometimes it is working and sometimes not.
Am I doing something stupid???
</font>
Thank you
Koossa
Bookmarks