Jump to content

Forumlar

  1. Genel

    1. Forum Hakkında

      Forum hakkında bilgiler, bölüm açma talepleri, şikayetler, öneriler.

      1
      ileti
    2. 3
      ileti
  2. Bilgi Alışverişi

    1. Makaleler

      "Saf bilgi" içeren yazılar. Burada yer almasını istediğiniz konuları "istekler" başlığına, var olan bir konu hakkındaki soru ve düşüncelerinizi "tartışma" başlığına yazınız.

      52
      ileti
    2. Elektronik

      Güç elektroniği, Yüksek frekans, Lojik kapılar, Sayıcılar

      53
      ileti
    3. Robotik

      Motorlar, Aküatörler, IMU'lar, Sensörler, Konum hesaplamaları

      • Burada henüz ileti yok
    4. Arduino

      Arduino ile ilgili sorular ve cevaplar

      4
      ileti
    5. PIC

      Mikrochip firmasının PIC ürünleri hakkında soru ve cevaplar

      19
      ileti
  3. Ürün İncelemeleri

    1. Tanıtım istekleri

      Malzeme tanıtım istekleri bu bölümden yapılacaktır

      2
      ileti
    2. Elektronik Malzemeler

      Her türlü elektronik malzeme

      3
      ileti
    3. Arduino

      Arduino'ya özel malzemeler

      • Burada henüz ileti yok
    4. Robotik Malzemeler

      Tekerlek, Gövde, Motorlar

      • Burada henüz ileti yok
    5. PIC

      Microchip PIC ve ilgili malzemeler

      2
      ileti
    6. Sensörler

      Sensörler ve malzemeleri

      • Burada henüz ileti yok
  4. Yazılım

    1. Proteus

      Özellikle öğrenciler arasında popüler olan tasarım ve simülasyon programı.

      5
      ileti
    2. Diğer Yazılımlar

      Yazılımlarla ilgili bilgi alışverişi

      11
      ileti
  5. Öğrencilere Özel

    1. KOU Elohab

      Kocaeli Üniversitesi Elektronik ve Haberleşme bölümü ödev ve deneyler

      16
      ileti
    2. KOU Mekatronik

      Kocaeli Üniversitesi Mekatronik bölümü ödev ve deneyler

      • Burada henüz ileti yok
  • Çevrimiçi Kullanıcılar   0 Üye, 0 Kayıtsız, 3 Misafir (Tam liste)

    Şu anda bağlı kayıtlı kullanıcı bulunmuyor

  • Konular

  • İletiler

    • Timeout => Zaman aşımı? Eğer bir paket gönderilirken bir şekilde tamamlanmadı ise, bir sonraki paket bunun devamı gibi alınacağından o da bozuk alınmış olur. Örneğin (örnek 3 byte paketimizi kullanıyorum) 0x55 0x15 0x24 olan paketimiz, bir iletişim sorunundan dolayı 0x55 0x15 şeklinde gitmiş olsun. Bu durumda, bir sonra gelecek paketin ilk karakteri, bozuk paketin son karakteri imiş gibi algılanacak ve ardından gelen 2 byte değerlendirme dışı kalacaktır. Dolayısı ile bozulmuş bir paket yüzünden, ardından gelen sapasağlam paket de ziyan olacaktır. Bunu engellemek için eğer paketler arasında bir zaman boşluğu varsa, timeout kullanabiliriz. Örneğin biz 100 milisaniyede bir paket gönderiyorsak ve iki byte arasındaki süre 0,1 milisaniye ise, örneğin 1 milisaniyelik bir timeout kullanabiliriz. Yani, veri gelirken 1 milisaniyeden uzun bir kesilme olursa, almakta olduğumuz paketi iptal edip yeni bir paket paket beklemeye başlarız. Böylece bozuk paketten sonra gelen sağlam paketi sorunsuz olarak alabiliriz. Bunu yapabilmek için, bir timeout sayıcımız olması ve bunun bir timer kesmesi içinde artırılması gerekir. örneğin: int TimeoutCounter; diye bir değişken tanımlayıp program init aşamasında buna sıfır değeri verelim: TimeoutCounter=0; Sonra bir timer kesmesinde (Örneğin 100 mikrosaniyelik bir kesmede) bu değişkeni bir arttıralım. Bu değişken 10 veya daha yüksek bir değer aldığında, 1 milisaniye aşılmış olacaktır.   if (TimeoutCounter<11)TimeoutCounter++; Burda bir şart koyuyoruz ki, sayı devredip çok uzun süre sonra tekrar sıfır olmasın. Sonlu durum makinemizde de bu durumu değerlendirelim: "void Serial_ISR(void)" içinde, "tmp=GetChar;" ile "switch (state)" arasında bu değerlendirmeyi yapabiliriz:   if (TimeoutCounter>=10)state=0; TimeoutCounter=0; Böylece 1 milisaniyelik veya daha fazla bir kesinti olursa, state sıfırlanacağı için, sonlu durum makinemiz ardından gelecek bilginin yeni bir paket olacağını öngörerek, veri kaybını engellemiş olur. Anlaşılmayan yer varsa lütfen yazın.
    • Bu ürünleri sizmi üretiyorsunuz
    • "Kabaca" evet. Ama aslında bu yöntem, tam olarak "son yüz tanenin ortalaması" sayılmaz. Sondakilerin ağırlığı daha fazla, eskilerin ağırlığı daha azdır. Ancak çok zaman bu, son yüz tanenin ortalamasından daha işe yarar sonuç verir. Sonuca bakıp bu değerleri değiştirebiliriz. Şuna çok dikkat: iki katsayının toplamı 1 olmalı. Burada hataya düşmemek için ben genellikle: p1=0.99 p2=1-p1 gibi yazarım ve sadece p1'i değiştiririm. Son 10 tanesi için 0,9 bve 0,1 son 100 tanesi için 0,99 ve 0,01 son 1000 tanesi için 0,999 ve 0,001 gibi düşünebiliriz. Ancak tekrar ediyorum, 0,99/0,01 ile bu algoritmayı uygulamak ile son 100 tanesinin ortalamasını almak "benzer" sonuçlar verse de, tam olarak bu değil.  
    • Burada ki ''oran'' değişkenlerinden bağımsız bir şekilde son 100 veri için benzer ortalama bir filtre yapmak istiyorsak;  filtreliveri=hamveri*0.99+hamveri*0.01  diyebilir miyiz hocam?  
  • Üye İstatistikleri

    • Toplam Üye
      56
    • Çevrimiçi Rekoru
      496

    En Yeni Üye
    cass2pe
    Kayıt tarihi
  • Forum İstatistikleri

    • Toplam Konu
      54
    • Toplam İleti
      172
×
×
  • Yeni Oluştur...

Önemli Bilgilendirme

Facebook / Twitter / Google hesabınızla kolayca kaydolup cevap verebilir, soru sorabilir, istekte bulunabilirsiniz.
Devam etmeniz, forum kurallarını kabul ettiğiniz anlamına gelir.            Forum Kuralları