View previous topic :: View next topic |
Author |
Message |
ELCouz
Joined: 18 Jul 2007 Posts: 427 Location: Montreal,Quebec
|
Multiplexing RS232 with a pic |
Posted: Mon Aug 01, 2011 9:21 pm |
|
|
Hi,
It's been awhile since the last time i've logged here on the forum... community is still nice but my skills are now a little bit rusted (have not touched CCS compiler for nearly a year!)
Any idea how i would multiplex a rs232 link?
Example:
Code: |
MASTER (Windows CE ARM, TX-RX)
l
l
RJ45 Junction box with a pic (could be 18f2550)
use rs232 hardware for PIC (this one) to MASTER
use 8 i/o lines, 2 per slave for RX / TX
l l l l
l l l l
l l l l
SLAVE SLAVE SLAVE SLAVE
PIC PIC PIC PIC
TX-RX TX-RX TX-RX TX-RX |
baud rate would be 9600, i think its feasible in software for 4 rs232
With the multiplexer i can send in the packet a magic byte which determine the packet is destined to which slave (yes, like a ethernet switch) so in the slave pic it can listen to anything on the rs232 since packet have been sorted earlier in the multiplexer.
I know about rs485 and all but since a have a box full of pics a good compiler ;).... software is universal!
best regards,
laurent _________________ Regards,
Laurent
-----------
Here's my first visual theme for the CCS C Compiler. Enjoy! |
|
|
asmallri
Joined: 12 Aug 2004 Posts: 1635 Location: Perth, Australia
|
Re: Multiplexing RS232 with a pic |
Posted: Tue Aug 02, 2011 11:56 pm |
|
|
ELCouz wrote: | Hi,
It's been awhile since the last time i've logged here on the forum... community is still nice but my skills are now a little bit rusted (have not touched CCS compiler for nearly a year!)
Any idea how i would multiplex a rs232 link?
Example:
Code: |
MASTER (Windows CE ARM, TX-RX)
l
l
RJ45 Junction box with a pic (could be 18f2550)
use rs232 hardware for PIC (this one) to MASTER
use 8 i/o lines, 2 per slave for RX / TX
l l l l
l l l l
l l l l
SLAVE SLAVE SLAVE SLAVE
PIC PIC PIC PIC
TX-RX TX-RX TX-RX TX-RX |
baud rate would be 9600, i think its feasible in software for 4 rs232
With the multiplexer i can send in the packet a magic byte which determine the packet is destined to which slave (yes, like a ethernet switch) so in the slave pic it can listen to anything on the rs232 since packet have been sorted earlier in the multiplexer.
I know about rs485 and all but since a have a box full of pics a good compiler ;).... software is universal!
best regards,
laurent |
If you are sending standard ASCII (not binary) and there is no slave-to-slave communication then the simplest way to do this is have the master add a target identifier to the start of a packet and all slave PICs receive the same message and determine if they need to process it. In this was only the transmit traffic from the slave PICs needs to be multiplexed.
However you can certainly do the TX/RX multiplexing. I have run 1HW and three SW UARTS full duplex at 115200 on a PIC18F series processor running at 40MHz so 1HW UART at any speed and 4 software UARTS at 9600 baud is achievable.
The way I would treat this is to use a single timer for the transmit function running at the bit time. This would be interrupt driven and service all four SW UARTS at the same time.
For the receive but timing I would use a timer running at a multiple of the bit rate, I typically use 3 times, and use this for bit timing.
Each SW UART has a Tx and Rx state machine associated with it and each has its own Rx and TX buffer space allocated with their respective transmit and receive head and tail pointers.
The interrupt driven TX routine drains the transmit buffers, the interrupt Rx routines fill the receive buffers.
The main line code extracts from the respective receive buffers and add to the respective transmit buffers. _________________ Regards, Andrew
http://www.brushelectronics.com/software
Home of Ethernet, SD card and Encrypted Serial Bootloaders for PICs!! |
|
|
ELCouz
Joined: 18 Jul 2007 Posts: 427 Location: Montreal,Quebec
|
|
Posted: Wed Aug 03, 2011 7:39 am |
|
|
Thanks Andrew for the reply!
However, I'm now thinking more about rs485 solution since many pics will be in a engine bay.
Nasty EMF and RF are all around especially near spark plugs!
I think TTL level serial communication between pics will give me garbage on the lines.
RS485 is not bulletproof but at least more resistant to interferences.
After digging in my stuff, I've realized that a have a hand full of TI SN65HVD22 also called SuperRS485.
http://focus.ti.com/docs/prod/folders/print/sn65hvd22.html
thank you! _________________ Regards,
Laurent
-----------
Here's my first visual theme for the CCS C Compiler. Enjoy! |
|
|
dorinm
Joined: 07 Jan 2006 Posts: 38
|
|
Posted: Wed Aug 03, 2011 11:39 am |
|
|
i think you don't really need any pic-based "multiplexer" , a single max232 with capacitors, 4 diodes and 1 resistor will do the trick ;) ...if you don't figure aout, ask me and i'll show you how.
Regards |
|
|
ELCouz
Joined: 18 Jul 2007 Posts: 427 Location: Montreal,Quebec
|
|
Posted: Wed Aug 03, 2011 11:48 am |
|
|
Quote: | i think you don't really need any pic-based "multiplexer" Smile, a single max232 with capacitors, 4 diodes and 1 resistor will do the trick ;) ...if you don't figure aout, ask me and i'll show you how. |
Multiplexer was to handle packet collisions (ex: two slave transmitting data at the same time on the same line)
If your solution can avoid collisions, I would like to know more about that
thanks! _________________ Regards,
Laurent
-----------
Here's my first visual theme for the CCS C Compiler. Enjoy! |
|
|
dorinm
Joined: 07 Jan 2006 Posts: 38
|
|
Posted: Thu Aug 04, 2011 6:09 am |
|
|
however you said earlier that you will rely on a 485 network, how will you avoid there packet colision? also , if you think that you will have more than one "slave" transmitting at the same time then i can see no other solution than to use maybe 2 hw uart pic's or 4 pics with single hw uart and then link them together on another highspeed bus like SPI. .. |
|
|
ELCouz
Joined: 18 Jul 2007 Posts: 427 Location: Montreal,Quebec
|
|
Posted: Thu Aug 04, 2011 8:39 am |
|
|
Quote: | however you said earlier that you will rely on a 485 network, how will you avoid there packet colision? |
Quote from RS485.com
Quote: | The master initiates a communications request to a "slave node" by addressing that unit. The hardware detects the start-bit of the transmission and automatically enables (on the fly) the RS485 transmitter. Once a character is sent the hardware reverts back into a receive mode in about 1-2 microseconds (at least with R.E. Smith converters, repeaters, and remote I/O boards). |
You also have the ability to control DE and RE pins (Data Enable and Receiver Enable) which you control the mode of the chip either listening , sending or standby.
thanks _________________ Regards,
Laurent
-----------
Here's my first visual theme for the CCS C Compiler. Enjoy! |
|
|
|