Start e stop timer1 dentro ISR

Ciao a tutti, non ho il codice sotto mano ma volevo sapere come se è possibile far partire il timer1 a contare (modo CTC) ricorsivamente.

Ad esempio, il mio codice è circa così:

isr(timer1_compa_vect)
{
quando entrao qua vuol dire che il timer ha contato fino a OCR1A e quindi lo voglio fermare per evitare che riparta e quindi metto TCCR1B=0.
Però qui dentro verifico altre condizioni che potrebbero far ripartire il contatore con un valore di OCR1A diverso da quello precedente:
in queste condizioni carico in OCR1A il nuovo valore e poi faccio partire il conteggio mettendo in TCCR1B il CS11 a 1 (tick da 0.5us).
}

noto però che non funziona come vorrei. Prima di tale modifica, tramite una routine di interrput fatta partire su il fronte del pin 2 (ard UNO), facevo partire il timer settando CS11: lui conta e quando arriva al TOP del registro entra nella sua routine e lo fermo (TCCR1B=0), poi lo facevo ripartire sempre da quella routine del pin 2. Cosi funzionava.

Però per altre esigenze vorrei poterlo far ripartire anche quando entra nella routine compa_vect, inibendo in questo caso il fatto di farlo partire dentro l'altra routine.

Non so se è chiaro, spero potrete aiutarmi. Grazie

L'esperto di Timer e Interrupt è Leo72. Speriamo passi di qui. ;)