Hello,
I have built to separate alarm monitoring systems this summer . One system has 20-16F74's talking to an 18F452. The other system operates the same and has 20 16F872's talking to a 16F877A. The serial lines on the 20 boards of each system have a 1K resistor on each board. NO PULLUPS on the senders! THIS IS IMPORTANT! The boards are all programmed as inputs normally and use the SEROUT2 command to send data. As soon as they are done sending the data, the command TRISA.#=1 is given to return the pin to an input state. The receivers (18F452 and 16F877A) have a 1K resistor inline with the input pin and a 100K resistor for a pullup. I did much hair pulling before writing to Stephen Collins (author of SIXPICS.BAS on MELABS site) for help. He sent me in the right direction. It took several days to get things straight but my systems have been working great since then. I have had to set up my "senders" to send the message 3 times with a 10ms pause between each one to eliminate missing and signals. I also have a "busy" line between all boards. The senders put the line to low to let the receiver know data is forth coming and go back to high when done. The receiver puts the line low and holds it there until an operator acknowledges receiving the alarm signal. Each sender sits in a loop waiting for the busy line to go high should any additional alarms get triggered while they are processing the previous alarm.
Hope this helps you out. Let me know if I can be of further assistance.
BobK
Bookmarks