Attiny85 servo problem

Hello and sorry if my question is stupid.

I tried to connect bluetooth + a servo to my new attiny85. Had a lot of problems with the servo library, and finally managed to make SoftwareServo.h library work, but the servo won't move.

What I've done:
*working code (tested on Arduino UNO with different pins, but Servo.h);
*connected the servo right;
*connected the signal pin to a PWM attiny pin;
*chose the 1MHz internal processor (the others seemed to mess up my timer);

I also read this problem on an old italian topic, but they didn't find an answer from what I've understood.

Two more things: I know the attiny works because I connected an LED to an analogPin and lit it up from bluetooth. Though, it randomly doesn't work (may be because of the analogPin, which is not meant to be used this way).

You might not be able to make the servos work at 1mhz like that, most people don't test libraries on chips clocked below 8mhz; it may be trying to do something that just takes too long. I suggest you use 8mhz (internal) or 16mhz (pll / internal - a special feature of the tiny85 and tiny861).

The reason the timer is "messed up" is that when you've built sketches for 8mhz, the chip was still running at 1mhz, because you didn't do 'burn bootloader' with 8mhz selected (yes, even though there's no bootloader - 'burn bootloader' is also how you set the fuses). Doing that will set the fuses correctly so that the chip is actually running at 8mhz, and then you can upload sketches with 8mhz selected and they'll work correctly.

The fact that it worked with Servo.h on the Arduino Uno doesn't mean a thing. It's a different library that implements servo control completely differently. All you've verified is that the servo works.

Looking at the library, comments state clearly that it will not work on any board that doesn't use a prescaler of 64 on timer0 (the millis timer) without modifications to the library. Typically for low clock speeds like 1mhz, though, a prescaler of 8 is used.

At 1mhz, this might work, if you changed line 51 from:

pulse0 = (min1616LclockCyclesPerMicrosecond() + (max16-min16)(16LclockCyclesPerMicrosecond())*angle/180L)/64L;

to

pulse0 = (min1616LclockCyclesPerMicrosecond() + (max16-min16)(16LclockCyclesPerMicrosecond())*angle/180L)/8L;

Edit: I misread how this was being set in my core (missed an #ifdef that set it correctly) - oops. But, it still applies in his case, because if he's compiling at 1mhz, the prescaler is almost certainly 8.