Kesme ile ne işin var? Niye yapılandırıyorsun?
FREQ.png


Her aktif olduğunda D5'den girip kessin programı diye oluşturuyorum onu ama D5'den ne yaparsam yapayım kesmiyor bu yapılandırma biçiminde.

Şuan devreye buton bağlı.
Ve kapısı eklemedim
 
İlk aklıma gelen D2 ve D3'e bağlı dış kesme interupt mı kullanmalıydım
 
Kesmelik bir iş yok ortada. Sen en iyisi programı nasıl yazacağını anlat ona göre gidelim.
 
Kesmelik bir iş yok ortada. Sen en iyisi programı nasıl yazacağını anlat ona göre gidelim.
Kafam bazen geç çalışır abi :( Seninde kafanı patlatıyorum...

Frekans girişini kontrol edecek bir and gate'in 1 girişi.(A)
Benim kontrol edeceğim frekansı işlemcime transferini açıp kapatacak and gate'nin 2 girişi.(B)

İşlemcime gidecek and gate çıkışı (Q)

Ben bu Q çıkışını işlemcimin herhangi bir kesme pinine uygulayıp programın ana akışındaki gecikmeler yazdırmalar nedeniyle kaçırmamak için.

Bu kısımdan emin değilim;
1 saniye boyunca kaç defa okuduysam gelen frekansı işlemci çalışma frekansıma bölüp çıkan sonucu yazdıracağım.



not:normalde ben 2 tane kesme pini var sanıyordum yapmaya çalıştığım yöntem olsaydı 4 tane kesmeye sahip olabilirdik bunun üstüne ayrıca gideceğim.
 
Kesmeleri sayarak frekans ölçmeye çalışırsan, ölçebileceğin maksimum frekans birkaç kHz'i geçemez. 5 MHz ölçeceğin zaman nasıl olacak o iş? İşlemci saniyede 5 milyon kesme kaldırabilir mi? Mümkün değil.

Yapılması gereken, Atmega328 içindeki bir hardware counter'in saydırılması. 1 saniye sonunda da gate'i kapatacaksın ve sonra da counter değerini okuyacaksın.

Ha kesme nasıl işe yarayabilir? Counter limiti dolduğunda bir kesme üretilmesini sağlayabilirsin. Böylece counter'da taşma meydana geldiğini anlarsın. Ama bunun için bile kesme rutini kullanmak yerine counter status register'lerine bakarak du durumu algılamak çok daha mantıklı.
 
Kesmeleri sayarak frekans ölçmeye çalışırsan, ölçebileceğin maksimum frekans birkaç kHz'i geçemez. 5 MHz ölçeceğin zaman nasıl olacak o iş? İşlemci saniyede 5 milyon kesme kaldırabilir mi? Mümkün değil.

Yapılması gereken, Atmega328 içindeki bir hardware counter'in saydırılması. 1 saniye sonunda da gate'i kapatacaksın ve sonra da counter değerini okuyacaksın.

Ha kesme nasıl işe yarayabilir? Counter limiti dolduğunda bir kesme üretilmesini sağlayabilirsin. Böylece counter'da taşma meydana geldiğini anlarsın. Ama bunun için bile kesme rutini kullanmak yerine counter status register'lerine bakarak du durumu algılamak çok daha mantıklı.
o zaman kesme falan kullanmayıp direkt TCNT'ye yazacağım.

Hardware counter ile ilgili datasheet'de bulabildiğim tek kısım TCNT. Özel bir başlık ayrılmamış hardware counter için.
 
C++:
digitalWrite(out, HIGH);
  flg = 0;
 
  Serial.println(c);
  if(digitalRead(in) == HIGH && flg == 0){
    c++;
  }

  if(millis() - gecen >= bekleme){
    digitalWrite(out, LOW);
    flg = 1;
    c = 0;
    gecen = millis();
  }

Böyle birşey yazdım VE kapısı ekledim çalışıyor.
Ama doğru mantıkla mı yazdım emin değilim
 
Osiloskop ile ölç, bakalım ne kadar hassas olarak 1 s elde ediyorsun.
 
yer değiştirdim millis'i yukarı giriş okumayı aşşağı aldım ne değişti bilmiyorum ama 1040'a düştü
 
Burada şunu anlıyorsun, program kodu ile çok hassas zamanlama elde etme imkanı yok. Başka nasıl üretebilirsin 1 s lik bir palsi?
 
Atmega328 içindeki diğer counter'i kullanarak üretebilirsin. Eğer tam üretilemiyorsa o zaman kristal frekansını değiştirmen gerekebilir.
 
setup:
  TCCR1A = 0;
  TCCR1B = 0;
  TCNT1  = 0;
  OCR1A = 15624;
  TCCR1B |= (1 << WGM12);
  TCCR1B |= (1 << CS12) | (1 << CS10);
  TIMSK1 |= (1 << OCIE1A);

ISR:
ISR(TIMER1_COMPA_vect){
  digitalWrite(out, LOW);
  flg = 1;
  c = 0;
}

loop:
  digitalWrite(out, HIGH);
  flg = 0;
  Serial.println(c);
 
  if(digitalRead(in) == HIGH && flg == 0){
    c++;
  }
 
Bu kapı 2.50V gerilime tepki vermiyor :mad:
Skop max +-2.50 çıkarabiliyor.

optokuplor eklemem gerekecek
 
Gene bir kesme görüyorum Ahmet :katil2: Kesme olmayacak, Atmega328 counter'ini bir kere yapılandıracaksın ondan sonra counter kendisi üretecek palsi. Eğer bu mümkün değilse o zaman başka çözüm bakacağız. Ama çözüm tamamen hardware olması lazım. Yazılımla yüksek frekans ölçmek için gereken çözünürlüğü yakalayamazsın.
 
Gene bir kesme görüyorum Ahmet :katil2: Kesme olmayacak, Atmega328 counter'ini bir kere yapılandıracaksın ondan sonra counter kendisi üretecek palsi. Eğer bu mümkün değilse o zaman başka çözüm bakacağız. Ama çözüm tamamen hardware olması lazım. Yazılımla yüksek frekans ölçmek için gereken çözünürlüğü yakalayamazsın.
Biraz daha datsheet bakayım
 
Gene bir kesme görüyorum Ahmet :katil2: Kesme olmayacak, Atmega328 counter'ini bir kere yapılandıracaksın ondan sonra counter kendisi üretecek palsi. Eğer bu mümkün değilse o zaman başka çözüm bakacağız. Ama çözüm tamamen hardware olması lazım. Yazılımla yüksek frekans ölçmek için gereken çözünürlüğü yakalayamazsın.
Abi TCCR1B set edip kesme kullanmasam olur mu?
 
Bu abi neyce yazıyor.
DAkika 7.33
 
Last edited by a moderator:

Forum istatistikleri

Konular
5,836
Mesajlar
99,540
Üyeler
2,479
Son üye
yiyehuoxing32

Son kaynaklar

Son profil mesajları

gruptaki arkadaşlara selamlar. sıteyi bu gün fark ettim. Asansör için 2x7 segment LCD gösterge üretmek istiyorum. acaba bu sayfadaki arkadaşlardan destek alabilirmiyim. LCD nin mantık açılımı ektedir.
deneyci wrote on TA3UIS's profile.
Selam.
Amatör telsiz lisansı nasıl alınıyor?
Lisansı olmayanı forumlarına almıyorlar. :)
Bilgi alamıyoruz.
cemalettin keçeci wrote on HaydarBaris's profile.
barış kardeşim bende bu sene akıllı denizaltı projesine girdim ve sensörleri arastırıyorum tam olarak hangi sensör ve markaları kullandınız yardımcı olabilir misin?
m.white wrote on Altair's profile.
İyi akşamlar.Arabanız ne marka ve sorunu nedir.Ben araba tamircisi değilim ama tamirden anlarım.
* En mühim ve feyizli vazifelerimiz millî eğitim işleridir. Millî eğitim işlerinde mutlaka muzaffer olmak lâzımdır. Bir milletin hakikî kurtuluşu ancak bu suretle olur. (1922)
Back
Top