That's right Ugi, tone() doesn't utilise hardware PWM so it can be used on your other pins.

The version in Tiny Core sort of does. If the tone pin is an output pin for the tone timer, direct hardware output is used. Otherwise, an interrupt service routine is used. You get the best of both worlds.

That's right Ugi, tone() doesn't utilise hardware PWM so it can be used on your other pins.

The version in Tiny Core sort of does. If the tone pin is an output pin for the tone timer, direct hardware output is used. Otherwise, an interrupt service routine is used. You get the best of both worlds.

The version in Tiny Core sort of does. If the tone pin is an output pin for the tone timer, direct hardware output is used. Otherwise, an interrupt service routine is used. You get the best of both worlds.

Come to think of it, which pins are the hardware outputs for for the tone timer? While I'm switching pins around, I may as well use hardware PWM for this if I can, 'cos there's plenty to do under SW already & I don't really want to go up to 8MHz if I can avoid it.

The problem with PB1 (OC0B) is that it overlaps with an output from the other timer (OC1A). Which output is used is determined by another compile-time switch. By default, "phase correct PWM" is favored so OC0B is used.

Can you just clear up for me the role of PB3 with PWM? It's marked as OC1B with a line over it, in the same way that PB0 is OC1A with a line above it. Is it that the hardware is capable but we can't drive it with hardware PWM using the Arduino core resulting in what we saw in earlier tests when we tried to analogWrite to it?

Thanks, Geoff

"There is no problem so bad you can't make it worse" - retired astronaut Chris Hadfield