Solved - thanks guys - getting the wheel to move in the first place is the hardest.
Yes the OCR0A can control the frequency while the OCR0B controls the PWM duty but comes out of PINB1-MISO/AIN1/OC0B/INTO/PCINT1 and I can still define PINB0-MOSI/AIN0/OC0A/PCINT0 as an input pin.
Some code snippets here if anyone is interested...
#define F_CPU 9600000 // 9.6MHz is the default - needed by compiler to make <avr/delay.h> work - but I'm not using this
#define OCR0B_value1 18 // OCR0B TOP value for PWM lock rotation 2ms
#define OCR0B_value2 9 // OCR0B TOP value for PWM unlock rotation 1ms
#define OCR0A_value 190 // in fast PWM mode 7, the counter counts to this as TOP in place of &FF (Max is 255)
.
.
.
DDRB |= (1<<PINB0)|(1<<PINB1)|(1<<PINB3); // set output pins in Port B Data Direction Register
PORTB |= (1<<PINB2)|(1<<PINB4)|(1<<PINB5); // set internal pull up on input pins in Port B Data Register
PORTB |= (1<<PINB1); // set servo pin initially HIGH as we are going for inverted
TCCR0A |= ((1<<WGM01)|(1<<WGM00)); // set fast PWM mode 7 - page 79 - uses OCR0A for TOP, PWM signal comes out on OCR0B
TCCR0B |= (1<<WGM02); // to use TOP as OCR0A rather than 0xFF
TCCR0A |= (1<<COM0B1)|(1<<COM0B0); // define inverted
OCR0A = OCR0A_value; // set TOP for PWM frequency
OCR0B = OCR0B_value1; // controls the PWM
TCCR0B = (TCCR0B & ~((1<<CS02)|(1<<CS01)|(1<<CS00))) | 5; // mask out the bits and then OR in the required values from table below
// CS02 CS01 CS00 Value Effect
// 0 0 0 0 Time stopped (no PWM output)
// 0 0 1 1 No prescaling
// 0 1 0 2 divide by 8
// 0 1 1 3 divide by 16
// 1 0 0 4 divide by 64 << 150Hz - too fast
// 1 0 1 5 divide by 128 << 37Hz - 27ms period - but I can use OCR0A to cut this short