<html>
  <head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
  </head>
  <body>
    Teda pro menší počet pozic na backplane by to šlo i bez toho 74HC..,
    jen s tím odporem.<br>
    Jen by se sčítaly hodnoty těch odporů, pokud by tam nebyly zasunuté
    moduly.<br>
    To hradlo by případně stačilo dát třeba jen na každou 3. pozici nebo
    tak.<br>
    <br>
    PL<br>
    <br>
    ********************<br>
    <br>
    <div class="moz-cite-prefix">Dne 26.5.2023 v 1:34 Petr Labaj
      napsal(a):<br>
    </div>
    <blockquote type="cite"
      cite="mid:3a208d74-a6ed-d7f8-9f93-f7f84595a8ab@volny.cz">
      <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
      Už jsem se tím nechtěl dál zaobírat, protože nikoho jiného už to
      nezajímá a my dva tím akorát zabíjíme čas. Ani jeden z nás nemá
      snahu a chuť se nechat přesvědčit na řešení toho druhého.<br>
      Ale přece jen ještě jedno vyjasnění nedorozumění.<br>
      <br>
      Těch 20-30 řádků kódu je univerzální část, která zajišťuje ten
      princip Token Passing.<br>
      Samozřejmě v tom není zahrnut program, který daná data připravuje
      a odesílá/přijímá. Ten je závislý na tom, o jaké zařízení jde, že.<br>
      <br>
      K té obousměrnosti: já to kdysi implementoval tak (klasicky, bez
      Token Passing), že master poslal slavovi příkaz. Pak mu posílal
      nuly (jako nosnou) tak dlouho, až mu slave odpověděl. A podle
      odpovědi buď zase master něco poslal nebo naopak zpracovával
      obdržené výsledky. Prostě běžná obousměrná síťová komunikace.<br>
      Já tak měl udělanou komunikaci mezi procesory. Běžně tak ale přece
      funguje komunikace s kdejakým HW. Tam je většinou prodleva mezi
      příjmem a vysíláním fixní, protože ji realizuje HW. Já tam měl
      vysílání nosné proto, abych simuloval tak trochu asynchronní
      provoz.<br>
      Tohle by se klidně dalo tím Token-Passing režimem udělat úplně
      stejně. Jen by tam přibylo těch 20-30 řádků pro předávání tokenu.
      Tehdy mě to nenapadlo.<br>
      Z realizačních důvodů jsem to nemohl udělat po UARTech (nebyly k
      dispozici). A I2C jsem nikdy neměl moc rád (a stále nemám).<br>
      <br>
      K tomu backplane: jednoduše. Vyžadovalo by to jedno CMOS hradlo
      (jen budič, třeba 74HC244 pro 8 pozic pro moduly) a jeden odpor
      pro každý konektor.<br>
      Pin CS_IN by byl přes velký odpor připojený na vstup toho 74HCxx.
      Tak když by tam nebyl zasunutý modul, signál CS_IN by se kopíroval
      na CS_OUT a kruh by se uzavíral.<br>
      Zasunu desku, pak aktivní GPIO výstup CS_OUT snadno přemůže ten
      překlenovací odpor a kruh je  na této pozici řízen a daný modul je
      zařazen do sběrnice.<br>
      <br>
      S tím Schwarzeneggerem jste mě trochu rozhodil. Jako herec mi byl
      vždy sympatický, jako politik-progresivista moc ne. Tak se to
      navzájem tak vyvažovalo.<br>
      Ale pokud píšete, že je SPI-kompatibilní, tak to by situaci
      zásadně ovlivnilo do plusu.<br>
      <br>
      PL<br>
      <br>
      *********************<br>
      <br>
      <div class="moz-cite-prefix">Dne 25.5.2023 v 23:52 wek napsal(a):<br>
      </div>
      <blockquote type="cite"
        cite="mid:1E910026-B980-45B5-9729-42F59A38C70C@efton.sk">
        <meta http-equiv="content-type" content="text/html;
          charset=UTF-8">
        <div dir="auto">> Rozumím, je třeba najít podpůrné argumenty
          pro své řešení a odsuzující pro ta ostatní. ;-)<br>
          <br>
          Iste. A prajem Vam, aby ste nejake nasli... :-D<br>
          <br>
          > implementace ve slave je triviální, na nějakých 20-30
          řádků v C, možná i míň <br>
          <br>
          A ja sa na tych Vasich trivialnych 20-30 riadkov, mozno aj
          menej, tesim... :-)<br>
          <br>
          Okrem ineho aj preto, lebo mi to konecne objasni, ako presne
          sa dosiahne toto:<br>
          <br>
          > zřetězení tímto způsobem ponechává každému slave
          naprostou svobodu, <br>
          > jak a co bude s masterem komunikovat (nemá-li zrovna nic
          tak klidně i 0 byte), <br>
          <br>
          ... lebo si myslim, ze slave ma primalo moznosti aby o tychto
          veciach mohol rozhodovat.<br>
          <br>
          A ze ako sa da zrealizovat...<br>
          <br>
          > kam by se jen zasunutím destičky zařadil do busu další
          slave<br>
          <br>
          ...bez vlastnorucne skonstrovaneho speci konektora, tak to
          skutocne netusim. Nieto este...<br>
          <br>
          > (po zasunutí by následoval cyklus "ozvi se kdo jsi tu a
          řekni co umíš", <br>
          > automaticky vyvolaný masterem)<br>
          <br>
          <br>
          wek<br>
          <br>
          PS. '51 nie je ziadna vykopavka ale najlepsi mcu vsetkych
          cias.<br>
          <br>
          PS2. O nahradeni vojakov strojmi bol natoceny dobry
          dokumentarny film tak pred 30 rokmi. Ak sa lepsie prizriete,
          Arnold ma ma lavom bicepse vytetovane MOSI a na pravom MISO.<br>
          <br>
        </div>
        <br>
        <br>
        <div class="gmail_quote">
          <div dir="auto">On 25 May 2023 23:12:45 CEST, Petr Labaj <a
              class="moz-txt-link-rfc2396E" href="mailto:labaj@volny.cz"
              moz-do-not-send="true"><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">Rozumím, je třeba najít podpůrné argumenty pro své řešení a odsuzující pro ta ostatní. ;-)

Takže asi naposled, jen shrnutí:
- metoda Token Passing není nic exotického, ale celkem běžně používaná metoda
- zřetězení tímto způsobem ponechává každému slave naprostou svobodu, jak a co bude s masterem komunikovat (nemá-li zrovna nic tak klidně i 0 byte), jak dlouho, simplex/duplex, jak rychle atd.
- klidně můžou být na sběrnici různí slavesové, třeba i velmi pomalé AVR a velmi rychlé STM32H a podobně (samozřejmě při ošetření napěťových úrovní), dokonce i něco se SW realizovaným SPI jako nějaká vykopávka (třeba nějaké x51)
- implementace ve slave je triviální, na nějakých 20-30 řádků v C, možná i míň (potřebuje jen umět povolit/zakázat SPI, testovat jednu GPIO linku a nastavit jednu GPIO linku)
- není žádný důvod, proč by to nemělo fungovat na jakémkoli typu procesoru, starém i budoucím, tedy ochrana investic
- snadno by se dal udělat nějaký backplane s řadou konektorů, kam by se jen zasunutím destičky zařadil do busu další slave (po zasunutí by následoval cyklus "ozvi se kdo jsi tu a řekni co umíš", automaticky vyvolaný masterem)

Při implemetaci mého spolehlivého SPI pak létají mezikontinentální rakety přesně na čas podle jízdního (raketového) řádu.
Tak na co tam živit nějaké zbytečné chlapy.
SPI forever. ;-)

PL

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

Dne 25.5.2023 v 14:18 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">Pravidlo: žádný zákazník nikdy dopředu pořádně neřekne, co všechno dříve
či později bude potřebovat.
Takže vždy je třeba myslet na pozdější rozšiřitelnost.
</div></blockquote><div dir="auto">Premysliet mozno, ale urcite netreba robit prilis velke vylepsenia.

A treba zacat s proof-of-concept vecami, aby sa zasadne problemy ukazali
hned. Napriklad taka metoda zretazenia chipselectov... na papieri to
vyzera dobre, ale ak sa to zacne robit, tak sa rychlo ukaze, aka blbost to
bola... ;-)

Ako vravim, zadanie bolo, ze transakcia ma prebehnut automaticky, bez
nejakeho saskovania v software. Ak sa maju veci robit v software, tak to
pokojne mozu byt vsetci postupne master, presne tak ako sa to pri
odovzdavani tokenov robi, a vobec netreba riesit ziadne zretazovanie
chipselectov. Tie chipselecty vlastne predstavuju aj tak viacmenej len
metodu identifikacie poradia, to sa da riesit aj inak, pridelenim
poradovych cisiel v software napriklad.

Medzicasom som vymyslel metodu, ako so zretazenim MISO/MOSI dosiahnut
volitelne dlzky sprav (ano, kvoli tomu som sa nevyspal). Je to uplne
zbytocna komplikacia, ktoru zakaznik nechce a nikdy ani nebude chciet,
vymyslam to ciste len kvoli Vam; a je to na dlhsie rozpravanie, mozno sa
cez vikend k tomu dostanem. A tiez si to musim odskusat aj na druhom type
STM32 DMA (single-port), s ktorym mam menej skusenosti, a to si vyzaduje
robotu a cas a aj uplne sprosty fyzicky priestor...

Ti chlapi, co odpaluju medzikontinentalne rakety s jadrovymi hlavicami,
sedia v tych najlepsich protijadrovych bunkroch ktore su k dispozicii; a
oni to vedia. V pripade potencialneho odvetneho utoku je to to najlepsie
mozne miesto, kde by mohli byt, urcite odtial utekat nebudu. Navyse,
dostavaju slusny plat a pritom vlastne nikdy nic nerobia (okej, obcas
nejake smiesne cvicenie s cervenym telefonom a tymi klucami). Ziadne SPI.

wek


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

Subject: Re: STM32, SPI daisy chain
    From: Petr Labaj <a class="moz-txt-link-rfc2396E" href="mailto:labaj@volny.cz" moz-do-not-send="true"><labaj@volny.cz></a>
    Date: Thu, 25 May 2023 00:09:24 +0200
      To: <a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:hw-list@list.hw.cz" moz-do-not-send="true">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">Ad fixní délka:
Pravidlo: žádný zákazník nikdy dopředu pořádně neřekne, co všechno dříve
či později bude potřebovat.
Takže vždy je třeba myslet na pozdější rozšiřitelnost.

Ad vstup dat:
Ale jak daný slave ví, co budou poslední data? Vy počítáte s tím, že on
všechno pochytá do bufferu a teprve z něho to zpětně přečte?
Můj způsob je zcela dynamicky. Posílej co chceš, kolik chceš, komunikuj
jednosměrně nebo obousměrně, měj jednoho nebo 20 slaves - prostě cool &
free.

Ad mezikontinentální rakety:
Dva týpci s klíčema je starý způsob. Nejsou lidi, chlapi utíkají před
odvodní komisí. A ti, co už tam jsou, utečou strachem před protiúderem.
Takže rakety je třeba startovat přes SPI.

Ad můj způsob:
Timery netřeba. DMA jen tehdy, když bude komunikace rychlá. Ale to je
stejné jako u Vás.
Jediné, co je navíc, jeden výstupní GPIO pin.
Odměnou za to je téměř neomezený systém.

PL

PS. ARCnet je (byl) moje srdeční záležitost. Psal jsem pro něho drivery
ještě do komerčních Unixů, před érou Linuxu.
Myslím, že jsem tehdy postavil největší ARCnetové sítě v tehdejším
Československu.

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

Dne 24.5.2023 v 23:34 wek napsal(a):
</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"><div dir="auto">--- moj
Uloha znela, fixna dlzka spravy.

Variabilnu dlzku ste si vymysleli Vy, asi by to slo u mna riesit s
nejakymi rozumnymi obmedzeniami ale naco.


</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;"><div dir="auto">Jak daný slave pozná, že data, která mu lezou do vstupu, jsou pro něho?
</div></blockquote><div dir="auto">Posledna sprava je pre neho.

</div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #fcaf3e; padding-left: 1ex;"><div dir="auto">Do vstupu mu jde celý vláčik, a on neví, kolik je slaves
</div></blockquote><div dir="auto">Nepotrebuje to vediet, "posledna" je jednoznacne.


Medzikontinentalne rakety s hlavicami sa nestartuju cez SPI, ale  tak,
ze dvaja tipkovia naraz otocia klucikom.


--- Vas
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").

Ani verzia s fixnou dlzkou spravy nie je uplne jednoducha a asi bez
pinu a timera naviac sa neda urobit v hw.

Vyhodou je mensia spotreba RAM, ale podla zadania ide o 64B (teda v
mojom rieseni 72B).

wek



On 24 May 2023 22:51:46 CEST, Petr Labaj <a class="moz-txt-link-rfc2396E" href="mailto:labaj@volny.cz" moz-do-not-send="true"><labaj@volny.cz></a> wrote:

     Váš:
     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í.
     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".

     Můj:
     - 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
     - start jednoho kola komunikace - master nahodí CS (předtím byl
     neaktivní)
     - první slave přijímá a vysílá data, libovolně dlouho, podle své
     potřeby
     - 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)
</div></blockquote></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" moz-do-not-send="true">www.HW.cz</a>
<a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">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" moz-do-not-send="true">www.HW.cz</a>
<a class="moz-txt-link-abbreviated moz-txt-link-freetext" href="mailto:Hw-list@list.hw.cz" moz-do-not-send="true">Hw-list@list.hw.cz</a>
<a class="moz-txt-link-freetext" href="http://list.hw.cz/mailman/listinfo/hw-list" moz-do-not-send="true">http://list.hw.cz/mailman/listinfo/hw-list</a>
</pre>
      </blockquote>
      <br>
      <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>
  </body>
</html>