Probleme de compteur avec FlexiTimer

Bonjour,
Pourrez vous m'aider en disant pourquoi ma fonction interruption n'est pas appelée par FlexiTimer2::set.
D'avance je vous remercie.

ci dessous mon code
.h

#ifndef Producteur_h
#define Producteur_h

#include "Arduino.h"
#include <FlexiTimer2.h> 

#define tailleTableauEntreeNumerique 19
#define tailleTableauEntreeCavalier 7
#define tailleTableauEntreeCommutateur 4
#define tailleTableauSortieNumerique 15
#define tailleTableauProducteur 2

class Producteur
{
  protected :
    byte entreeNumerique[tailleTableauEntreeNumerique];
    byte entreeCavalier[tailleTableauEntreeCavalier];
    byte entreeCommutateur[tailleTableauEntreeCommutateur];
    byte K[tailleTableauEntreeNumerique];
    byte CAV[tailleTableauEntreeCavalier];
    byte sortieNumerique[tailleTableauSortieNumerique];
    byte sortieNumerique44;
    byte sortieNumerique45;
    byte sortieNumerique46;
    byte sortieNumerique53;
    byte temporisationRelais ; 
    byte iterationProducteur;
    int compteurTemps[tailleTableauProducteur];
    byte etatProducteur[tailleTableauProducteur];
     
  public :
    Producteur();
    void configurationBroche();
    void lectureEntreeNumerique();
    void incrementeCompteurTemps();
    int declencherProducteur(byte i, byte sortieNumeriqueSiG, byte sortieNumeriqueDT );
};
#endif

.cpp

#include "Arduino.h"
#include "Producteur.h"
#include <FlexiTimer2.h> 

Producteur::Producteur()
{
  for( byte i=0;i<tailleTableauEntreeCavalier;i++)
         entreeCavalier[i] = i+15;
  for( byte i=0;i<tailleTableauEntreeCavalier;i++)
         CAV[i] = 0; 
  for( byte i=0;i<tailleTableauEntreeNumerique;i++)
         entreeNumerique[i] = i+22;
  for( byte i=0;i<tailleTableauEntreeNumerique;i++)
         K[i] = 0;   
  for( byte i=0;i<tailleTableauEntreeCommutateur;i++)
         entreeCommutateur[i] = i+49; 
  for( byte i=2;i<tailleTableauSortieNumerique;i++)
         sortieNumerique[i] = i;  
  
    sortieNumerique44 = 44;
    sortieNumerique45 = 45;
    sortieNumerique46 = 46;
    sortieNumerique53 = 53;
    temporisationRelais = 2000; 
    iterationProducteur = 1;
}

void Producteur::configurationBroche()
{
  for(byte i=0;i<tailleTableauEntreeNumerique;i++)
  {
    pinMode(  entreeNumerique[i],INPUT);
    pinMode(  entreeCavalier[i],INPUT);
    pinMode(  entreeCommutateur[i],INPUT);
  }
  for(byte i=2;i<tailleTableauSortieNumerique;i++)
      pinMode(  sortieNumerique[i],OUTPUT);
  
   pinMode(  sortieNumerique44,OUTPUT);
   pinMode(  sortieNumerique45,OUTPUT);
   pinMode(  sortieNumerique46,OUTPUT);
   pinMode(  sortieNumerique53,OUTPUT);
}

void Producteur::lectureEntreeNumerique()
{  
  for(byte i=0; i <tailleTableauEntreeCavalier; i++)
          CAV[i]= !digitalRead(  entreeCavalier[i]);
  
  for(byte i=0; i <tailleTableauEntreeNumerique; i++)
          K[i]= !digitalRead(  entreeNumerique[i]);  
  
  for(byte i=11; i<tailleTableauEntreeNumerique; i++)
  {
    if(K[i]==0)
    {  
      for(byte j=0; j <tailleTableauProducteur; j++) 
          etatProducteur[j]=1; 
    }
    else
    {
      for(byte j=0; j <tailleTableauProducteur; j++) 
          etatProducteur[j]=3; 
    }
  }
} 

int Producteur::declencherProducteur(byte i, byte sortieNumeriqueSiG, byte sortieNumeriqueDT ) 
{
    if(iterationProducteur==1)
    {
      switch(etatProducteur[i])
      {
        case(1):
          analogWrite(sortieNumeriqueSiG,255); // instatané
          analogWrite(sortieNumeriqueDT,255); // temporisée
          if(compteurTemps[i]>=10)
          {
            etatProducteur[i]=2;
            compteurTemps[i]=0;        
          }
          break;
        
        case(2):
          analogWrite(sortieNumeriqueSiG,127); // instatané
          analogWrite(sortieNumeriqueDT,127); // temporisée
          if(compteurTemps[i]>200)
          {
            etatProducteur[i]=0;
            compteurTemps[i]=0;        
          }
          break;
          
       case(3):
         compteurTemps[i] = 0;
         analogWrite(sortieNumeriqueSiG,0); // instatané
         analogWrite(sortieNumeriqueDT,0); // temporisée
         break;
         
      default:
         analogWrite(14,255);
       }
      iterationProducteur=0;
    }
}

void Producteur::incrementeCompteurTemps()
{
  for(byte i; i<tailleTableauProducteur; i++)
     compteurTemps[i]++;
}

.ino

#include "Producteur.h"  
#include <FlexiTimer2.h> 

Producteur producteur[tailleTableauProducteur]; 

void setup() 
{
  Serial.begin(9600);
  FlexiTimer2::set(5,interruption);
  FlexiTimer2::start();
  for(byte i=0; i<tailleTableauProducteur; i++)
  {
  producteur[i].configurationBroche();
  }
}

void interruption()
{
  
  for(byte i=0; i<tailleTableauProducteur; i++)
     producteur[i].incrementeCompteurTemps();
}
 
void loop()
{
  for(byte i=0; i<tailleTableauProducteur; i++)
  {
    producteur[i].lectureEntreeNumerique();
    producteur[i].declencherProducteur(i, 2+2*i, 3+2*i); // schedule the two protothreads
  }

}