Picproje Elektronik Sitesi

DERLEYİCİLER => Microchip XC Serisi => Microchip XC8 => Konuyu başlatan: HeCToR - 21 Şubat 2016, 13:34:57

Başlık: Buzzer Kontrol
Gönderen: HeCToR - 21 Şubat 2016, 13:34:57
Merhaba Arkadaşlar harici interrupt içerisinde zaman kaybını önlemek için her kesme oluştuğunda buzzerı bir defa açıp kapatma işlemini nasıl yapabilirim ? açıp kapatma işlemi arasındaki delay fonksiyonunu göz önünde bulundurarak Saygılar.
Başlık: Ynt: Buzzer Kontrol
Gönderen: serdararikan - 21 Şubat 2016, 13:40:28
interrupt içerisinde bir değişkene bip süresini girersin.buzzeri aktif edersin.ana döngü içerisinde bu değişkeni değeri sıfırdan farklıysa azaltırsın.değişken değeri 0 olunca buzzeri durdurursun. tekrar kesme gelene kadar değişken değeri sıfır olacağı için buzzer hep susar.
Başlık: Ynt: Buzzer Kontrol
Gönderen: HeCToR - 21 Şubat 2016, 13:51:08
@serdararikan hocam delay fonksiyonum sabit bir değer olacak konuda tam ifade edemedim galiba sadece bip işlemi yapacağım
Başlık: Ynt: Buzzer Kontrol
Gönderen: RaMu - 21 Şubat 2016, 15:31:11
Sabit olması bir şeyi değiştirmez,
@serdararikan ın dediği gibi yapabilirsin.


__harici_kesme()
{
bip_durumu_ve_suresi = 100;
diğer işlemler...
...
...
}
.
.
.
ana döngü
main()
{
..
..
işlemler
..
..

if(bip_durumu_ve_suresi != 0)
{
LATx.X = 1;  //buzzer aktif
bip_durumu_ve_suresi--;   //bip süresi
delay-ms(1);

}
else()
LATx.X = 0;  //buzzer pasif


}





İstersen bip ____ bip ____ bip vs. de yaptırabilirsin,
veya bip kontrol işini timer ve timer kesmesi kurup
mainden tamamen bağımsız halede getirebilirsin.
Başlık: Ynt: Buzzer Kontrol
Gönderen: HeCToR - 21 Şubat 2016, 17:58:48
Teşekkürler
Başlık: Ynt: Buzzer Kontrol
Gönderen: dursuncemal - 22 Şubat 2016, 00:27:39
dikkat!! interrup kesman beep  surenden daha kisa olursa beep in surekli calabilir.