Дело было вечером, делать было нечего. А асик в ванну надо было погружать. 555 таймеров под рукой не было, а тинька была. Далее скрины и прошивка. Там все понятно.        //#define F_CPU 9600000UL
#define BIGSUMM 1875000000 
#define PREDDEL 18750000 
#define PINF PB0 // пин частоты
volatile uint32_t ADDCOUNTER; // число + к счетчику
volatile uint32_t counter=0; // счетчик
uint16_t f=1510; // настраиваемая частота в попугаях. хотя по идее должно быть в Гц, 
//но лень разбираться. в данном случае стоит 180гц, что соответствует примерно 5500 оборотов. 
void f_change(uint16_t f) {  ADDCOUNTER=(BIGSUMM/(PREDDEL/f))*1000; } 
ISR(TIM0_OVF_vect) {  
 counter=counter+ADDCOUNTER; 
 if (counter >= BIGSUMM)
 { 
   counter=counter-BIGSUMM; 
   PORTB^=(1<<PB0); 
 }
}
void setup() {
 // настройка пинов
 DDRB=1;
 PORTB=6;
 // настроим таймер
 TCCR0B=1;// предделитель 1
 TIMSK0=2;// прерывание по переполнению.
 ADDCOUNTER=(BIGSUMM/(PREDDEL/f))*1000;
}
void loop() {
     f_change(f);
}