arduino with faster interface?

Hi, I was wondering if anyone is working on an arduino with a faster interface.
Or if there is another open alternative with a fast interface.

Something like for example the National Instrument USB-6008/6009 boards, but you aren't locked into using proprietary software and hardware.

Thanks

Hi dugh,

Could you clarify what you mean by a faster interface and perhaps say how fast you need it to be and what you want to build.

See for example the 6008 board, which has a 10Ks/s throughput: USB-6008

Something fast enough to be used for example to generate or read waveforms in a circuit (like a software oscilloscope) or to create custom gaming input devices that need to be polled very fast, etc.

This thread http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1204603637 mentions a new ATmega chip that has 12-bit ADC capable of up to 2 Msps,

It doesn't look Arduino compatible but it sure is plenty fast.

Hi,

See for example the 6008 board, which has a 10Ks/s throughput: USB-6008

Don't be mislead by the product-specs. The device will record the analog-data at 10ks/s but in the end, this all has to go through the USB-bus at a maximum of 12Mbit/s.
This is usually done as a data-report of 64bytes per millisecond on the USB, exactly the troughput of the Arduino-FTDI USB-interface.

But since NI is a closed source hard and software company they don't tell the little details.

Something fast enough to be used for example to generate or read waveforms in a circuit (like a software oscilloscope)

The first company that sells an USB-Scope with a datasheet for writing myself a Linux-driver instead of their own crappy Software ...

"Windows only for sure, but not on Vista, sorry maybe there will be an update after ServicePack 56!"

...will get my money !!!

or to create custom gaming input devices that need to be polled very fast, etc.

There is really no need to hurry with these gaming-devices no matter how hard you try there is no way any part of your body can produce data faster than the 1000 Reports/s USB-2.0 gives you!

And in the end you see what you done on a Screen at 100 Frames/s.
The arduino is fast enough for all this.

Eberhard

For an Arduino-based logic analyzer, see: http://timothytwillman.com/?page_id=123

wayoda/Eberhard, you're mistaken and conflating USB 2.0 with the arduino. USB 2.0 may give you 1000 reports per second, but not the arduino, even though it uses a USB connector. In the examples I've seen the arduino is much slower because of the usb to serial stuff.

You don't see any examples of the arduino being used for the purposes I described. Take for example an arduino-based mouse. It would jump around when you move the mouse fast because the serial port connection isn't fast enough to handle smooth mouse movement.

The guy who made the arduino logic analyzer also points out issues with the sampling rate. "I really need to move it off Arduino and do the interrupt servicing in assembly. It's far too slow for what it's supposed to do."

This is all fine, it's not what the arduino was designed primarily to do, hence the question about a possible future version that is better suited to things like developing custom input devices.

This is a first step if it ever gets off the ground, making arduino HID compatible:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1172471904
or the effort to use avr-usb for interfacing with the arduino:
http://www.obdev.at/products/avrusb/index.html

Hi dugh,

wayoda/Eberhard, you're mistaken and conflating USB 2.0 with the arduino. USB 2.0 may give you 1000 reports per second, but not the arduino, even though it uses a USB connector. In the examples I've seen the arduino is much slower because of the usb to serial stuff.

Yes, you are right. In a forum you usually don't know how much background the other people reading the thread have.
I just wanted to point out, that even NI is not able to do a live-stream of data at 10ksamples/s.
Now back to the arduino:

Take for example an arduino-based mouse. It would jump around when you move the mouse fast because the serial port connection isn't fast enough to handle smooth mouse movement.

I really don't know the maximum timespan for the "mental" delay between a body-movement and the feedback on a computer screen.
I know it's 20ms with musical issues. That is the time between hitting a key on an instrument and the sound from the speaker coming back to your ears. If is <=20ms you don't have a feeling of delay. Daniel Barenboim might have a different opinon on this :slight_smile:

A software that generates screen-updates at 100 fps leaves you with a maximum of 10 ms between two new images on your eyes. I think the Arduino should be able to send at least 2 ints for the relative mouse movement during these 10 ms. I didn't try but this should be possible...

The guy who made the arduino logic analyzer also points out issues with the sampling rate. "I really need to move it off Arduino and do the interrupt servicing in assembly. It's far too slow for what it's supposed to do."

This is not a problem with interfacing from the desktop to the Arduino. It is simply a question of choosing the right tool for a project. If the Arduino-Language is too slow, you have to move to assembly....

This is a first step if it ever gets off the ground, making arduino HID compatible:
http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1172471904
or the effort to use avr-usb for interfacing with the arduino:
http://www.obdev.at/products/avrusb/index.html

I don't think that any one of these efforts will give more that USB 1.1 low-speed (~750 Bytes/s) throughput. The Arduino/FTDI can easily compete with that.

If you need something faster you'll have to go for a dedicated piece of hardware. There are USB-chips available that run at 12MBit and implement SPI- and IIC-interfaces in hardware. But a single chip is more expensive than a fully assembled Arduino.

I would really like to have a USB-Arduino with a dedicated Vendor-Id/Product-Id/SerialNumber that says
"Hi, I'm an Arduino HID-Device and since my serial-number is 12345678, I'm the on that operates your coffe-machine. What can I do for you?"

Instead of
"Hi, I'm a USB-Serial-device and probably an Arduino too! "
"Can I get a cappucino please?"
"No, sorry I'm a modem ;-)"

Eberhard

Take for example an arduino-based mouse. It would jump around when you move the mouse fast because the serial port connection isn't fast enough to handle smooth mouse movement.

I hate to burst your illusions, but the original computer mice ran over one the computer's serial ports at a paltry 2400bps, far slower than the Arduino is capable of sending data to a PC over its Serial/USB link. You can still buy "serial mouse" peripherals (trackballs, etc) and they work fine with WXP; I think I got rid of the last of mine just a couple of years ago. (Most mice used a tiny little internal microcontroller quite a bit slower than an Arduino. Low end PICs were pretty common, bit-banging "software serial.")

I would really like to have a USB-Arduino with a dedicated Vendor-Id/Product-Id/SerialNumber

The FTDI USB/RS232 chip already has a dedicated serial number - one that you can even change. Mac OS X integrates this serial number into the device special file name, and linux can use udev rules to generate arbitrary custom names. I think the windows drivers are aware of the serial number and use it to give you a consistent com port number, but like everything windows it's less sophisticated than other operating systems.

-j

See for example the 6008 board, which has a 10Ks/s throughput: USB-6008

ATmega168s can do 15K 10-bit S/s, so 10K 8-bit S/s should be easy. On the output side a 115200 baud connection should be able to do 11520 bytes/s giving you some leeway. As you are doing two time critical things, you are going to need to put at least one of them in a interrupt service routine. You may need to replace the ceramic resonator with a crystal to get error free operation at 115200 baud.

.... or to create custom gaming input devices that need to be polled very fast, etc.

Ugh, don't have the computer poll the input device, have the input device tell the computer when some thing has changed. Much, much cleaner, with lower bandwidth and CPU needs.

-Aredhel

Ugh, don't have the computer poll the input device, have the input device tell the computer when some thing has changed. Much, much cleaner, with lower bandwidth and CPU needs.

Heh, don't tell the designers of USB that... :smiley:

--Phil.

Hi,

I would really like to have a USB-Arduino with a dedicated Vendor-Id/Product-Id/SerialNumber

The FTDI USB/RS232 chip already has a dedicated serial number - one that you can even change.

The problem on linux (and I think MAC OS too) is that you have to change it because udev can't cope with the non-printable chars FTDI puts into their serial-numbers.

I did this for one of my devices and used udev to create a device-link /dev/LedBoard. That works fine from python, c-applications etc.
But I failed to convince Java or better the RXTX-lib that /dev/LedBoard is a serial device, very annoying!
(But to be honest I did not try that hard...)

I think the windows drivers are aware of the serial number and use it to give you a consistent com port number, but like everything windows it's less sophisticated than other operating systems.

The problem with windows is : they do want to learn from others :wink: They don't have to, because they got the money
Eberhard