Timer 1 doesn't work always with the same interval!

Hello everyone,

I am currently working with Arduino UNO and the purpose of my project is to acquire signals with sampling Rate of 1000Hz.
To do this i am using timer 1 that at every 1 ms reads 6 analogic inputs (i had increased the analog reading time prescaling ADC - http://www.arduino.cc/cgi-bin/yabb2/YaBB.pl?num=1208715493/11) and 4 digital inputs and send the values to another program using bluetooth connection.
The problem is that when i checked the sampling rate, i noticed that sometimes arduino sends 999 samples/second instead of 1000 samples/second. This occurs periodically…
Does anyone have any idea about why this happens?
I have tried using some low level programming, according to this site http://letsmakerobots.com/node/28278, but it didn’t work either.

Here is my code :

#define FASTADC 1

// defines for setting and clearing register bits
#ifndef cbi
#define cbi(sfr, bit) (_SFR_BYTE(sfr) &= ~_BV(bit))
#endif
#ifndef sbi
#define sbi(sfr, bit) (_SFR_BYTE(sfr) |= _BV(bit))
#endif

void SendMeasuredValues() {
static int brightness = 0;

// Sequence Number
v[0]=i;
// Analogic Input Reading
v[1]=analogRead(A0);
v[2]=analogRead(A1);
v[3]=analogRead(A2);
v[4]=analogRead(A3);
v[5]=analogRead(A4);
v[6]=analogRead(A5);
// Digital Input Reading
D[0]=digitalRead(2);
D[1]=digitalRead(4);
D[2]=digitalRead(5);
D[3]=digitalRead(6);

// Packing
B[0] = (v[1]>>2);
B[1] = ((v[1]&0x03)<<6) | ((v[2]>>4)&0x03F);
B[2] = ((v[2]& 0x0F)<<4) | ((v[3]>>6)&0x00F);
B[3] = ((v[3]&0x3F)<<2) | ((v[4]>>8)&0x003);
B[4] = (v[4]&0xFF);
B[5] = ((v[5]&0x01F)<<3) | ((v[6]&0x01F)>>2);
B[6] = (v[6]&0x003)<<6 | (v[0]&0x03F);
B[7] = (D[0]<<7) | (D[1]<<6) | (D[2]<<5) | (D[3]<<4) | (CRC&0x00F);

// Sending
Serial.write(B,8);
// Increment Sequence Number
i++;
// State LED
analogWrite(TestPin,brightness);
brightness = brightness + fadeAmount1;
if (brightness <= 0 || brightness >= 255) {
fadeAmount1=-fadeAmount1;
}

}
// ---------------------------SETUP ------------------------------
void setup()
{
Serial.begin(115200); // Initialize with Baud Rate of 115200 bits/sec
pinMode(TestPin,OUTPUT);
pinMode(2,INPUT);
pinMode(4,INPUT);
pinMode(5,INPUT);
pinMode(6,INPUT);

#if FASTADC
// set prescale to 16
sbi(ADCSRA,ADPS2) ;
cbi(ADCSRA,ADPS1) ;
cbi(ADCSRA,ADPS0) ;
#endif

// Timers setup
Timer1.initialize(1000);
Timer1.attachInterrupt(SendMeasuredValues);
}

void loop() {}

I would really apreciate some help.
Thanks in advance.