LPC11U68 + C rychlost portu

Pavel Hudecek edizon na seznam.cz
Úterý Červenec 26 18:48:30 CEST 2016


Bez ní je výsledek asi 100 ms:-)

Ale teď jsem jí zas vypnul, protože mi s ní správně nefunguje I2C, ani debug 
proč I2C zlobí...

PH

-----Původní zpráva----- 
From: Josef Štengl
Testujete to, doufám, oproti původní verzi na optimalizaci alespoň -O3? 
Protože jinak děláte práci za stroj :-)

-------------
Dne 26.7.2016 v 14:58 Pavel Hudecek napsal(a):
> Bingo:-)
>
> 32 ms.
>
> PH
>
> -----Původní zpráva----- From: Jan Waclawek
>
> #include <stdint.h>
> const struct {
>   uint8_t a;
>   uint32_t dat[];
> } fnt = {.dat = {1, 2, 3, 4, 5}};
>
> void ili_wrI16(void);
> void ili_wrP16(void);
>
> volatile uint8_t znak, r, wid;
>
> int main(void) {
>
> for(uint8_t*p8=(uint8_t*)(fnt.dat+znak+r),x=wid,b=1;x--;(b+=b)?0:(p8++,b=1))
> {
>     *p8&b?ili_wrI16():ili_wrP16();
>   }
> }
>
>
>> -----Původní zpráva----- From: Jaromir Sukuba
>> Nemate tam nejako zbytocne vela zatvoriek? ;-)
>>
>> http://list.hw.cz/pipermail/hw-list/2016-July/490808.html
>>
>> Dňa 26. júla 2016, 12:21, Pavel Hudecek <edizon na seznam.cz> napísal/a:
>>>
>>> p8 =(uint8_t *)  &(fnt.dat[znak+r]);
>>> for (x=0, b=0; x<wid; x++) {
>>>    if (p8[b] & (1<<(x&7))) ili_wrI16(); else ili_wrP16();
>>>    if ((x&7)==7) b++; // dalsi byte
>>> } 



Další informace o konferenci Hw-list