<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body><div dir="auto">--- moj<br>Uloha znela, fixna dlzka spravy.<br><br>Variabilnu dlzku ste si vymysleli Vy, asi by to slo u mna riesit s nejakymi rozumnymi obmedzeniami ale naco.<br><br><br>> Jak daný slave pozná, že data, která mu lezou do vstupu, jsou pro něho? <br><br>Posledna sprava je pre neho.<br><br>> Do vstupu mu jde celý vláčik, a on neví, kolik je slaves<br><br>Nepotrebuje to vediet, "posledna" je jednoznacne.<br><br><br>Medzikontinentalne rakety s hlavicami sa nestartuju cez SPI, ale  tak, ze dvaja tipkovia naraz otocia klucikom. <br><br><br>--- Vas<br>Poziadavka znela, cela transakcia prebehne v hardware. Ten Vas postup v hardware date len za cenu pinov, timerov a DMA naviac, a mate obmedzenie na rychlost SPI (lebo master musi robit medzery medzi kazdym byte, kedze nevie, kedy nastava "prehodenie slave").<br><br>Ani verzia s fixnou dlzkou spravy nie je uplne jednoducha a asi bez pinu a timera naviac sa neda urobit v hw.<br><br>Vyhodou je mensia spotreba RAM, ale podla zadania ide o 64B (teda v mojom rieseni 72B).<br><br>wek<br><br></div><br><br><div class="gmail_quote"><div dir="auto">On 24 May 2023 22:51:46 CEST, Petr Labaj <labaj@volny.cz> wrote:</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">

    Váš:<br>
    Jak daný slave pozná, že data, která mu lezou do vstupu, jsou pro
    něho? Do vstupu mu jde celý vláčik, a on neví, kolik je slaves a jak
    dlouhé zprávy posílají.<br>
    Takže ve výstupních datech některého předchozího slave může být
    obsah, který on vyhodnotí jako příkaz "odstartuj mezikontinentální
    střely s jadernými hlavicemi".<br>
    <br>
    Můj:<br>
    - každý slave testuje, kdy mu CS_IN spadne do neaktivního stavu, v
    té chvíli shodí své CS_OUT do neaktivního stavu a zapne své SPI<br>
    - start jednoho kola komunikace - master nahodí CS (předtím byl
    neaktivní)<br>
    - první slave přijímá a vysílá data, libovolně dlouho, podle své
    potřeby<br>
    - až dokončí svou komunikaci, nahodí CS_OUT a vypne své SPI (master
    má stále CS aktivní, teď už má trvale aktivní CS_OUT i tento první
    slave)<br>
    - druhý slave je teď naadresován (do jeho CS_IN jde CS_OUT toho
    předchozího)<br>
    - druhý slave přijímá a vysílá data, libovolně dlouho, podle své
    potřeby, až skončí, nahodí své CS_OUT a vypne své SPI, čeká až mu
    vstup CS_IN spadne do neaktivního stavu<br>
    - totéž pro 3. až N-tý slave<br>
    - až takto server obslouží všechny své slavesy, tak shodí svůj
    výstup CS a tím se celý řetězec připraví na další kolo<br>
    <br>
    Dokonce by ani master nemusel vědět, kolik má slavesů. Stačilo by,
    kdyby do nějakého jeho GPIO vstupu vedl CS_OUT posledního slave v
    řetězci.<br>
    Pak podobně jako u ARCnetu. Když by obsloužil všechny, které si
    myslí že má v řetězci, ale nedorazil by mu signál na ten GPIO vstup
    (tj. někdo přidal do řetězce další slave nebo je porucha), tak by
    master poslal na sběrnici speciální zprávu "kdo tu je, ať se
    přihlásí".<br>
    <br>
    PL<br>
    <br>
    *********************<br>
    <div class="moz-cite-prefix"><br>
      Dne 24.5.2023 v 22:01 wek napsal(a):<br>
    </div>
    <blockquote type="cite" cite="mid:387C1ACD-9E1F-4172-814E-BBB9DDA8275A@efton.sk">
      <meta http-equiv="content-type" content="text/html; charset=UTF-8">
      <div dir="auto">--- moj<br>
        <br>
        Ocislujme master=0, slave=K=1..N, pricom maximalne moze byt
        slavov M, N<=M.<br>
        <br>
        U mna master vysle vlacik sprav v opacnom poradi, t.j. prva
        sprava je pre M, druha pre M-1, ..., posledna pre 1, oznacme
        (M)(M-1)...(2)(1).  Prvy slave na zaciatok vlacika prihodi svoju
        spravu pre mastra, oznacme ju [1], a z konca si odstrihne spravu
        co posiela master jemu, t.j.(1). Druhemu uz teda pride sprava
        [1](M)(M-1)...(2). Urobi to iste, prida na zaciatok [2] a z
        konca sa necha (2), takze tretiemu pride [2][1](M)(M-1)...(3),
        atd. <br>
        <br>
        Kazdy slave teda na konci vlacika najde spravu od mastra jemu, a
        mastrovi pridu spravy od vsetkych slave v tvare
        [N][N-1]...[2][1](M)(M-1)...(M-N).<br>
        <br>
        --- Vas<br>
        <br>
        > První slave dostane "peška" (token) a komunikuje po SPI tak
        dlouho, jak potřebuje.<br>
        > Až si vyřídí svoje, tak pošle peška dál.<br>
        <br>
        Problem je v tom, ze o tom, ako dlho komunikuje K-ty slave
        nerozhoduje on, ale ten, kto ho drzi za CS=NSS, t.j. K-1. A
        pritom K ani nema moznost povedat tomu K-1, ze hotovo, lebo K-1
        ma vtedy neaktivne NSS, cize nepocuva.<br>
        <br>
        wek<br>
      </div>
      <br>
      <br>
      <div class="gmail_quote">
        <div dir="auto">On 24 May 2023 18:34:03 CEST, Petr Labaj
          <a class="moz-txt-link-rfc2396E" href="mailto:labaj@volny.cz"><labaj@volny.cz></a> wrote:</div>
        <blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt
          0.8ex; border-left: 1px solid rgb(204, 204, 204);
          padding-left: 1ex;">
          <pre class="k9mail"><div dir="auto">Asi jsem natvrdlý, ale jak to bude umožňovat obousměrnou komunikaci?
Do vstupu dat jednoho slave přece vede výstup toho předchozího. Takže Vaší metodou master nemůže poslat co chce kam chce.

Ano, u mě každý může používat různě dlouhá data, aniž o tom ostatní ví. Tedy samozřejmě to musí vědět master, protože ten mu ta data připravuje a posílá.
Princip je jednoduchý a používá se ledaskde (Token Ring, ARCnet, LEDky WS2812 atd.). První slave dostane "peška" (token) a komunikuje po SPI tak dlouho, jak potřebuje.
Až si vyřídí svoje, tak pošle peška dál.

PL

********************

Dne 24.5.2023 v 18:14 Jan Waclawek napsal(a):
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #729fcf; padding-left: 1ex;"><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"><div dir="auto">Zejména umoľňuje obousměrný provoz
</div></blockquote><div dir="auto">Aj tato metoda umoznuje obojsmernu prevadzku.

</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"><div dir="auto">a kaľdý slave můľe pouľívat jinak
dlouhá data.
</div></blockquote><div dir="auto">Bez toho aby o tom vsetci dopredu vedeli?

Ak o tom vsetci dopredu vedia, aj tato metoda moze pouzivat rozne dlhe data.

wek


----- Original Message ---------------

Subject: Re: STM32, SPI daisy chain
    From: Petr Labaj <a class="moz-txt-link-rfc2396E" href="mailto:labaj@volny.cz"><labaj@volny.cz></a>
    Date: Wed, 24 May 2023 18:03:40 +0200
      To: <a class="moz-txt-link-abbreviated" href="mailto:hw-list@list.hw.cz">hw-list@list.hw.cz</a>

</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #ad7fa8; padding-left: 1ex;"><div dir="auto">Já nic neříkám.
Já jenom říkám, ľe metoda, kterou jsem navrhoval já (zřetězení jen
signálu CS) je lepąí a eliminuje vąechny nedostatky zde popisované metody.
Zejména umoľňuje obousměrný provoz a kaľdý slave můľe pouľívat jinak
dlouhá data.
;-)

No co uľ. Ani větąím frajerům neľ jsem já třeba kdysi nevěřili, ľe je
Země fakt kulatá a dokonce se točí.
</div></blockquote><div dir="auto">
</div></blockquote><div dir="auto"><hr>HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true" class="moz-txt-link-freetext">http://list.hw.cz/mailman/listinfo/hw-list</a>

</div></pre>
        </blockquote>
      </div>
      <br>
      <fieldset class="moz-mime-attachment-header"></fieldset>
      <pre class="moz-quote-pre" wrap="">_______________________________________________
HW-list mailing list  -  sponsored by <a class="moz-txt-link-abbreviated" href="http://www.HW.cz">www.HW.cz</a>
<a class="moz-txt-link-abbreviated" href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
    </blockquote>
    <br>
  </blockquote></div></body>
</html>