??? 10/18/06 15:22 Modified: 10/18/06 15:38 Read: times |
#126671 - Yes, this needs clarification Responding to: ???'s previous message |
Erik Malund said:
Richard Erlacher said:
I just took a peek at the old slow 8255's datasheet (1985) and find it would comfortably allow successive reads and writes at 3 MBytes/sec. How do you propose to "get it in" at that speed? to operate the 8255 as fast as possible you need to use (OK I will not use my clear name for it since that offends you but a clumsy description instead) to do it by bit banging the read pin and port manipulation that will be a minimum of ~10 cycles rd high, data to a, a to memory, increment dptr, clock low. So, with your favorite "steam driven" derivative that would be only ~100k byte. With HW IIC it is 'in' at the IIC speed. Richard Erlacher said:
BTW, there are 805x's that allow long external I/O cycles while running quite fast from internal memory. are you seriously suggesting that the uC choice should be based on "can I use an 8255 with it"?. Also what about where you need XDATA as well? Erik About the last point first ... Certainly I'm not suggesting that it should be the ONLY criteria, but, if it's possiblity, it should be considered. I explained, that, if needed, one can set the bus "stretch" cycle length for the task at hand, i.e. when performing accesses to slow devices, you use a slow cycle, and when you're done, you go back to the faster one. I don't know exactly what you mean by "get it in" but if you mean transfer the data to/from the peripheral, keep in mind that you have to do that with the IIC as well. However, the process I described requires only that the channel be serviced at about 500 kHz. If you run an external memory cycle, yes, using the memory-mapped approach, then you set the external cycle length to what you need. If you don't have that option, then, presumably, you can use port-mapped transfers, since you need only 10 ns per machine cycle. Now if you can't run that fast, well, you have to select the 805x DIP or PLCC-44 drop-in that will meet your requirements. That's why I'm so interested in those Maxim/Dallas parts. That, BTW, is my favorite "steam-driven" 805x variant. It has two DPTR's, BTW, and they can be directed to auto-increment/decrement each time they're used, or not. That way, I can, presumably, fetch data from a fixed source and store in a moving destination with a minimum of effort, all the while running at full speed. The cycle stretch adjusts the external bus speed to the external peripheral. I'm not planning to use an 8255 anytime soon, but, just to P*SS you off, I may do it when time is available. As for the port-mapped approach and bit-banging the controls, if you set the select and read tags you have to kill some time, assuming you're running at, say, 50 MHz or better, and while you're killing time, you can save the previous or fetch the next byte, bump the DPTR, etc. RE |