stoper na arduino


Witam. Chcę zrobić stoper z funkcją zapisu na SD. Jednak mam gdzieś błąd w kodzie, bo układ raz działa a raz nie. Pomoże ktoś ?

#include <TimerOne.h> /biblioteka obsługi timera
#include <SD.h> //biblioteka do obsługi kart SD
File plik; //tworzymy obiekt, który będzie przechowywać informacje konieczne do prowadzenia operacji na plikach
 
 
 
void setup(){
 
Timer1.initialize();//inicjalizujemy Timer1
Timer1.setPeriod(1000);//przerwanie co 1000 us = 1 ms
Timer1.attachInterrupt(ms_tick);
attachInterrupt(INT0,klik,FALLING);
//przycisk
pinMode(2,INPUT);
digitalWrite(2,HIGH);
pinMode(6,OUTPUT); //dioda sygnalizująca poprawność inicjalizacji karty
digitalWrite(6,LOW);
 
 
 
pinMode(10,OUTPUT);//ustawiam pin 10, podłączony do pinu CS karty jako wyjście 
 
if(SD.begin(10)){  //sprawdzam czy karta jest w slocie
 
    digitalWrite(6,HIGH);
 
  }else{
    digitalWrite(6,LOW);
 
    while(1); 
 
  }
 
 
 
 
}
volatile unsigned int ms=0;
volatile unsigned int s=0;
volatile boolean flaga=0;
volatile boolean koniec=0;
 
void loop(){
 
 
  if(flaga==1) {
 
  plik=SD.open("czasy.txt",FILE_WRITE); //otwieram plik do zapisu
 
   if(plik) { //sprawdzam czy poprawnie otwarty
 
  plik.print(s,DEC);
  plik.print(".");
 
 
 
if(ms<100)plik.print("0");
if(ms<10)plik.print("0");
 
plik.print(ms,DEC);
plik.println(" s");
plik.close(); //zamykam plik
flaga=0;
 
 
 
 
   }
 
  }
 
 
if(digitalRead(2)==1){
delay(10);
koniec=1;
}
 
}
 
void ms_tick(){
ms++;
if(ms==1000){
ms=0;
s++;
}
}
 
 
 
void klik() {
  detachInterrupt(INT0);
  flaga=1;
  delay(10);
  if(koniec==1)attachInterrupt(INT0,klik,FALLING);
 
 
  }