Picproje Elektronik Sitesi

MİKRODENETLEYİCİLER => Microchip PIC => Konuyu başlatan: ademtosun58 - 28 Mart 2017, 15:53:52

Başlık: Pic16f877a menü uygulaması (Alarm menüsü oluşturma)
Gönderen: ademtosun58 - 28 Mart 2017, 15:53:52
Sevgili Picproje.org Ailesi .

Daha önce de forumda bi konu açmıştım o sorunu çözdüm şimdi yeni bi sıkıntı ile karşınızdayım(yardımlarınızı eksik etmeyin).


Pic 16f877a ile MPLAB IDE kullanarak bir telemetri sistemi tasarladım(Sıcaklık ölçme,Encoder,Role ile kontrol vs)

Sistemim su an sıkıntısız çalışıyor ekstra olarak son bir şeyim kaldı(Teslim tarihi cuma )

Sıkıntım şu

Örneğin sıcaklık ölçerken sıcaklıgın belli bi durumu geçmesi durumunda bana hata oldugunu söyleyen ekstra bir alarm menüsü oluşturmam lazım.Hani sıcaklık artınca uyarı ledi yanıcak bende alarm menüsüne girince hangi sensörde sıkıntı  oldugunu görücem bunu nasıl yapmam gerekiyor. benim sistemimde Timer interrupt kullanıyorum interruptın içindeki değerleri menülere bastırıyorum kodum asagıdaki şekildedir




int count=0;


void interrupt ISR()
{
   
    if(INTCONbits.TMR0IF)
      {INTCONbits.TMR0IF=0;
        count++;
        if(count==35)
            {
     
               if(sensor1status==1)
            {
                halleffect1();
                  count = 0;
            }
               if(sensor2status==1)
            {
                halleffect2();
                  count = 0;
            }
                 if(sensor3status==1)
            {
                halleffect3();
                  count = 0;
            }
                 if(sensor4status==1)
            {
                halleffect4();
                  count = 0;
            }
                 if(sensor5status==1)
            {
                halleffect5();
                  count = 0;
            }
               if(role1status==1)
               {
                   role1();
                   count = 0;
               }
               if(role2status==1)
               {
                   role2();
                   count = 0;
               }
           if(role3status==1)
               {
                   role3();
                   count = 0;
               }
           if(role4status==1)
               {
                   role4();
                   count = 0;
               }
               if(temp1status)
               {
                   temp1();
                   count = 0;
               }
                if(temp2status)
               {
                   temp2();
                   count = 0;
               }
       
     
       
       
       
       
       
}
}

}
Başlık: Ynt: Pic16f877a menü uygulaması (Alarm menüsü oluşturma)
Gönderen: mehmet - 28 Mart 2017, 18:50:42
Herşey kesme içine koymanız pek iyi olmamış.
"State Machine", "Sonlu Durum makinesi" kelimelerini
araştırınız.


if(sicaklik > 35)
{
     led = 0b1;
}
else led = 0;

Uygun bir yere ilave edilebilir.
Başlık: Ynt: Pic16f877a menü uygulaması (Alarm menüsü oluşturma)
Gönderen: veysel_eeblog - 31 Mart 2017, 09:19:27
Şöyle yapılabilir;
1. sensör için

if( sicaklik > x ) //x sıcaklık değeri
{
   //ledi yak
   //sonra
   
  //1. sensör için
  flag_sensor1 = 1;  //sensör 1 değişkeni
}
else
{
  //ledi söndür
  //sonra

  //1. sensör için
  flag_sensor1 = 0;
}


Her sensöre uygulayacağız. Sensörlerin arıza durumunu sıcaklıkla kontrol ediyorsan tabi, orayı tam anlamadım.
Daha sonra menüden sensörlerin flag durumunu kontrol edip arıza hangisinde bakılabilir.