Нет этого мало. Нужно также в самом конце обработчика снова заблокировать прерывания, т.к. если вы посмотрите на то, что делает компилятор при выходе из прерывания, вы сможете обнаружить раскрутку стека и присвоение 16-ти битному регистру SP некого значения, так вот, модификация этого регистра должна быть атомарной операцией...
В gcc есть специальные атрибуты у обработчиков прерывания, которые разрешают вложенность. Возможно, у ИАРа тоже есть нечто подобное.
Код
ISR(TIMER0_COMP_vect, ISR_NOBLOCK)
{
/* Code */
}
Что касается глубины стека - это вам виднее, мы не знаем сложность вашей программы и её требования к стеку.