[elektro] megint C
Skandar Graun
sgraun at gmail.com
Tue Dec 4 13:48:05 CET 2012
Azért, mert SCLK és SDO portbitek.
Ez egy SPI rutin.
2012. december 4. 11:19 Ábrahám Gábor írta, <agabor2 at freemail.hu>:
> A feltételes értékadás valami "változó = kif1 ? kif2 : kif3;" alakú.
> A szerkezet úgy működik, hogy először kiértékeli a kif1 kifejezést. Ha
> ennek
> értéke
> nem nulla (igaz), akkor a kif2 kiértékelése következik, egyébként pedig a
> kif3 kiértékelése.
> A program kif2 és kif3 közül csak az egyiket értékeli ki, és ez lesz a
> feltételes kifejezés értéke.
>
> Ezért működik mindkettő, bár SDO=kiki&&1?0:1; a jobb szerintem.
>
> Az, hogy SDO billeg vagy sem, az a deklarálásától, meg az optimalizálástól
> függ.
> SCLK billeg?
>
> Ha megnézed a rutinodat
>
> void DataOut(BYTE kimegy)
> {
> int nCount = 8;
> char kiki;
> SCLK = 0;
> kiki = kimegy;
> while(nCount--)
> {
> (kiki && 1) ? SDO = 0 : SDO = 1;
> SCLK = 1;
> kiki = (kiki >> 1);
> SCLK = 0;
> }
>
>
> SCLK a ciklus végén garantáltan 0, nCount és kiki értékétől függetlenül.
> Ha nem volatile, csak egy sima stack változó, miért kéne minden ciklusban
> kétszer értéket adni neki?
>
> Gábor
>
>
>
> ----- Eredeti üzenet -----
> From: Skandar Graun
> Sent: Tuesday, December 04, 2012 10:53 AM
> To: elektro at tesla.hu
> Subject: Re: [elektro] megint C
>
> Na, pudingpróba történt.
> Az Arnold verziója syntax error, nem keresgéltem most benne.
> A zárójelbe tett értékekkel jó és gyors." (kiki&&1)?(SDO=0):(SDO=1);"
>
> A "SDO=kiki&&1?0:1;" módon lefordult, elindult, de kétszer olyan hosszú
> futási idővel bír.
>
> Ellenben az érdekes az, hogy a szkópon meg nem billeg az SDO...
> Beírtam a kiki-be 0x0055-öt, de nem látom
>
> Most vagy a shiftelésem ad rossz értéket, vagy valami oknál fogva a
> kiértékelés rossz.
> Az SDO-t már teszteltem
>
> 2012. december 4. 10:39 potyo írta, <potyo.ada at gmail.com>:
>
> > (kiki&&1)?(SDO=0):(SDO=1);
> -----------------------------------------
> elektro[-flame|-etc]
>
>
>
> -----
> A(z) üzenetben nem található vírus.
> Ellenőrizte: AVG - www.avg.com
> Verzió: 2012.0.2221 / Vírus adatbázis: 2634/5435 - Kiadás dátuma:
> 2012.12.03.
>
> -----------------------------------------
> elektro[-flame|-etc]
>
More information about the Elektro
mailing list