Arduinos and Patches

I’m a little late to the party here as usual, despite having a several month heads-up on it, but the new Arduino boards are here!

Many of you will remember that I wasn’t the biggest fan of them in the first place. Actually, nothing’s changed in that respect; I fully intend to keep on using raw AVRs the way god intended, but some recent discussions with a University professor has made me realize that for what they are designed for – a teaching tool and a quick way in to the world of microcontrollers – they’re actually quite good. They’re like the new age “Basic Stamp”, except useful and cheap, and I’m hatching plans with said professor to get them integrated into first year electronics at my University.

Now, there’s a special reason why I’m interested in this new board – it uses LUFA! I’ve worked with one of the awesome Arduino engineers, David Mellis, over the last few months to fix a few minor niggles, and finally the boards have been revealed. Keeping something like this a secret (especially in the wake of the recent PSGroove stuff) for nearly six months has been nothing short of torture, but with the board and software announcements over at the official Arduino blog I’m now allowed to waffle on about it as much as I like.

What’s made this interesting for me is that using the AT90USB82 has actually ended up *cheaper* than the FTDI it replaces, and it’s more flexible to boot. This serves as a kind of proof-of-concept to other manufacturers – you can use LUFA in your design in a separate chip “black box” style, and actually end up cheaper than the FTDI ASIC. What should be interesting to everyone else is that this opens up the door for totally new Arduino projects, using native USB-MIDI, USB-HID and all the other classes other than just acting as a dumb serial port. I hope to have some ready-to-load examples of this done soon, but for now modifying the existing LUFA demos should do the trick for those not adverse to a little learning.

Actually, the Arduino folks really dodged a bullet there by their choice of chip – the PSGroove stuff took just about everyone by surprise, and so the AT90USB82 is practically the only chip available in any quantity at all at the moment. True, it’s also the most limited of the bunch, but with 4KB to spare (there’s a USB bootloader shoved into the other half of the chip) there’s just enough room for the required USB class to USART code needed to tunnel the data to the main Arduino processor.

Now, as usual, it’s time for a LUFA development update. This last week I’ve been struggling with fixing the occasional device mode enumeration bug (that no one told me about, and I never managed to experience before now , but now experience a lot, coincidentally) with the help of a USB analyzer on loan from a local business. So far I’m not really much more illuminated on that issue, but I’m targeting its resolution for the next release – when it’s fixed, I’ll start the next beta.

Speaking of the beta, I’ll be moving towards a full one month beta cycle for each release from now on. With increased exposure of the project comes more responsibility on my shoulders to ensure that it is as functional as possible, meaning more testing is required before release. This release will require this doubly so, given the large number of internal changes I’ve made since the last package was thrown into general distribution.

I really enjoyed the competition I ran during the last beta, and I’m thinking of doing so again. I’m now accepting ideas for prizes. Actually, since I like to give back, I was thinking of switching over to a permanent system of every bug reporter gets a small reward of some sort, so that everyone gets a share. Assuming I don’t code in too many bugs, that shouldn’t cause me to go bankrupt, and I’m sure I can find something of US$20-$30 value that people would like to have. Of course, I could always be stingy and switch to the Knuth Reward Check system, but somehow I don’t think I’m quite famous enough to pull that one off yet :).

I’ve plenty more to write about, but that’s enough for now. Stay tuned.


Comments: 4

Leave a reply »


[…] This post was mentioned on Twitter by Robin Debreuil, Dean Camera. Dean Camera said: New post: Arduinos and Patches […]


Do you think it would be possible to fit the LUFA RNDIS Device code into the ATmega8U? It would be nice to have a network connection to the Arduino via USB. If there’s no space for the whole thing in the 8U, maybe it would be possible to split the code somewhere and put some of it on the other AVR of the Arduino Uno?


You could possibly split it so that the USB AVR exposes the USB RNDIS interface, and have the Arduino process all RNDIS packets and Ethernet packets, but there’s no chance of getting even the RNDIS command processing on the USB AVR – it’s simply too large to fit into the 4KB available.

– Dean


“…the AT90USB82 has actually ended up *cheaper* than the FTDI it replaces…”

While being CDC and requiring no drivers loaded for the typical serial case (even if most OS come with FTDI drivers now).

Think “USB interface chip kit”. Make a little language in lex and yacc that parses a mini protocol description and pin list and writes a firmware source and hooks for libusb.

Language would have builtins for common standards like i2c, UART, SPI, etc and GPIO with little bits of C code.

Useful. Even if it feels a little too Aduino like.


Leave a Reply

(will not be published)


Vital Stats

  • 29 Years Old
  • Australian
  • Lover of embedded systems
  • Firmware engineer
  • Self-Proclaimed Geek

Latest Blog Posts