Arduino da Timer İnterrupt Durmuyor

Başlatan berkay_91, 30 Mayıs 2021, 22:35:18

mg1980

31 Mayıs 2021, 19:39:11 #15 Son düzenlenme: 31 Mayıs 2021, 19:40:57 mg1980
@berkay_91 ,
Biraz çalışma yaptım da sanırım Arduino'da Timer1 delay fonksiyonlarını çalıştırıyor.Kodunuzdaki delay fonksiyonları aslında çalışmıyor.Bunların yerine 1000'e kadar for döngüsü koyun.Ben biraz farklı kod ile tek butonla çalıştırdım. knt=0 olduğu halde sadece cli() fonksiyonu, knt=1 olduğu durumda da sei() fonksiyonu koydum.timer_on() fonksiyonu sadece setup içinde bir kez çalışıyor.Kodu isterseniz buraya koyarım.

berkay_91

Alıntı yapılan: mg1980 - 31 Mayıs 2021, 19:39:11@berkay_91 ,
Biraz çalışma yaptım da sanırım Arduino'da Timer1 delay fonksiyonlarını çalıştırıyor.Kodunuzdaki delay fonksiyonları aslında çalışmıyor.Bunların yerine 1000'e kadar for döngüsü koyun.Ben biraz farklı kod ile tek butonla çalıştırdım. knt=0 olduğu halde sadece cli() fonksiyonu, knt=1 olduğu durumda da sei() fonksiyonu koydum.timer_on() fonksiyonu sadece setup içinde bir kez çalışıyor.Kodu isterseniz buraya koyarım.
anladım, evet kodunuzu paylaşabilirsiniz

mg1980

//#include <avr/io.h>
//#include <avr/interrupt.h>

volatile int knt =0;

void setup()
{
  
pinMode(8INPUT_PULLUP); // Buton1
  
pinMode(9INPUT_PULLUP); // Buton2
  
pinMode(13OUTPUT); // LED
  
timer_on();
}

ISR(TIMER1_COMPA_vect)
{
  
digitalWrite(13, !digitalRead(13));
}



void timer_on() // Timer1 kesmesi saniyede bir çalışacak şekilde ayarlanacaktır (1 Hz)
{
  
cli();
  
TCCR1A 0;
  
TCCR1B 0;
  
TCNT1  0;
  
OCR1A 3000//15624(1 sn).....65536???

  
TCCR1B |= (<< WGM12);
  
TCCR1B |= (<< CS12) | (<< CS10); /* Adımlar arasında geçen süre kristal hızının 1024'e bölümü olarak ayarlandı */
  
TIMSK1 |= (<< OCIE1A);  /* Timer1 kesmesi aktif hale getirildi */
  
sei();
  
}



void loop()
{
  if(
digitalRead(8) == LOW && knt==)
  {
    
     
cli();   //timer_off();
     
digitalWrite(130);
     
knt=1;
                
//delay(1000);
     
for(int i=0i<1000i++){
      
     }
     
  }
  
  if(
digitalRead(8) == LOW && knt==)
  {
   
sei();
   
digitalWrite(130);
                   
//delay(1000);
   
knt=0;
   for(
int y=0y<1000y++){
      
     } 
  }
}

Yasal Uyarı: Picproje.org sitemizde 5651 sayılı kanunun 8. maddesine ve T.C.Knın 125. maddesine göre tüm üyelerimiz yaptıkları paylaşımlardan kendileri sorumludur. Picproje.org hakkında yapılacak tüm hukuksal şikayetleri İletişim sayfamızdan bize bildirdikten en geç 3 (üç) iş günü içerisinde ilgili kanunlar ve yönetmelikler çerçevesinde tarafımızca incelenerek gereken işlemler yapılacak ve site yöneticilerimiz tarafından bilgi verilecektir.