Jump to content
Devre Forum
  • Kaydol

Genel Araştırma

'serial' etiketi için arama sonuçları.

  • Etiketlere Göre Ara

    Aralarına virgül koyarak ekleyin
  • Yazara Göre Ara

İçerik Türü


Forumlar

  • Genel
    • Forum Hakkında
    • Projeler
  • Bilgi Alışverişi
    • Makaleler
    • Elektronik
    • Robotik
    • Arduino
    • PIC
  • Ürün İncelemeleri
    • Tanıtım istekleri
    • Elektronik Malzemeler
    • Arduino
    • Robotik Malzemeler
    • PIC
    • Sensörler
  • Yazılım
    • Proteus
    • Diğer Yazılımlar
  • Öğrencilere Özel
    • KOU Elohab
    • KOU Mekatronik

Sonuçlar içinde bul...

Sonuçlarda bul...


Oluşturma Tarihi

  • Start

    End


Son Güncelleme

  • Start

    End


Numaralar ile filtreleme...

Katılım

  • Start

    End


Üye Grubu


Hakkımda

Araştırmada 1 sonuç bulundu

  1. İki mikrodenetleyici arasında haberleşme konusunda çok fazla "sıkıntı" çekildiğini görüyorum. Bu yüzden bu makaleyi yazmaya karar verdim. Haberleşme isterse iki kıta arasında olsun isterse aynı pcb üzerindeki iki çip (PIC/AVR/STM) arasında olsun, haberleşmedir. ADSL modemden Wi-Fi'ye hatta modern telefon görüşmelerine kadar, tüm haberleşme "paketler" halinde yapılır. Çünkü en kolay ve düzgün olanı bu. "Paket" dediğimiz adı üstünde, bir bütün. Peki neden bilgileri buradan ard arda gönderip karşıdan da ard arda almıyoruz? Örneğin: Birinci_mesaj İkinci_Mesaj 3_Mesaj Bunları ard arda gönderirsek, her bir mesajın nerede başlayıp nerede bittiğini bilemeyiz. Bu yüzden her bir mesajın başına / sonuna bir "işaret" koymalıyız. Örneğin işaret olarak * koymayı düşünelim. Peki, mesajın içinde * varsa ne olacak? Biz verileri doğrudan gönderiyorsak, her bir byte 0 ile 255 arasında değer alabilir. Dolayısı ile "başka amaçla kullanılmayan" diye bir şey yok. (ESC ile bu mümkün ama kafamızı karıştırmayalım; yolu yok diyelim) O halde nasıl ayıracağız bu mesajları? Cevap, "paketleyerek". (packet) Cevap, "zarfa koyarak", (envelope) Cevap, "çerçeveye koyarak" (frame) Öncelikle bir "protokol" kurmalıyız kafamızda. Protokol dediğimiz, neyi nasıl yapacağımızın tarifi. Örnek olarak bir protokol uyduralım: En başta bir "preamble" olsun. Paketin buradan başladığını biliriz. Preamble 0x55 0xAA olsun örneğin. (Bu sayının seçilme sebebi, binary olarak 01010101 10101010 şeklinde olması, bir ve sıfırlar ardışık) Ardından yükümüzün (payload) kaç byte olduğunu verelim. Sabit bir şey göndereceksek buna gerek olmayabilir. Sonra asıl göndereceğimiz veri. Yani "payload", yük. En sonda da istersek bir kontrol toplamı (CRC) gönderebiliriz. Bir terslik olursa hatalı veri alınmasın diye. Evet, "çerçeve"mizin yapısı bu olacak. Şimdi bunu yazalım da güzel görünsün: Byte İçerik açıklama 00 0x55 Preamble ilk byte 01 0xAA Preamble 2. byte 02 len yük uzunluğu 03 payload(1) yük .. payload(..) yük len+2 payload(len) yük son byte len+3 CRC yük CRC toplamı Tabii bu bir kural değil. CRC koymayabiliriz örneğin, eğer aradaki iletişim çok sağlıklı ise ve hatalı bilgi gitmesi sistemimizde büyük sıkıntıya yol açmayacaksa. Çünkü pakete ilave edeceğimiz her byte, iletişim hızımızı düşürecek. Örneğin uzunluğumuz sabit olabilir. O zman onu da kullanmayabiliriz. Örneğin 16 bitlik bir integer sayı gönderiyor olabiliriz. Bu durumda uzunluk sabittir. Verinin çok hızlı olmasını istiyorsak, örneğin preamble de 1 byte olabilir. Bu durumda paketimiz şöyle olacak: Byte İçerik Açıklama 00 0x55 Preamble 01 yük-1 Yükün büyük byte'ı 02 yük-2 Yükün küçük byte'ı Sonraki gönderide verinin nasıl gönderilebileceğine bakacağız. (Devam Edecek)
×
×
  • 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ı