Uzun zaman bekletme Hakkında

Başlatan ByTEK, 03 Ocak 2018, 12:15:45

Jamesbond79

millis kullanabilirsiniz. Hem bu sırada işlemci başka işlerle ugrasabilir.  40 gün sonra basa donme durumu oluyor ama çok sorun teşkil edeceğini düşünmüyorum.

crazy

#16
Delay kullanırsak 3 saniye boyunca işlemci hiçbir iş yapmadan bekleyecek,bu şekilde yada farklı bir yöntem ile denemek daha doğru
volatile unsigned int count = 0;
volatile uint8_t  flag = 0;
#define ledPin 8



ISR(TIMER1_COMPA_vect) {
  digitalWrite(ledPin, digitalRead(ledPin) ^ 1); // toggle LED pin
  count++;  //saniye de bir artır


}

void setup(void) {
  Serial.begin(9600);
  pinMode(13, OUTPUT);
  pinMode(ledPin, OUTPUT);

  cli();
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1  = 0;
  OCR1A = 15624; // 1 saniye
  TCCR1B |= (1 << WGM12);
  TCCR1B |= (1 << CS12)  | (1 << CS10);
  TIMSK1 |= (1 << OCIE1A);
  sei();
}

void loop(void)

{
  Serial.println(count);
  if (count > 30 * 60) // 30 dk gecikme
  {
    count = 0;
    flag = 1;
  }
  if (flag == 1) //3 saniye led on
  {
    digitalWrite(13, HIGH);
    if (count > 3)
    {
      digitalWrite(13, LOW);
      flag = 0;
    }
  }

}



volatile unsigned int count = 0;


ISR(TIMER1_COMPA_vect){
  
   count++;  //saniye de bir artır
}


void setup(void) {
  Serial.begin(9600);
  pinMode(13,OUTPUT);
   cli(); 
   TCCR1A = 0; 
   TCCR1B = 0; 
   TCNT1  = 0; 
   OCR1A = 15624; // 1 saniye
   TCCR1B |= (1 << WGM12);
   TCCR1B |= (1 << CS12)  | (1 << CS10);
   TIMSK1 |= (1 << OCIE1A);
   sei(); 
}


void loop(void)
{
  Serial.println(count);
  if (count > 30*60)  // 30 dk gecikme
  {
     count = 0;
     digitalWrite(13, HIGH);
     delay(3000);
     digitalWrite(13, LOW);
  
  }  }

ByTEK

@crazy


Teşekkürler.


Şuan bir önceki mesajımdaki yazdığımı deniyorum. Sorun yaratırsa sizin kodunuz üstünden deneme yaparım.