Hirdetés

Új hozzászólás Aktív témák

  • válasz Janos250 #4921 üzenetére

    Ez pont nem azt magyarázza, hogy rosszul megy.

    "a manual azt írja, hogy ha a 16 bit besiftelése után nem visszük fel a chipselectet, akkor kisiftelődik az új bevitellel párhuzamosan a régi. Ha jól értelmezem. Viszont hiába viszem fel a CS-t a 16 bit után, a következő 16 bit besiftelésekor az előzőt akkor is tovább küldi a másodiknak is, tehát a kettő ugyanazt csinálja. Mit értelmezek rosszul?"

    Azt értelmezed rosszul, hogy a CS megállítja az IC shiftregiszterét. A CS csupán egy load jel, a lényege, hogy a shift regiszterben lévő logikai tartalmat átkapcsolja a kimenetekre. Az adattartalmat hordozó shiftregiszter viszont nem áll meg.

    Ha jól sejtem, te azt szeretted volna, hogy a lánc első (tehát aminek a DataIN-je a mikrokontrollerről megy) tagját feltöltöd adattal, aktiválod a CS-el, majd folytatod a másodikkal. Csak ezzel az lesz a baj, hogy így kishifteled az adatot az elsőről, így miután újra aktiválod a közös CS-t az első elállítódik.

    Amit kéne helyette:

    A teljes láncot feltöltöd, N*16 bittel, ahol N az elemek száma. Az első 16 bit a legtávolabbi IC adata lesz, az utolsó 16 bit pedig a mikrokontrollerre kötött IC-n fog megjelenni. Amikor kiküldted az N*16 bitet, mehet a közös CS

    Ha pedig valamelyiket nem akarod aktiválni, akkor az adott IC 16 bitjében no-op kódnak kell lennie.

    A lényeg tehát, hogy közös CS lábbal nem tudod egyenként frissíteni a kimeneteket, csak úgy, ha betolod mint az N db IC-re a 16 bites kódot, a fent leírt sorrendben.

Új hozzászólás Aktív témák