Skip to main content

USBmicroISP Part 2

Intro

Continuing to document my USBmicroISP, based off the USBtinyISP from Adafruit, here is my the assembly process. My first post detailed the why I'm building this version, and its features.  Essentially I wanted to make it with a smaller, nicer looking enclosure and have it use a micro USB cable, not a printer USB cable.  I used much the same schematic.

Assembled USBmicroISP; green means ready for programming!

Parts Received

I often buy the parts FIRST, then check that I designed the board correctly by printing it out 1:1. Lining up the new, often-weird parts (the ATTiny, the XTAL, the MicroMatch connectors) made me realize I needed to rearrange the way the connectors go out of the case:

Finished product.  Tight quarters in this case!
Having finally received the PCBs reminds me again how amazing OSHPark is:

Nicely fabricated OSHPark boards.  Notice the ATTiny IC1 is on the top layer, and the buffer IC2 is on the bottom layer.

Build Process

Having received the 3 boards from OSHPark, now I can cut out the required slots in the blue case, and populate the board.

Need one slot for the micro USB connector.
Micro USB is about 0.1" in height.  Using this, I could cut the slot.
Slot cut into plastic for the USB connector.
Lines up with pads, and centered with enclosure.
The dimensions for the USB slot are on this file, as I calculated it.  It was pretty easy; just take into account the height of the built-in standoffs of the enclosure, then the thickness of the board.  Having extra boards for this part was a great help, as the populated one doesn't fit until you cut out the USB slot.

I didn't have the required #2 x 3/16" board screws, so I cheated and used some longer ones with cut tubing to bump them out a bit:

Board screws too long?  Not to fear.
Then I needed to cut/file out the slot for the 2 cables, the 6-pin and the 10-pin.  I didn't make this a slot, but a notch in the base and in the lid.

Notches in the base and lid for the programming cables.
I thought about cutting holes in the lid for the 2 LEDs, but thought if I didn't it would keep the dirt and dust out.  Plus, the translucent case lets the red and green lights through just fine. :)

Could have raised the LEDs up through the lid, but thought better of it.

Programming Firmware

Programming the ATTiny with firmware needs to be done before it will work.  As I mentioned in the 1st post, this can be done by carefully soldering a couple wires to the pads of the ATTiny and using another ISP, Arduino Uno or Mega. There's a couple guides out there, like this one. You need to burn the firmware gotten from here.

Plugging in the micro USB from a computer after a successful burn will yield a green LED:

Ready to program any and everything!
If you have trouble, try re-burning the firmware, make sure you have the correct USB drivers for the ISP installed, and the latest Arduino software installed.

Usage

Usage isn't any different than the other ISPs.  JP3, when installed, uses the 5V USB to power the target.  Make sure to REMOVE JP3 when you're programming a 3.3V Atmel!  (has to be self-powered, of course)

GREEN is to indicate power.  RED is to indicate data transmission, the device is busy.

Credits

Credits to Adafruit for the original design, and anything they based their design on.  I have recently found a few other ISPs out there:

https://www.tindie.com/products/nsayer/micro-avr-isp/

~JWilly

Comments

Popular posts from this blog

Atmega328PB Dev on Linux x64

The Atmega328PB is the greatest thing to come to the Arduino platform since the UNO.  Who wouldn't want more 16-bit PWMs and double all 3 serial protocols? The new unofficial Arduino Mini PB Pro! To get the IDE to support it, follow this guide: https://github.com/watterott/ATmega328PB-Testing Since the JSON file is incomplete for Linux, do the manual toolchain replacement.  This was a little tricky, and there isn't much on the internet on where the toolchain resides inside the Arduino base folder.  Here's what I did to make it work. I downloaded the latest Arduino build, and I will refer to the extracted base directory as "arduino-1.6.9".  Also download the "hardware.zip" and the "Arduino Toolchain (4.9.2)" Linux x64 version from the github links. 1. Replace the toolchain The builtin toolchain resides in "arduino-1.6.9/hardware/tools/avr/".  Rename the avr folder to "avr.old".  Extract the "Arduino Toolc

PB Pro Mini

No, it isn't Lead, nor is it Peanut Butter.  It is the 'B' version of the prolific ATmega328P microcontroller which started all this maker craziness off! Top view of PB Pro Mini Description This is a minimal microcontroller board with only a voltage reg, crystal, I2C pull-ups, LEDs and the chip itself.  The goal here is to reduce costs while hosting the beefy 328PB! This is based on, and pin compatible with, the Arduino Pro Mini 5v/16MHz from  Sparkfun . Notable, not-so-minor improvements for the 'B' version: 2 UARTs 2 I2Cs (TWI) 2 SPI Qtouch 5 Timers (with OC, IC, and PWM) Everything else is about the same.  You should be aware the clock driver on the chip is a low-power version, but this board and crystal operate at 16MHz just fine at 5V.  The Arduino library I've been using for the PB has been working without a problem! Getting Started You'll need a FTDI Friend  or FTDI Cable  to program this as there is no secondary USB

Update to USBmicroISP: 6pin and 10pin headers

Actually using my USBmicroISP with microcontrollers other than Arduino Uno's led me to fix a udev rule issue with my Gentoo Linux laptop.  I was getting Permission Denied when I was trying to use avrdude as a normal user.  Yes, my user is part of the 'uucp' group... Background Some background on the Arduino ISP connector.  It is much different than the 10-pin AVR connector... 6-pin ICSP cable pinout.  NOTE: Numbers refer to ATtiny45/85 pins, not ICSP! Arduino ISP pinout. Notice the vertical line next to pin 1, which appears in silkscreen on the PCBs. Redboard ISP pinout.  Obviously the same as UNO.  Notice pin 1 location on upper-left, with horizontal white silk. My USBmicroISP has the cables coming off the IDC differently, but the key is in the correct orientation to the pinout in the top picture! (Please disregard numbering on first picture for ICSP purposes)  Usually the key and wires are facing inward (left side on 2nd and 3rd picture) on an Arduino