LPC11U68 + C rychlost portu

Jaroslav Buchta jaroslav.buchta na hascomp.cz
Úterý Červenec 26 06:18:42 CEST 2016


Ono je nejlepsi kouknout do assembleru, jak to dela. Bez optimalizace 
jsou tam silenosti, kdy se nacitaji stale znovu stejne hodnoty do 
registru, adresuje se neprimo i kdyz to jde primo atp., s optimalizaci 
jsou tam zas silenosti, ze clovek nepochopi, jak to muze vubec fungovat ;-)
20ns odpovida provedeni zapisu na port v jednom cyklu, to je IMHO 
prekvapive dobry vysledek.

Dne 26.07.2016 v 3:03 Pavel Hudecek napsal(a):
> Teď jsem dal "Optimize most" (před tím bylo none).
> Výsledkem je cca 20/20 ns nezávisle na deklaraci, s nepravidelnými 
> prodlouženími na 40 ns.
> Frekvence generovaná v "burstu" je průměrně cca 20 MHz.
> Hrany mají asi 3-5 ns, zde se asi osciloskop, nebo sonda dostala na 
> hranici možností (ADS1102C + PP510).
> Návrat ve foru se zkrátil na cca 250 ns.
>
> PH
>
> -----Původní zpráva----- From: Pavel Hudecek
> tak jsem trochu optimalizoval komunikaci s displejem a vedlejší výsledky
> jsou tyto, kdyby někoho zajímaly:
>
> Za podmínek LPC11U68 / 48 MHz a program ve stylu:
>
> for (n=0; n<1000; n++) {
>    LPC_GPIO->PIN[LED_port] = a;    LPC_GPIO->PIN[LED_port] = b;
>    LPC_GPIO->PIN[LED_port] = a;    LPC_GPIO->PIN[LED_port] = b;
>    LPC_GPIO->PIN[LED_port] = a;    LPC_GPIO->PIN[LED_port] = b;
>    LPC_GPIO->PIN[LED_port] = a;    LPC_GPIO->PIN[LED_port] = b;
>    LPC_GPIO->PIN[LED_port] = a;    LPC_GPIO->PIN[LED_port] = b;
> }
> Přičemž a odpovídá 0 a b odpovídá 1.
> Pro PIN[port] a MPIN[port] jsou a/b typu uint32_t.
> Pro B[port][pin] jsou a/b typu uint8_t.
>
> - Rychlost je stejná pro přístup přes B[port][pin], PIN[port] a 
> MPIN[port].
> - Pokud je a/b deklarované s "register", nebo jsou to #define čísel, je
> rychlost:
> 105/125 ns (0 kratší, 1 delší)
> - Pokud je a/b deklarované obyčejně, je rychlost:
> 170/230 ns
> - Prohozením hodnot a/b se prohodí delší/kratší (zkoumáno jen pro 
> register).
> Tzn se zdá, že levé příkazy jsou rychlejší, než pravé... WTF?
> - Návrat na začátek těla foru (n je uint32_t): 550 ns
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list




Další informace o konferenci Hw-list