MSP430F2272: Timer B Capture giving shorter measures than the real ones
Just found a workaround!!

Inside my ISR, I just disable the interrupt request, instead of disabling the entire timer.

So the code became:

__interrupt void Timer_B1(void)
{    
    switch( __even_in_range(TBIV,14) )
    {
      case  0: break;                          // No interrupt
      case  2: break;                          // CCR1 not used
      case  4:
          TB_Pulse0 = TB_Pulse1;
          TB_Pulse1 = TBCCR2;
          TBCCTL2 &amp;= ~CCIFG;
          if(TB_Pulse0){
              TBCCTL2 &amp;= ~CCIE;           //Not TBCTL = 0;
              SendXBee |= TRUE;
          }
          break;
      case  6: break;                          // CCR3 not used
      case  8: break;                          // CCR4 not used
      case 10: break;                          // CCR5 not used
      case 12: break;                          // CCR6 not used
      case 14:
          TBCCTL0 &amp;= ~COV;
          if(TB_Pulse1)
              OverFlo++;                  // overflow
          break;
      default: break;
    }
}


Thank you for your comments.

Ps.: I wrote 'workaround' because I don't know why it didn't work when I disable/ reenable the entire timer. If someone can give me a hint I'd appreciate.