Picproje Elektronik Sitesi

DERLEYİCİLER => PIC C => Konuyu başlatan: makine_terbiyecisi - 17 Nisan 2016, 11:17:04

Başlık: CCS C ile Buton Arkı önleme
Gönderen: makine_terbiyecisi - 17 Nisan 2016, 11:17:04
Merhaba arkadaşlar..

Projemdeki Tuş takımının ark oluşturmasını yazılımsal olarak önlemek istiyorum ..
Şöyle Bir kod yazdım olur mu ?

if(input(s1))    {while(input(s1)); tus=1;}
if(input(s2))    {while(input(s2)); tus=2;}


Burada while döngüsü ARK ı önler mi ?
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: sadogan - 17 Nisan 2016, 13:03:04
% de 100 olmasada önler. while içerisini birkaç ms niyelik delay la daha garanti olur.
Ancak buton basılı olduğu sürece başka işlem yapamasınız.
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: makine_terbiyecisi - 17 Nisan 2016, 16:20:35
Alıntı yapılan: sadogan - 17 Nisan 2016, 13:03:04
% de 100 olmasada önler. while içerisini birkaç ms niyelik delay la daha garanti olur.
Ancak buton basılı olduğu sürece başka işlem yapamasınız.

yanıtınız için teşekkür ederim ...
Bu beklemeden KESME fonksiyonları etkilenir mi ?
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: hakansefau - 17 Nisan 2016, 17:16:20
Burada butonu bırakmanızı sürekli bekleyecektir. Sizin exorlama mantığını düşünerek araya debounce süresi eklemeniz gerekecek. http://hackaday.com/2010/11/09/debounce-code-one-post-to-rule-them-all/ (http://hackaday.com/2010/11/09/debounce-code-one-post-to-rule-them-all/) Bu linklerdeki çalışmaları deneyebilirsiniz. Aslında yapacağınız butona basıldığını algıladıktan sonra ne kadar süre sonra bırakıldığını kontrol edeceğinizi debounce süresi olarak ekleyip çalıştırabilirsiniz.
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: dursuncemal - 18 Nisan 2016, 03:33:51
buton okulalarinda butonun statusunu while dongusu ile kilitlemek son derece yanlis bir uygulamadir.buna ragmen kullanacak isek  eger araya delay girmessen kesinlikle onlemez.ayrica bu delaylardan kesme fonksiyonu etkilenmez fakat programinizin ana dongusu kesinlikle etkilenir.bu durumun onune gecmek icin tuslarinizi ya timer interrupta yada external chage interrupta okumaniz cok daha efektif olacaktir.

Alıntı yapılan: makine_terbiyecisi - 17 Nisan 2016, 11:17:04
Merhaba arkadaşlar..

Projemdeki Tuş takımının ark oluşturmasını yazılımsal olarak önlemek istiyorum ..
Şöyle Bir kod yazdım olur mu ?


if(input(s1))    {delay_ms(1);  while(input(s1)); tus=1;}
if(input(s2))    {delay_ms(1);  while(input(s2)); tus=2;}


Burada while döngüsü ARK ı önler mi ?
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: Endorfin35+ - 04 Mayıs 2018, 18:16:13
while döngüsüne girmeden buton arkı önlenebilir mi?

aynı anda iki buton ile sayaç kullanıyorum. delay kullanınca yanlış sayıyorum.
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: tekosis - 05 Mayıs 2018, 09:37:38
birşeyler saymanız gerekiyorsa timerleri kullanın. Yoksa illaki sıkıntı olur.
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: makine_terbiyecisi - 05 Mayıs 2018, 14:52:26
Alıntı yapılan: Endorfin35+ - 04 Mayıs 2018, 18:16:13while döngüsüne girmeden buton arkı önlenebilir mi?

aynı anda iki buton ile sayaç kullanıyorum. delay kullanınca yanlış sayıyorum.

Timer 2 modülünü kullanarak delay yapman gerekiyor. CCS C kendi delay fonksiyonu kesmeleri etkiler.
Hatta watchdogtimer kurulu ise pic reset yer.
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: Salih - 05 Mayıs 2018, 15:33:39
Alıntı yapılan: makine_terbiyecisi - 05 Mayıs 2018, 14:52:26Timer 2 modülünü kullanarak delay yapman gerekiyor. CCS C kendi delay fonksiyonu kesmeleri etkiler.
Hatta watchdogtimer kurulu ise pic reset yer.

Düzeltme için söylüyorum, CCS C'de delay komutu kesmeleri etkilemez.
Buton okuma için bende Timer kesmelerini tavsiye ederim.
Başlık: Ynt: CCS C ile Buton Arkı önleme
Gönderen: dursuncemal - 05 Mayıs 2018, 17:22:36
buton'un ne sekilde calismasini istediginizi bilmiyorum.yukarıdakı kossdan anladığım kadarı ile basinca isi yapacak elimizi cekene kadar islem yapmayacak fakat program takili kalmayacak.

ben genelde bu durumlarda iki tane fonksiyon yaziyorum.
birtane de bit tanimliyorum 'tus_izin' diye

birinci fonksiyonda   'tuş_izin.'  biti & ilgili porta  bakip uygun ise tuş'u okuyup yapılması gereken işi yapıp tuş_izin bitimi pasif(0) yapiyorum.

ikinci fonksiyonda ilgili port'a bakıp elin tuştan çekilip cekilmedigine bakiyorum eger cekilmişse 'tus_izin' bitini aktif ediyorum. 

bu iki fonksiyon'a program'ın istediğin yerinden gidebilirsin. veya bir inteeruptun icinden gidebilirsin.
heri iki fonksiyona ayri ayri zamanlarda gittiginiz icin tus gurultusu icin gereken zaman gecikmesinide otomatikman elde etmis olursunuz.
ayrica bir sayiciniz var ise  ve hizlı bir sayma yapiyor iseniz mutlaka timer kullanmalisiniz