Transistor types

Well, I just tried this with one of my ATmega328's on pin 8.

I modified blink to turn pin 8 on for 3 seconds then off for 3 seconds, then I used a mA meter with an internal input resistance of 6.1 ohms and placed it directly across pin 8 and ground. I measured a peak of 82.1 mA while pin 8 was high.

So we have:

Io = Vcc / (Ro + Rm), where Rm is the resistance of the meter and Ro is the output resistance of the AVR.

We can rearrange that to get:

Ro = (Vcc / Io) - Rm = (5 / 0.0821) - 6.1 = 54.8 ohms

Which agrees well with what is predicted by the curve in the specsheet. I have a lower resistance ammeter (0.3 ohms with test leads), but it has less resolution. I'll give that a check and update this post, but I suspect the AVR will not pass much more than 100mA.

Update: The verdict is 88mA max into a short (well, .3 ohms). Which means the AVR's internal resistance tops out at

Ro = (5 / 0.088) - 0.3 = 56.5 ohms