|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
||||
|
||||
|
Re: DO write speed
Okay, I got something about 10 times as fast.
It was locked, else I might have dug deeper. (though I suspect this may be as far as the processor goes) I have some questions about *why* it is done this way. It looks like it actually updates all 14 GPIO at the same time. Is this how the module is normally accessed? I ran the channel mapping VI on my computer, and found that the bit placement directly corresponds to the channel number on the DIO module. What separates these updates from the PWM and relay updates? Is this just an efficient way of passing the data to the Digital Module? Would it be faster sending a string of data through I2C? |
|
#2
|
||||
|
||||
|
Re: DO write speed
Quote:
This is mainly for parallel communication, where you need to update all of the bits in the byte you're trying to send at the same time so you can tell the receiving end of the line when it can look for the new data. It's kind of just a precedent, and they've probably put that into the update protocols of the digital module itself (cRIO communicates to the digital module over a serial connection, that VGA-sized port at the bottom, so all data extraction is done inside the module). This is all just inferences from working with other microcontrollers, and I know that the cRIO is a completely different animal, but the precedents probably still stand. I'm going to guess that the GPIO bank is made up of two registers coming off of the chip inside the digital module, which would kind of act like a "middle-man". If anyone here knows the actual construction of the cRIO modules, I would love to hear about it. |
|
#3
|
|||
|
|||
|
Re: DO write speed
Its not just for parallel communication. It is a side effect of the fact that figuring out what to do is often harder than doing it. In designing a microprocessor, it is just as easy to have it update N* pins as it is to only update one. You might as well take advantage.
For serial devices like the cRIO module, it is often quicker to update them all so you don't have to do any addressing. For example, the relay pins on the DSC do just this. We send a reset signal and then clock every single pin out every time. The whole process takes on the order of N+4 clock cycles. If we were to do individual pin addressing, we'd have to clock out the address and then the pin value, which would be on the order of log2(N)+5 per pin. This would be quicker for one or two pins, but loses in a hurry if we are updating many pins. Note that CAN is taking the opposite strategy: Since there are so many more registers to talk to, the overhead of addressing what you are talking to is worthwhile. * If N is equal to or less than the width of the processor |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| pic: Write in Kamen? I did. | joshsmithers | Extra Discussion | 10 | 05-05-2008 17:17 |
| Write Mac Floppies on a PC? | sanddrag | IT / Communications | 13 | 26-09-2004 22:07 |
| read/write EEPROM on 18F8520 | WizardOfAz | Programming | 39 | 22-03-2004 13:32 |
| What program should I write? | rbayer | Programming | 24 | 03-10-2003 20:07 |
| Write letters | Todd Derbyshire | Rumor Mill | 1 | 16-02-2002 02:19 |