??? 01/26/07 07:11 Read: times |
#131530 - now let me get this straight ... Responding to: ???'s previous message |
Erik, you're really taxing the realm of the plausible now.
You say you're bit-banging 5000 data bits per half-millisecond. I suppose it's reasonable from your comment that you "do it again" in the next half-millisecond, that you mean you're shoveling out 10000 bits per millisecond, which is 10 Megabits, forever. How do you get all that done, particularly with the overhead, e.g. fetching and blocking the data from its source? If you get even one interrupt, it had best be disabled, else you'll lose sync with your data rate. For each of those bits you have to get them from somewhere, presumably putting them in A. Where do the bits come from? I assume it's from within that 8k-byte XRAM block you have. Is that right? Having fetched a byte, you have to update the DPTR, don't you? Then, you have to isolate a bit, pehaps by rotating through carry? Of course, to isolate the bit that's in the carry, so how do you do that, and how do you write that bit to I/O? After that, you have to do it again and maintain a count of how many times you've done it. How do you do that? When you're done, you have to do that whole thing again. Additionally, you have to maintain some overhead, right? You do have to block and deblock the data so you'll know when you're done with your 5000-bit block. How do you do that? How long does all this take? Where does the data that you're banging out at a constant 10 Mbps originate? How does it get into your MCU? How does it get into your buffer? How long does that take? If you're transferring 5000 bits per half-millisecond all the time, when do you have time to respond to that time-critical interrupt that you were mentioning? When do you have time enough, even to maintain that bit-banging process? If you transfer this data synchronously, you have to generate or synchronize with a bit clock. I don't see where you have time to do that. This suggests that you actually have to bang out a few extra bits. To make async format work, you have to bang out at least 10 bits for each byte. How do you manage that, when you have to transfer 5000 data bits every half millisecond? Do you suppose you've exaggerated just a bit? RE |