LPC11U68 + C rychlost portu

Jan Waclawek konfera na efton.sk
Úterý Červenec 26 15:09:40 CEST 2016


Smarja...

Ale ked uz hrame tuto hru, 
for(unsigned*p8=(unsigned*)(fnt.dat+znak+r),x=wid,b=1;x--;(b+=b)?0:(p8++,b=1))
*p8&b?ili_wrI16():ili_wrP16();

by snad malo byt lepsie.

Ale nieco sa mi mari, ze u M0+ to pole musi byt zarovnane, ci?

wek


----- Original Message ---------------
>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 at 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