 |
www.elektronik.si Forum o elektrotehniki in računalništvu
|
Poglej prejšnjo temo :: Poglej naslednjo temo |
Avtor |
Sporočilo |
gumby Član


Pridružen-a: Sob 28 Apr 2007 12:32 Prispevkov: 4066 Aktiv.: 18.40
|
Objavljeno: Sre Jun 17, 2009 9:52 pm Naslov sporočila: switch() in CCS |
|
|
Nekaj mi nagaja switch() funkcija, namreč pri 32-bitnih spremenljivkah upošteva samo spodnjih 16 bitov. Primer:
Koda: |
int32 code32;
void use_code(void)
{
switch(code32)
{
case 0xbb4400ff:
case 0xbb4420df:
case 0xbb4410ef:
case 0xbb4430cf:
case 0xbb4408f7:
case 0xbb4428d7:
output_high(PIN_C2);
...
|
Tule mi pin aktivira tudi pri vrednosti 0x1d4000ff
V helpu ne piše nič o tem, da bil switch() omejen na 16 bitov, compiler se tudi ne pritožuje. Gledal sem disassembly in tam dejansko samo spodnja dva bajta primerja...
bug? _________________ Tule nisem več aktiven. |
|
Nazaj na vrh |
|
 |
bungee Član


Pridružen-a: Pon 07 Mar 2005 18:49 Prispevkov: 1479 Aktiv.: 6.24 Kraj: Ljubljana
|
Objavljeno: Čet Jun 18, 2009 12:05 am Naslov sporočila: |
|
|
Sem tudi jaz testiral. Imam CCS v4.088 in prav tako naredi samo za 16 bitov. Očitno je bug.
Mogoče velja vprašat na njihovem forumu  |
|
Nazaj na vrh |
|
 |
|
|
Ne, ne moreš dodajati novih tem v tem forumu Ne, ne moreš odgovarjati na teme v tem forumu Ne, ne moreš urejati svojih prispevkov v tem forumu Ne, ne moreš brisati svojih prispevkov v tem forumu Ne ne moreš glasovati v anketi v tem forumu Ne, ne moreš pripeti datotek v tem forumu Ne, ne moreš povleči datotek v tem forumu
|
Uptime: 498 dni
Powered by phpBB © 2001, 2005 phpBB Group
|