INT0IE kesmesine alternatif

Başlatan ÜC, 06 Eylül 2017, 22:54:26

ÜC

        Entegreden gelen kısa süreli bir sinyali algılamak istiyorum ama  ne INT0IE (Portb.0 kesmesi) nede RBIE (Portb değişim kesmesi) kesmelerini kullanamıyorum tüm portb pinleri aktif başka  işler için kullanılıyor. Gelecek sinyali devamlı kontrol imkanıda yok , program alt programlarda işini bitirdiğinde sinyali kontrol etsin istiyorum yani zamanla ilgili bir kısıtlama olmasın.
    Sinyal ile kapasitörü doldursam , kontrol zamanı geldiğinde kapasitörü kontrol etsem diye düşündüm ama kapasitörü nasıl boşaltacağımı bilemedim. Kontrol ettiğim pini giriş yapsam kapasitör boşalırmı ? yada başka bir çözüm önerebilirmisiniz arkadaşlar ?

mehmet

Mcu nedir? Belki adc kesmesi kullanılabilir.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ÜC

  18F4431  sinyal TTL seviyede Mehmet hocam

Tagli

Flip-flop iş görebilir belki. Ama tabi sinyal okunduktan sonra başka bir bacakla resetleme yapmak gerekebilir.
Gökçe Tağlıoğlu

kantirici

Sinyalin high-low süreleri ne kadar? İlgili pin bir timer ile pooling yapılabilir.

XX_CİHAN_XX

Timer0 veya Timer1 için external clock girişlerini veya comparator girişlerini kullanabilirsin. Veya yakalamak istediğin sinyal çok kısa süreli değilse süreyi yakalayacak bir periyotta timer kesmesi kurup her kesmede periyodik olarak sinyal girişlerini sordurabilirsin.
Yirmi yaşındaki bir insan, dünyayı değiştirmek ister . Yetmiş yaşına gelince , yine dünyayı değiştirmek ister, ama yapamayacağını bilir.

ÜC

   Flip-flop için 2 transistör , 2 kapasitör , 4 drenç gerekiyor bunları alacak kadar boş yer yok malesef , eğer 1 kapasitor 1 transitör ile olsa sıkıştırabilirdim ama bunlarla olurmu bilmiyorum. Boş pinlerim var 1 kapasitör ile olma imkanı varmı ?

  Daha önce söylemeliydim entegre PT2272 RF sinyal çözücü entegresi. VT pininden (17.pin) gelen sinyali algılayacağım , datasheette zamanı ile ilgili bir açıklamayı çözemedim malesef.

  Sinyal her datada tek palslik bir sinyal. Tek bir pals ile timere nasıl kesme oluşturacağımı bilemiyorum. İşlemci benim için teferruatlı , komperatör girişlerinden nasıl kesme oluşturulacağını araştırıyorum bu en pratik yöntem olacak sanırım.

yas

Alıntı yapılan: umitco - 06 Eylül 2017, 22:54:26
        ..... ama  ne INT0IE (Portb.0 kesmesi) nede RBIE (Portb değişim kesmesi) kesmelerini kullanamıyorum tüm portb pinleri aktif başka  işler için kullanılıyor. .....

Alıntı yapılan: umitco - 06 Eylül 2017, 23:43:53
  18F4431  sinyal TTL seviyede Mehmet hocam

Bu mcu da INT0 portb.0 da değil portc.3 te tekrar bir bakın bence.

ÜC

#8
      Rezil olduk o zaman desene , bakayım hemen.

mehmet

Adc kesmesi ile değer okunur. TTL
seviyesi üzerindeyse işlem yapılır.
Olan olmuştur,
olacak olan da olmuştur.
Olacak bir şey yoktur.
---------------------------------------------
http://www.mehmetbilgi.net.tr

ÜC

   Evet PORTC.3 te imiş external kesme , hatta 3 tane external pin varmış. INTCON.1 ve 4 pinlerine bakıp diğer işlemcilerle  aynı diye düşünmüştüm.
    Sorunumu giderdim ama arkadaşların önerilerinden flip-flop devresi veya komperatör kesmesi kullanılarak sinyalin algılanabileceğini öğrenmiş oldum.

      Cevap yazıp öneride bulunan tüm arkadaşlara çok teşekkür ederim.

HexfeT

#11
Giriş tanımlı herhangi bir pin ile normalde kullandığımız bir kesme pini arasına diyot koyarız. Kesme rutininde pini kontrol edip işlem yaparız. Kesme oluşturması istenen her sıradan pin, bir diyot ile kesme pinine bağlanıp kesme rutininde pinler kontrol edilerek kaynak tespit edilebilir.

ÜC

#12
   Mehmet hocam adc ile sinyal algılama yapılabilir ama kapıda bekleyip gelince içeri alınması lazım bense hiç kapıda beklemek istemiyordum , işim bitince kapıda bekleyen varmı diye kotrole gitmek istedim.

HexfeT hocam tam anlayamadım resim üzerinden biraz daha açabilirmisiniz ?




HexfeT

#13
RB0'ı pull down edip yükselen kenarda kesme oluşacak şekilde konfigüre ettiğimizi varsayalım. Diyelim ki RB0 haricinde 4 harici kesmeye daha ihtiyaç var. RA0, RA1, RA2, RA3 pinlerinden aynı şekilde birer diyotu RB0'a bağlarız. Bu pinlerden biri lojik 1 aldığında pindeki diyot üzerinden RB0'a iletilir ve kesme oluşur. Kesme rutininde RA0, RA1, RA2, RA3 pinlerinin durumuna bakıp kesmenin nereden geldiğini anlarız. Hangisi lojik 1 ise kesme oradan gelmiştir. İşlemler ona göre akar...

Bu arada normalde RB0 için kullandığımız kesme kaynağını da diyot üzerinden bağlamak gerekir. Böylece bir kesme pini + 4 normal pin ile 5 kaynaktan kesme alabiliriz.

Bunu denemedim tabi ama olmaması için bir sebep görünmüyor. Atladığım bir şey varsa tecrübeli biri düzeltsin.

ÜC

#14
  Bahsettiğiniz yöntemde external kesmesi olan bir pin kullanılmalı ama benim bu pinlerimin hepsi meşkul daha doğrusu ben öyle sanıyordum. External ve değişim kesmesi pinlerini kullanamadığımı düşünüp başka bir çözüm arayışına girdim. External kesmesinin Portb de olduğunu sanıyordum Yas arkadaşın uyarısıyla PORTC.3 de olduğunu öğrendim
   
   Gösterdiğniz yöntemide öğrenmiş olduk HexfeT hocam işimize yarayacaktır birgün mutlaka ilgi ve cevap için teşekkürler