Multi SPI Devices
  • sa

    şuan üzerinde çalıştığım projemde;

    1 x PHP Server,
    1 x Arduino Uno,
    1 x W5100 Ethernet Shield,
    1 x RC 522 Rfid Reader,
    1 x LCD (20x4 i2c),
    1 x Hall Effect Sensör (analog),
    1 x SSR role.

    kullanıyorum, ve oldukça ilerleme kattettim. Önce her modülü tek tek çalıştırıp, şimdi tüm kodu bir araya topladım.
    Okyanusu geçtim de derede boğuluyorum.

    W5100 ve RC522 ikiside SPI pinlerini kullanıyolar.

    W5100 -> 4
    W5100 -> 10 (SDA yada SS Pini)
    W5100 -> 11 (MOSI ortak)
    W5100 -> 12 (MISO ortak)
    W5100 -> 13 (SCL yada CLK ortak)

    RC522 nin SDA pini 9 olasına rağmen, W5100 shield olduğundan mıdır bilmem RC522 den baskın çıkıyor. W5100 çalışıyor, ama 2 modül birlikte çalışmıyor.

    Azcık araştırdım arduinonun kendi forum sitesinde biri demiş ki 2 spi modülü aynı anda çalıştırmanın bir yolu yok. tek tek çalıştıracan w5100 ı disable yapmak için

    pinMode(10, OUTPUT);
    digitalWrite(10, HIGH);

    yap demiş, yaptım RC522 çalıştı,
    Takıldığım nokta şurası;

    ben bu pini tekrar nasıl etkinleştirecem :)
    bunun varsayılanı ne?
    LOW yaptım olmadı INPUT yaptım olmadı,

    Etherneti tekrar çalıştıracağım zaman RC522 nin SS pinini (9 nolu pin) demi output ve high a çekmem gerekir.

    pinMode(9, OUTPUT);
    digitalWrite(9, HIGH);

    *** notlar ***
    *çok karışık anlatmış olabilirim kusura bakmayın kafam da çok karışık.
    *http://forum.arduinoturkiye.com/index.php?p=/discussion/7460/birden-fazla-spi-cihaz#Item_6 evet bu postu okudum

  • S.a hacıdayı,
    SPI protokolü, Haberleşmesi aynı hat olan fakat seçim uçları ayrı ayrı olan bir protokoldür.
    Yani sen rfid ile konuşacağın zaman diğer bütün SPI cihazların SS pini LOW, rfid cihazın SS pini HIGH olmalı.
    Hangi modülle konuşacaksan onun SS pini HIGH, diğer bütün SPI cihazların SS pini LOW olmalı.
  • Aynen emekci nin dediği gibi fakat uno cılız kalır bu işe bence mega kullanmalısın diye düşünüyorum. W5100 oldukça ağır bir protokol ve diğer SPI cihazla uğraşırkene TCP timeouta düşebilir..
  • konuyla ilgili okuduğum tüm dökümanlarda hangi modülle konuşacaksan onun ss pinini low, diğer tüm pinler high olacak. (hatta verdiğim linkte @gary123 de aynı şeyi söylemiş)
    @ekmekci hocam tam tersi olduğundan emin misiniz?

    @msg hocam evet timeouta düşüyor ama kartı okutuyum şak sorgulasın sorgudan dönen cevabıda anında göstersin amacım yok, zamanım var beklerim, bağlantıda hata ile karşılaşırsa bağlanana kadar tekrar tekrar deneyecek şekilde kodladım.
  • bide bu konuda fikirleriniz nelerdir, denemeye değer mi?
    https://www.dorkbotpdx.org/blog/paul/better_spi_bus_design_in_3_steps
  • spi selecet(ss) pini her cıhazda low olacak dıye bır sey olmayabılır bazı cıhazlar hıght ıken aktıf olurken bazı cıhazlar low da aktıf olabılır datasheeti ınceleyın emın olun.
    son verdıgınız lınk soyledıgım nedenle bu karısıklıgı onlemek ıcın databus dakı pinleri tamamen yalıtmak ıcın dusunulmus bır yontem. arduıno dunyasında yazılan kutuphaneler cok basarılı olmayabılıyor bırbırlerı ıle carpısır dururlar tıcarı bır urun gelıstırırken uyumlu kodların yazılması onemlı yoksa ılerıde basınız cok agırır.

Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Login with Facebook
Açık kaynak kültürü gereği, çözdüğünüz problemlerin çözümlerini paylaşmayı lütfen unutmayın.