I was hoping to use my K8055 to control an old robot arm that has 6 stepper motors.
Unfortunately writing bit patterns to the 8 output bits is not fast enough.
I did a test using ‘C’ writing 1024 patterns to the port, this took between 11,000 & 12,000ms so I can achieve approximately 1 in 11ms.
(I see the documentation talks about 20ms - so I am getting better than expected!)
This performance is disappointing.
Please can you explain why it is so slow?
Is there anything that can be done to improve the speed?
The reason to the low speed is that the PIC16C745 microcontroller used in the K8055 supports Low Speed interrupt USB transfers only. The latency for interrupt transfers is about 10 ms. A maximum of 8 Bytes/10 ms can be transferred with an interrupt endpoint.
The specified 20 ms for the K8055 concerns two way communication. As you noted the one way (output only) communication interval is about 10 ms.
The speed is according to the USB specifications and can’t be improved.
The K8061 uses Full Speed USB. Its response time is about 4 ms for two way communication.
A maximum of 8 Bytes/10 ms can be transferred with an interrupt endpoint.
I probably don’t understand that.
I guess that some of those 8 bytes are ‘command’ followed by data.
Does it mean that a stream of 8 bytes can/could be written in a single transfer. That is, is there, or could there be a DLL API that allowed a byte array to be written in a single command?
Indeed, interesting point of view sending an array of bytes to the digital output of the card.
Now one byte command and one byte of data is sent from the host to the K8055 card every 10 ms.
Sorry but the K8055 firmware does not support the multi byte feature you suggested.
Indeed, with the K8055 you can’t go much further – sorry.
The firmware is fixed and final I think.
The only “upgrade” to the K8055 is the K8061 Extended USB Interface Board. http://www.velleman.be/es/en/product/view/?id=364910
It is nearly ten times faster and outputs 1000 bytes in about 1250 ms.