Altering Arduino projects to the ATTiny85

I just picked up some ATTiny85 bare IC chips (DIP) after realizing using a Digispark style board was more restrictive than helpful.

So I've got a bunch of projects I've done on Arduino Uno, Nano, Pro Mini, Pro Micro, where not much really had to change about the project code to work on any of those boards. Mostly same chips and pins.

I've been able to move some simple projects like LED strips, LED matrices & MAX7219s have been mostly what I've been playing with, also bluetooth/android control.

I've had some trouble with IR and RF projects, most likely with timer conflicts afaik. But what kind of things make an Arduino-working-code not work on the ATTiny85? Other than the obvious program size being too large, what things are not available in the ATTiny85 that an Arduino program might expect but won't find? Is the purpose of Tiny specific versions of libraries just created solely to shrink size or is there sometimes a really different method required to achieve some same end result due to the different chip?

One major difference is the lack of a hardware I2C bus. The tiny chips only have a "Universal Serial Bus", so all things I2C have to be done differently.

There's no 16-bit timer either, which probably stops some typical libraries from being used. There are only two timers on a tiny85, both 8-bit. The fact that there are only two would also make an impact on many things.

I'm sure there are other reasons, but they're the first that come to mind for me. (Especially the I2C thing, since "TinyWireS" is inferior to the original "Wire" library.)

IMO:

For commercial use, engineers always look to minimize pin count and engineers typically try not to over power the specs on a part when a less expensive part will perform the job ... therefore, very few product engineers will specify a Atmega328 when an Attiny85 will satisfy the requirements.

Now, in the hobby market, that same diligent engineering does not apply. The qty 1 price of the 328 or the t85 are both under a few buck$. Mouser qty 1 Atmeta328P-PU $3.70 and the ATtiny85P-PU $2.35

Around my lab, I generally reach for the 328 simply because I can afford a buck-n-a-half more not to have to struggle with code porting and far less I/O, memory, peripherals guts.

Although, sometimes just for fun, I will do something with the t85 ... they can be fun to play around with ...
Hot Yet?
IR ---> Serial detector (Sony)
Chachka (Trinket Clone)
1 PPS

Ray

The loss of the 16-bit timer is often significant, though the 85 is so popular this has often been worked around. There's an attiny84 with more pins, and a 16-bit timer and a similar pricepoint, and the 841 with two 16-bit timers plus the usual 8-bit one and epic peripherals - but only SMD packages (it's like an 84, but with two hardware serial ports, hardware SPI (but no USI and only slave I2C so you need SoftI2CMaster or similar to get I2C). I love the 841, and have used it in a bunch of projects (two hardware serial ports! The '328 only has one)

The loss of Serial, I2C, and the 16-bit timer are the big ones. Also the general shortage of pins on the tiny85 - the latter is often the reason I end up using the tiny84/841 instead of an 85. Be aware that digispark clones and other VUSB boards have some further considerations that must be accounted for.