no funciona noInterrupts()

Saludos comunidad…
Estoy con un contratiempo hace dos dias, y no encuentro la falla…
La idea es dispara un evento, en ese instante la interrupcion de Timer1, despues de ciertas cuentas del timer y de algunas acciones en el medio, el sistema DEBERIA interrumpir el disparo de la interrupcion del timer. Pero no sucede. En el loop, funciona. Pero en la rutina de accion de disparo (tabla()) de la interrupcion no.
Me esta volviendo loco… Habra alguna sugerencia ?? desde ya, agradecido por el aporte.
Les dejo el codigo…

#include <TimerOne.h>
#define btn1 53
#define btn2 51
#define btn3 49
#define LED 13

int a = 0, i = 0,  pushButton = 0, tic = 0, n = 0, mov = 0;
byte pos = 0;
int subT[100];

volatile unsigned int tics = 0, ctatics = 0;
unsigned long disparo = 0;
 
void setup() 
{  
 Serial.begin(115200);
 Serial.println("Listo...");
 pinMode(btn1, INPUT_PULLUP);  pinMode(btn2, INPUT_PULLUP); 
 pinMode(btn3, INPUT_PULLUP);  pinMode(2, INPUT_PULLUP);
 Timer1.initialize(500000);            // Dispara cada 1000 uS
 Timer1.attachInterrupt(Blink);     // Activa la interrupcion y la asocia a ISR_Blink  
 noInterrupts();     
}

void loop() 
{
 if (digitalRead(2))
 {

   pressedButton(btn1);    pressedButton(btn2);    pressedButton(btn3);
   if (a != 0)
   {
     Serial1.print(a); // a = 2 Play, a = 3  Pausa, a = 4 Resume, a = 5 Stop
     if (a == 2)       
     {                 
       i++;            
       delay(400);
       Serial1.print(3); 
     }
     a = 0;
   }

   if (Serial1.available() > 0)
   {
     while(Serial1.available()>0)
     {
       delay(20);
       pos++;
     }
     pos = 0;
   }
 }
}
//*********************************
void pressedButton(int button)
{

 if (!digitalRead(button))  // pomgamos boton 1
 {
   if (pushButton != button)  // boton 1
   {
     pushButton = button;
     switch (button)
     {
       case btn1: 
       {
         if (i == 0)
         { 
           if(digitalRead(2)) 
           {
             disparo = millis();
             Serial.println("Start Play");
           }
           delay(100);
           a = 2; // Hace Play
           interrupts();                 // Autoriza las interrupciones
           i++;
         }
         else if (i == 1)
         {
           Serial.println("Resume");
           delay(100);
           interrupts();               // Autorizalas interrupciones
           i++;
         }
         else if (i == 2)
         {
           Serial.println("Pause");
           delay(100);
           noInterrupts();                 //  Suspende las interrupciones
         }
         break;
       }

       case btn2: // Stop
       {
         noInterrupts();               // Suspende las interrupciones
         break;
       }
     }
   }
 }
   else if (pushButton == button) 
   {
     delay(100);
     pushButton = 0; 
   }
}
//*****************************************************************************************************
void Blink()
{
 tics++;
 tabla();
}
//*****************************************************************************************************
void tabla()
{ 
   n = 10;
   tics = 0;
   Serial.print(mov); Serial.print(", t: ");Serial.println(subT[mov]);
   mov++;
   if (mov == n) 
   {
     noInterrupts(); <------------Esta no funciona... Sigue como si no estuviera              
     Serial.println("fin del ciclo");
     delay(1000);
     mov = 0;
   }
}

Y que tal haciendo:

Timer1.detachInterrupt();

Llamar a noInterrupts() es redundante en una ISR; la definición de una interrupción, según las librerías de AVR, hace justamente eso antes de ejecutarla; y después, las vuelve a habilitar de cualquier modo.

Lo que necesitas es deshabilitar una interrupción específica, no todas globalmente.