CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

OT: Sanity check

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
bungee-



Joined: 27 Jun 2007
Posts: 206

View user's profile Send private message

OT: Sanity check
PostPosted: Tue May 25, 2010 5:50 am     Reply with quote

I'm working on project where three PIC's will be used. One will be master and two of them will be sending some data back to master. For master PIC I'll use one with two HW UART's.
Now the question, is it possible to receive the data from both slaves at once (not synchronously), or I have to build in some flow control so the slaves will send only when the master is ready to receive. I expect that HW UART is capable of that, but I could be mistaken.

Thanks for brainstorm. Embarassed
MikeW



Joined: 15 Sep 2003
Posts: 184
Location: Warrington UK

View user's profile Send private message

PostPosted: Tue May 25, 2010 5:58 am     Reply with quote

you dont give any info on data speed, or amount.

I would look at using either SPI or I2C hardware in the PIC rather than UART.

since its a master/slave situation, its always better to have a control pin from the master to signal to the slaves " its time for you to get/send"

Mike
Wayne_



Joined: 10 Oct 2007
Posts: 681

View user's profile Send private message

PostPosted: Tue May 25, 2010 6:55 am     Reply with quote

Using a PIC with 2 MSSPs and I would look at using SPI, your master would be able to receive 1 byte from both slaves at the same time.
Esentially the hardware will receive 1 byte from each and store it in buffers and whilst you copy that from the hardware buffer to an array it will be clocking in another byte from each.

I would then use the SSP_ISR to copy the data from the hardware buffers to 2 arrays for processing later on.

but as stated, speed and amount will play an important part in how well this will work.
bungee-



Joined: 27 Jun 2007
Posts: 206

View user's profile Send private message

PostPosted: Tue May 25, 2010 12:04 pm     Reply with quote

Thank's for reminder....

Data from slaves will be sent twice per second, packet will be 8bytes long, communication speed will probably be 28kbps. I didn't consider SPI or I2C because PIC's will be separated by optocouplers, ground will not be common.
Master will be sending occasional commands to slaves. To that slaves would confirm the command and then they would continue with sending data back.
MikeW



Joined: 15 Sep 2003
Posts: 184
Location: Warrington UK

View user's profile Send private message

PostPosted: Tue May 25, 2010 2:31 pm     Reply with quote

Analog Devices have some great chips which give galvanic isolation of KV's, they are not optical, but use micro transformers.

I have used them to isolate I2c bus, they just drop in, and work.

otherwise, if you need optical, say for medical, then try

googling " spi optical isolation", you will get loads of hits


Dallas/maxim gave an app note which optically isolates the SPI, see

Isolating USB - AN3891


Mike
bkamen



Joined: 07 Jan 2004
Posts: 1615
Location: Central Illinois, USA

View user's profile Send private message

PostPosted: Tue May 25, 2010 9:16 pm     Reply with quote

SPI is easy to optically couple..

I played with it in the past using the 1000uM stuff from industrial fiber.

They make some fun stuff that uses cheap plastic fiber.

-Ben
_________________
Dazed and confused? I don't think so. Just "plain lost" will do. :D
Ttelmah



Joined: 11 Mar 2010
Posts: 19496

View user's profile Send private message

PostPosted: Wed May 26, 2010 2:02 am     Reply with quote

Yes.
SPI, is 'easier' to opto-couple than I2C. With modern 'logic level' opto-couplers, it really couldn't be much simpler.
I2C, is harder, because of the bi-directional nature of the signals, but can be done. Have a look at the P82B96, which is a I2C buffer designed to provide much better galvanic protection and support operations at different voltage levels. On it's own, it makes I2C, a much more 'useable' interface for going between units, but as one of it's 'other features', it allows the two directions to be separated, and opto-coupled.

Best Wishes
bkamen



Joined: 07 Jan 2004
Posts: 1615
Location: Central Illinois, USA

View user's profile Send private message

PostPosted: Wed May 26, 2010 6:45 am     Reply with quote

I did an opto-coupled I2C design in SCH one time.. it wasn't that bad. It just requires 3 opto lines because of the nature of I2C...


But using OpenCollector parts, should have worked just fine.... I just never built it and tested in.

-Ben
_________________
Dazed and confused? I don't think so. Just "plain lost" will do. :D
John P



Joined: 17 Sep 2003
Posts: 331

View user's profile Send private message

PostPosted: Wed May 26, 2010 6:56 am     Reply with quote

But to address the original question--yes, you can send totally asynchronous data to a chip with dual UARTs. Just don't spend too long in interrupts (or any routine that locks out one data source).

If I were writing the program, I'd have the processor interrupted by a fixed-frequency clock at say 5KHz, in which it would poll the two UARTS for incoming data, with the data put in circular buffers to be processed in the main() routine. But there are various ways to do it.
bungee-



Joined: 27 Jun 2007
Posts: 206

View user's profile Send private message

PostPosted: Thu May 27, 2010 10:43 am     Reply with quote

Thank's for all replies. I'll test I2C and uart and I'll see the results. Thank you for this brainstorm. Cool
bkamen



Joined: 07 Jan 2004
Posts: 1615
Location: Central Illinois, USA

View user's profile Send private message

PostPosted: Thu May 27, 2010 10:59 am     Reply with quote

Was this for work or school project?

-Ben
_________________
Dazed and confused? I don't think so. Just "plain lost" will do. :D
Gabriel



Joined: 03 Aug 2009
Posts: 1067
Location: Panama

View user's profile Send private message

PostPosted: Thu May 27, 2010 12:02 pm     Reply with quote

Just another possibility I see:

Put the 3 pics in a ring configuration..... PIC1->PIC2->PIC3->PIC1

You would need 2 bytes though, to identify the sender.... and then each PIC needs to decide if its necessary to forward the message or execute the command....

I understand there are issues with "ring type networks".... but I'm just suggesting a possible solution...

gabriel
_________________
CCS PCM 5.078 & CCS PCH 5.093
bungee-



Joined: 27 Jun 2007
Posts: 206

View user's profile Send private message

PostPosted: Thu May 27, 2010 12:22 pm     Reply with quote

bkamen: Neither...

I'm working on digital workbench power supply. It will be two channel that will be electrically separated, so you can then connect them together for dual operation. One PIC will be "UI" and then each channel will have own PIC for actual voltage/current regulation.

@Gabriel: possible, but not in this situation.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group