I've been developing a project on a Leonardo-clone. The project is a complicated thing with software in the PC, on a web site and in the Arduino - so using the IDE is inconvenient...hence I'm using Makefiles under Linux so I can type "make" and have all the parts of the project update/upload/etc together.
Anyway - all is well with the Leonardo prototype - it works perfectly. But for the production system, I plan to use a Pro-Micro. Hence I ordered two Pro-Micro's (from different sources) to play with. So now I have:
A Leonardo-clone (from the Borderless Electronics $9 Arduino Kickstarter).
A Pro-micro (from Karlsson Robotics - a Sparkfun board - with the 3.3v box checked on the silk-screening).
A Pro-micro-clone (from some place in China labelled "Deek-Robot" - with both the 3.3v and 5.0v checked?!?).
The two pro-micro boards look absolutely identical except that the Deek-Robot is blue and the Sparkfun is red.
The Deek-Robot Pro-micro clone works great - it seems to be 100% compatible with the Leonardo-clone. My build scripts, uploader and all of my code run perfectly...absolutely identical to the Leonardo. I use this to upload to the machine:
But the same avrdude command doesn't work with the Sparkfun Pro-micro board. It says:
avrdude: ser_open(): can't open device "/dev/ttyACM0": Device or resource busy
The stock arduino IDE has similar problems. When I look in /dev, the ttyACM0 device exists and has a timestamp that corresponds to the time I plugged the board in. There isn't anything else on my machine that could be accessing the port.
Avrdude says that both the Deek-Robot pro-micro clone and the Borderless Electronics Leonardo-clone are:
Found programmer: Id = "CATERIN"; type = S
Software Version = 1.0; No Hardware Version given.
Since neither of those boards need the double-reset to get them into download mode - I imagine that perhaps the Sparkfun board has a newer bootloader or something? I've tried doing a double-press on the reset button - but that doesn't seem to make a difference.
Sorry - I don't understand the significance of that comment. I'm not using an "Arduino micro" - the three boards I have are: an Arduino Leonardo (clone) and two Pro-micro's from different vendors...which appear to be identical - but for some reason, only one of them is recognised by avrdude.
SteveBaker:
Sorry - I don't understand the significance of that comment.
Okay, I'll repeat: The Sparkfun designed "Pro Micro" has a different board layout, pinout, and possibly bootloader than the Arduino boards: Leonardo and Micro.
Different bootloaders could cause avrdude to not recognize the board.
If you're having a problem with a "Pro Micro" clone, you should probably go to Sparkfun for help. It isn't an Arduino board.
OK. So, yeah - the Pro-micro is a tenth the size of the Leonardo and is clearly a different board layout - however the Deek-Robot Pro-micro clone works great with the exact same ".hex" file and avrdude parameters, and plugged into the exact same USB port as the Leonardo. It also runs my software perfectly and interfaces to my project hardware through A0..A3 and D10...D13 just like the Leonardo.
The problem is that the Sparkfun Pro-micro doesn't work with that setup. That would certainly lead me to believe that the Sparkfun Pro-micro and the Leonardo are incompatible with each other for some reason. However, the Deek-Robot "Pro-micro" and the Sparkfun Pro-micro appear to be using identical hardware and board layout - the pinout, component placement and silk-screening are 100% identical apart from the logo on the back and the color of the board itself.
So whatever is stopping the Sparkfun board from working has to be to do with the bootloader...and that's what I'm trying to figure out.