K8055 speed

Hi,

Currently I am using a Velleman K8055.
I cannot change the outputs faster than the 20ms it takes to process a command from the PC.
I do not know if this is:

  1. a driver problem,
  2. an OS problem (the speed of polling of USB)
  3. or a fundamental problem with the device (someone said was due to the PIC controller implementation)

Could you tell me if there is a way of changing the digital outputs at faster than 1ms? I just want a quick fix and I don’t really want to buy the other Velleman board (or another supplier) which is meant to be faster without trying my options first.

Regards,

Remi

Please read the product specifications:

general conversion time: 20ms per command

You can’t make it faster.

Yes but why?

Is it dll, OS polling of port or limitations of PIC microcontroller in the device (I heard).

The K8055 uses low speed HID USB interrupt protocol.
Regardless of the name “interrupt” USB is using polling method. The polling interval is 10ms.

Is there a way of increasing the clock speed of the unit and will that have an effect?

Is there an equivalent to ‘readalldigital’ where I can chain several actions into one command? I might thus want to chain together bit 0 = 0 then the next command as bit 1 = 0, can I chain them so the transition happens at the K8055 clock speed?

The K8055 is on the old usb 1 standard, would increasing the clock speed or using other drivers improve the latency.

I’m sorry to appear exhaustive but it seems that my only other option is to buy from a different maufacturer and I’m a little locked into the K8055 and I like it too.

Thanks.

Use the WriteAllDigital Command to write to all 8 bits at once.

I think there is not much to do to increase the speed of the K8055.

For two way communication (e.g. reading analog inputs) the response time is 20ms.
For one way communication (e.g. set the digital outputs) the response time is typically less than 10ms.
Below is an oscilloscope image from the digital output signals when this Borland C++ Builder code is run.

for(int i=0; i<1000; i++) { WriteAllDigital(0x55); WriteAllDigital(0xaa); }

Thanks Vellman, past that stage already and have similar traces. I’ll have to use another manufacturer but won’t name them at risk of breaking the forum rules.

A nice product anyway, quick and easy to set-up and use.

All the best,
Remi.