· 2 min read

Exploring USB Applications with AVR

This article was auto-translated from Chinese. Some nuances may be lost in translation.

When building USB applications with AVR, there is really only one key consideration: whether the chip itself features native USB support. Currently, the available chip options include1:

  • ATmega8U2
  • AT90USB82
  • ATmega16U2
  • AT90USB162
  • ATmega32U2
  • ATmega16U4
  • ATmega32U4
  • AT90USB646
  • AT90USB647
  • AT90USB1286
  • AT90USB1287

At this point, the ATmega32u4 is practically the only one still being sold. However, due to the global semiconductor shortage, it’s virtually impossible to get your hands on one unless you have special supply channels.

Shipping won’t start until November 23rd of next year—that is the harsh reality. The semiconductor shortage is steadily choking upstream supply, and one day it might quietly sweep across every aspect of our daily lives. On the flip side, it feels like a miracle that giants like Apple can still reliably churn out new phones and laptops.

Among Arduino boards, the Pro Micro is pretty much the only one that uses the ATmega32u4. However, the official original board doesn’t seem to be sold anymore; what’s left on the market are third-party clones of varying quality.

I’m currently using one from Aideepen (Amazon link without an affiliate tag, so I don’t earn any commission if you buy it). You have to solder the header pins yourself, you need to select “Old Bootloader” in the Arduino IDE to flash it properly, and there’s a slight chance it’ll throw an error. But considering how cheap it is, I can’t really complain.

Another alternative is to simply ditch AVR altogether and go straight to STM32, the piping-hot Raspberry Pi Pico, or the bare RP2040.

Footnotes

  1. https://www.avrfreaks.net/forum/atmega-devices-usb-capabilities ↩

Related Posts

Explore Other Topics