Dobry den,<br><br>dakujem za trochu osvetlenia problematiky. Priznam sa, ze ked som to zacal hlbsie citat, tak som akosi intuitivne pochopil z textu, ze problem je v tom, ze raz ten bit set trva 10 cyklov a raz 15... A snazenie nasho experta je zistit, kedy je to 10 a kedy 15. To som fakt netusil, zeby na 160MHz toto mohlo niekoho zaujimat. A uplne absurdne je to v pripade bit-bandingovej I2C na pinoch portu, ktora bezi na 100kHz resp. 400kHz... To len hrana medzi log. urovnami je niekolko instrukcii procesora. <br>
<br>No nic ludia su rozny, a kazdy je uleteny nejako inac.<br><br><div class="gmail_quote">A.<br><br>Dōa 12. apríl 2013 1:02, Tomas Dresler <span dir="ltr"><<a href="mailto:dresler@hw.cz" target="_blank">dresler@hw.cz</a>></span> napísal(-a):<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Hezky receno :-) Hromadu tech detailu lze zjistit tak, ze se na veskerou<br>
dokumentaci ARMu a ST rozprostre ucici algoritmus, ktery da dokromady<br>
vsechny podminky a definice a neco vyplivne.<br>
<br>
Vec se ma tak, ze tak slozity stroj uz je nepopsatelny mimo vyrobni<br>
dokumentaci. Proto se pro analyzu pouziva simulace na urovni RTL pro FPGA,<br>
kde lze nasimulovat log. analyzator v libovolnem bode toho designu.<br>
<br>
Treba prave latence AHB/APB zalezi na tom, kdy o transfer dat pozadate.<br>
Pokud je delici pomer frekvenci 1/4, APB prebere data ve 4. pulzu hodin<br>
AHB, ale procesor je muze vystavit v 1., 2., 3. nebo 4. taktu, takze<br>
latence je 1-4 takty. Je to deterministicke, ale na urovni programu<br>
nevite, jak jste synchronizovani.<br>
<br>
Dtto zapis na nikoli defaultni pamet skrz AHB pridava jeden takt, takze<br>
pokud pouzivate RAM s DMA (asynchronni k jadru), pokud byla pouzita jadrem<br>
v predchozim taktu, je tam 0 WS, ale pokud byla "prepnuta" k DMA, trva<br>
prepnuti k jadru 1 WS. A takovych podminek je tam stovky.<br>
<br>
T.<br>
<div><div class="h5"><br>
> Dobry vecer,<br>
><br>
> nechcem sa do tohoto vlakna moc rypat, pretoze ak mam pravdu povedat, len<br>
> velmi matne tusim o co ide v tomto vlakne. Ked som to dobre pochopil,<br>
> problem je v rychlosti nastavovania nejakych bitov na porte pripojenom na<br>
> jadre Cortexu.<br>
><br>
> Osobne si myslim, ze tieto veci nie su z pohladu praktickeho designu<br>
> relevantne, pretoze ak chcete pocitat cykly medzi bit set a bit reset, tak<br>
> na 168MHz je asi vhodnejsie pouzit FPGA nez tu STM32F4. Druha vec je to,<br>
> preco je to tak. Povedal by som ze to ma background v emc a aj<br>
> potencionalnej identifikacii systemu. Aj ked si myslim, ze to jadro ma tak<br>
> 30 rokov, predsa len pouzivaju sa uz dost vysoke pracovne frekvencie a<br>
> riesit tuto problematiku nie je jednoducha vec ani v dnesnej dobe. Osobne<br>
> si myslim, ze sa tam pouziva viacero netrivialnych technik ovplyvnujucich<br>
> filozofiu celkoveho navrhu toho procesora cez obvodove riesenia az po<br>
> rozne<br>
> vychytavky v layoute. Jednoducho povedane, dali vam 168MHz a dan za to je,<br>
> ze nevidite do vsetkych detailov. Bud s tym dokazete zit, alebo ich<br>
> nepouzivajte.<br>
><br>
> A.<br>
><br>
><br>
> Dōa 11. apríl 2013 12:56, milger <<a href="mailto:milger@pobox.sk">milger@pobox.sk</a>> napísal(-a):<br>
><br>
>> Zda sa, ze tipy mi nevysli...<br>
>> Kazdopadne rad sa dozviem odpoved ak niekto "zamachruje" rozumnym<br>
>> vysvetlenim.<br>
>><br>
>> Milan<br>
>><br>
>><br>
>><br>
>> On 11. 4. 2013 10:37, Jan Waclawek wrote:<br>
>><br>
>>> K odhaleniu tychto veci mal sluzit dnesny ranny prispevok. Ale este<br>
>>> stale<br>
>>> som z toho jelen.<br>
>>><br>
>>> Skusil som while(1) {<br>
>>> __SEV();<br>
>>><br>
>>> GPIOA->BSRRL = (1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->ODR = ~(1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->BSRRL = (1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->ODR = ~(1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->BSRRL = (1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->ODR = ~(1 SHL 2);<br>
>>><br>
>>> __SEV();<br>
>>> __SEV();<br>
>>> __SEV();<br>
>>> __SEV();<br>
>>> __SEV();<br>
>>> __SEV();<br>
>>><br>
>>> GPIOA->BSRRH = (1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->ODR = 1 SHL 2;<br>
>>> __SEV();<br>
>>> GPIOA->BSRRH = (1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->ODR = 1 SHL 2;<br>
>>> __SEV();<br>
>>> GPIOA->BSRRH = (1 SHL 2);<br>
>>> __SEV();<br>
>>> GPIOA->ODR = 1 SHL 2;<br>
>>><br>
>>> __NOP();<br>
>>> __NOP();<br>
>>> __NOP();<br>
>>> __NOP();<br>
>>> __NOP();<br>
>>> __NOP();<br>
>>> }<br>
>>><br>
>>><br>
</div></div>>>> <a href="http://www.efton.sk/STM32/r3.**png" target="_blank">http://www.efton.sk/STM32/r3.**png</a> <<a href="http://www.efton.sk/STM32/r3.png" target="_blank">http://www.efton.sk/STM32/r3.png</a>><br>
<div class="im">>>><br>
>>><br>
>>> wek<br>
>>><br>
>>><br>
>>> ----- Original Message ---------------<br>
>>><br>
>>>> To je hodne poucne, len ma napadlo ci by bol rovnaky vysledok aj pri<br>
>>>> impuze opacnej polarity, t.j. najskor "0" potom "1"?<br>
>>>> Take male percento na objasnenie tejto zahady by som tipol na rozne<br>
>>>> riesenu logiku pre SET a RESET. V tom zmysle ze oneskorenie je rozne.<br>
>>>> A dalsie male percento na vysvetlenie typu "ak zmena sa tyka rovnakej<br>
>>>> logiky(bitov) ako naposledy, usetrime jeden takt na oneskoreni lebo<br>
>>>> nemusime nieco robit". To by sa asi dalo tak isto otestovat.<br>
>>>><br>
>>>><br>
>>>> Milan<br>
>>>><br>
>>>> On 10. 4. 2013 15:21, Jan Waclawek wrote:<br>
>>>><br>
>>>>> SEV je vykonana okamzite, takze potrebujete-li nejak zobrazit<br>
>>>>>> casovou vzdalenost mezi dvema udalostmi, SEV reaguje rychleji (ale<br>
>>>>>> trva 1<br>
>>>>>> HCLK!) nez zapis na port.<br>
>>>>>><br>
>>>>> Tak som si to vyskusal.<br>
>>>>><br>
</div>>>>>> <a href="http://www.efton.sk/STM32/r.**png" target="_blank">http://www.efton.sk/STM32/r.**png</a> <<a href="http://www.efton.sk/STM32/r.png" target="_blank">http://www.efton.sk/STM32/r.png</a>><br>
<div class="im">>>>>> <a href="http://www.efton.sk/STM32/r.c" target="_blank">http://www.efton.sk/STM32/r.c</a><br>
>>>>><br>
>>>>> Hore su tie dva SEV, v strede su tie dva zapisy na port (jeden do<br>
>>>>> nastavovacieho registra, druhy do nulovacieho, t.j. BSRRL/BSRRH),<br>
>>>>> dole<br>
>>>>> su<br>
>>>>> hodiny (HCLK).<br>
>>>>><br>
>>>>> Ten posun zapisu na port voci tym SEV, a najma vzajomny posun tych<br>
>>>>> dvoch<br>
>>>>> zapisov na port - zapisy su od seba vzdialene minimalne 2 clocky<br>
>>>>> vdaka<br>
>>>>> tomu SEV vlozenemu medzi nimi, ale pulz je dlhy len 1 clock - to<br>
>>>>> vsetko<br>
>>>>> je<br>
>>>>> poucne.<br>
>>>>><br>
>>>>> wek<br>
>>>>><br>
</div>>>>>> ______________________________**_________________<br>
<div class="im">>>> HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
>>> <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
</div>>>> <a href="http://list.hw.cz/mailman/**listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/**listinfo/hw-list</a><<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>><br>
>>><br>
>><br>
>> ______________________________**_________________<br>
<div class="im">>> HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
>> <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
</div>>> <a href="http://list.hw.cz/mailman/**listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/**listinfo/hw-list</a><<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a>><br>
<div class="HOEnZb"><div class="h5">>><br>
> _______________________________________________<br>
> HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
> <a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
> <a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
><br>
<br>
<br>
_______________________________________________<br>
HW-list mailing list - sponsored by <a href="http://www.HW.cz" target="_blank">www.HW.cz</a><br>
<a href="mailto:Hw-list@list.hw.cz">Hw-list@list.hw.cz</a><br>
<a href="http://list.hw.cz/mailman/listinfo/hw-list" target="_blank">http://list.hw.cz/mailman/listinfo/hw-list</a><br>
</div></div></blockquote></div><br>