Dış Kesmeler (External Interrupts) Sonrası Programı Farklı Konumdan Başlatma
  • Merhabalar,

    -Dış kesmeden sonra programı kaldığı yerden değil de farklı bir satırdan başlatabilir miyim?
    *Amacım kesme geldiğinde yapılan işlemi bitirerek 2. işlemden başlamasını sağlamak.

    Şu anda kullanım biçimim, kesme oluştuğunda yeni bir kesme oluşmasını engellemek için interruptları kapatıyorum,
    ardından içinde delay bulunan void çağırıyorum ardından tanımlamalar yapıp kesmeleri aktifleştirip normal programıma dönüyorum. Tabii ki haliyle program saçmalıyor. Interrupt fonksiyonunun içinde fazla oyalanmak istemiyorum ama aktif olduğunda işlemlerin ertelenmesi benim için söz konusu değil. Bu konuda bana gidebileceğim doğru bir yol gösterir misiniz? loop'da da sadece if else ile dallanmaları kontrol ediyorum.

    Not: pastebin.com sitesi açılmadığından kesme kodunu buraya ekliyorum.
    -------------------------------------------
    //Enco Interrupt
    void EncoStop() {
    noInterrupts();
    Konum = true;
    MotorDur();
    Konum = false;
    Serial3.println("EncoStop");
    if (Kutu == true)
    {
    Serial3.println("KutuBirak EncoStop");
    KutuBirakma = true;
    }
    else if (Kutu == false)
    {
    Serial3.println("Kutu Al EncoStop");
    KutuAlma = true;
    }
    }
    //Motor Durdurma
    void MotorDur() {
    //SeriMesaj = "Motor Dur - Fonksiyon Calisti";
    if(Konum == true)
    {
    analogWrite(SagMotorileri, 20);
    analogWrite(SolMotorileri, 20);
    analogWrite(SagMotorGeri, 20);
    analogWrite(SolMotorGeri, 20);
    delay(3000);
    Durus = false;
    }
    else if(Konum == false)
    {
    analogWrite(SagMotorileri, 20);
    analogWrite(SolMotorileri, 20);
    analogWrite(SagMotorGeri, 20);
    analogWrite(SolMotorGeri, 20);
    }
    analogWrite(SagMotorileri, 0);
    analogWrite(SolMotorileri, 0);
    analogWrite(SagMotorGeri, 0);
    analogWrite(SolMotorGeri, 0);
    // SeriMesajYaz();
    }
    -------------------------------------------
  • Benim aklıma ilk goto komutu geldi. goto komutunu kullanabilirsin.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook

Tagged

Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.