<html><head></head><body><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 <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;">
<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í. ;-)<br><br>Takže asi naposled, jen shrnutí:<br>- metoda Token Passing není nic exotického, ale celkem běžně používaná metoda<br>- 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.<br>- 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)<br>- 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)<br>- není žádný důvod, proč by to nemělo fungovat na jakémkoli typu procesoru, starém i budoucím, tedy ochrana investic<br>- 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)<br><br>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.<br>Tak na co tam živit nějaké zbytečné chlapy.<br>SPI forever. ;-)<br><br>PL<br><br>**********************<br><br>Dne 25.5.2023 v 14:18 Jan Waclawek napsal(a):<br></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<br>či později bude potřebovat.<br>Takže vždy je třeba myslet na pozdější rozšiřitelnost.<br></div></blockquote><div dir="auto">Premysliet mozno, ale urcite netreba robit prilis velke vylepsenia.<br><br>A treba zacat s proof-of-concept vecami, aby sa zasadne problemy ukazali<br>hned. Napriklad taka metoda zretazenia chipselectov... na papieri to<br>vyzera dobre, ale ak sa to zacne robit, tak sa rychlo ukaze, aka blbost to<br>bola... ;-)<br><br>Ako vravim, zadanie bolo, ze transakcia ma prebehnut automaticky, bez<br>nejakeho saskovania v software. Ak sa maju veci robit v software, tak to<br>pokojne mozu byt vsetci postupne master, presne tak ako sa to pri<br>odovzdavani tokenov robi, a vobec netreba riesit ziadne zretazovanie<br>chipselectov. Tie chipselecty vlastne predstavuju aj tak viacmenej len<br>metodu identifikacie poradia, to sa da riesit aj inak, pridelenim<br>poradovych cisiel v software napriklad.<br><br>Medzicasom som vymyslel metodu, ako so zretazenim MISO/MOSI dosiahnut<br>volitelne dlzky sprav (ano, kvoli tomu som sa nevyspal). Je to uplne<br>zbytocna komplikacia, ktoru zakaznik nechce a nikdy ani nebude chciet,<br>vymyslam to ciste len kvoli Vam; a je to na dlhsie rozpravanie, mozno sa<br>cez vikend k tomu dostanem. A tiez si to musim odskusat aj na druhom type<br>STM32 DMA (single-port), s ktorym mam menej skusenosti, a to si vyzaduje<br>robotu a cas a aj uplne sprosty fyzicky priestor...<br><br>Ti chlapi, co odpaluju medzikontinentalne rakety s jadrovymi hlavicami,<br>sedia v tych najlepsich protijadrovych bunkroch ktore su k dispozicii; a<br>oni to vedia. V pripade potencialneho odvetneho utoku je to to najlepsie<br>mozne miesto, kde by mohli byt, urcite odtial utekat nebudu. Navyse,<br>dostavaju slusny plat a pritom vlastne nikdy nic nerobia (okej, obcas<br>nejake smiesne cvicenie s cervenym telefonom a tymi klucami). Ziadne SPI.<br><br>wek<br><br><br>----- Original Message ---------------<br><br>Subject: Re: STM32, SPI daisy chain<br>    From: Petr Labaj <labaj@volny.cz><br>    Date: Thu, 25 May 2023 00:09:24 +0200<br>      To: hw-list@list.hw.cz<br><br></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:<br>Pravidlo: žádný zákazník nikdy dopředu pořádně neřekne, co všechno dříve<br>či později bude potřebovat.<br>Takže vždy je třeba myslet na pozdější rozšiřitelnost.<br><br>Ad vstup dat:<br>Ale jak daný slave ví, co budou poslední data? Vy počítáte s tím, že on<br>všechno pochytá do bufferu a teprve z něho to zpětně přečte?<br>Můj způsob je zcela dynamicky. Posílej co chceš, kolik chceš, komunikuj<br>jednosměrně nebo obousměrně, měj jednoho nebo 20 slaves - prostě cool &<br>free.<br><br>Ad mezikontinentální rakety:<br>Dva týpci s klíčema je starý způsob. Nejsou lidi, chlapi utíkají před<br>odvodní komisí. A ti, co už tam jsou, utečou strachem před protiúderem.<br>Takže rakety je třeba startovat přes SPI.<br><br>Ad můj způsob:<br>Timery netřeba. DMA jen tehdy, když bude komunikace rychlá. Ale to je<br>stejné jako u Vás.<br>Jediné, co je navíc, jeden výstupní GPIO pin.<br>Odměnou za to je téměř neomezený systém.<br><br>PL<br><br>PS. ARCnet je (byl) moje srdeční záležitost. Psal jsem pro něho drivery<br>ještě do komerčních Unixů, před érou Linuxu.<br>Myslím, že jsem tehdy postavil největší ARCnetové sítě v tehdejším<br>Československu.<br><br>**********************<br><br>Dne 24.5.2023 v 23:34 wek napsal(a):<br></div><blockquote class="gmail_quote" style="margin: 0pt 0pt 1ex 0.8ex; border-left: 1px solid #8ae234; padding-left: 1ex;"><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<br>nejakymi rozumnymi obmedzeniami ale naco.<br><br><br></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?<br></div></blockquote><div dir="auto">Posledna sprava je pre neho.<br><br></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<br></div></blockquote><div dir="auto">Nepotrebuje to vediet, "posledna" je jednoznacne.<br><br><br>Medzikontinentalne rakety s hlavicami sa nestartuju cez SPI, ale  tak,<br>ze dvaja tipkovia naraz otocia klucikom.<br><br><br>--- Vas<br>Poziadavka znela, cela transakcia prebehne v hardware. Ten Vas postup<br>v hardware date len za cenu pinov, timerov a DMA naviac, a mate<br>obmedzenie na rychlost SPI (lebo master musi robit medzery medzi<br>kazdym byte, kedze nevie, kedy nastava "prehodenie slave").<br><br>Ani verzia s fixnou dlzkou spravy nie je uplne jednoducha a asi bez<br>pinu a timera naviac sa neda urobit v hw.<br><br>Vyhodou je mensia spotreba RAM, ale podla zadania ide o 64B (teda v<br>mojom rieseni 72B).<br><br>wek<br><br><br><br>On 24 May 2023 22:51:46 CEST, Petr Labaj <labaj@volny.cz> wrote:<br><br>     Váš:<br>     Jak daný slave pozná, že data, která mu lezou do vstupu, jsou pro<br>     něho? Do vstupu mu jde celý vláčik, a on neví, kolik je slaves a<br>     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<br>     obsah, který on vyhodnotí jako příkaz "odstartuj mezikontinentální<br>     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<br>     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<br>     neaktivní)<br>     - první slave přijímá a vysílá data, libovolně dlouho, podle své<br>     potřeby<br>     - až dokončí svou komunikaci, nahodí CS_OUT a vypne své SPI<br>     (master má stále CS aktivní, teď už má trvale aktivní CS_OUT i<br>     tento první slave)<br></div></blockquote></blockquote><div dir="auto"><br></div></blockquote><div dir="auto"><hr>HW-list mailing list  -  sponsored by www.HW.cz<br>Hw-list@list.hw.cz<br><a href="http://list.hw.cz/mailman/listinfo/hw-list">http://list.hw.cz/mailman/listinfo/hw-list</a><br><br></div></pre></blockquote></div></body></html>