-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
Hi all,
I'm writing an interface to a chip which provides its data via a shift
register.
It looks like that shifting ones in the lower 16Bit of an unsigned long
works fine. A bit shifted into the higher 16 Bits just gets lost. Is
this a known issue or maybe a sw-error on my side that I've just
overseen?
My code looks in principle like:
- -----
unsigned long data=0;
unsigned char n;
for (i=0; i<25; i++){
// set clock high
n = P1IN & 0x1;
// set clock low
if(n){
data |= 1; // shift in a one
data << 1;
}else{
data <<1; // shift in a zero
}
printf("%x ", data);
}
- ----
For a given input stream the output looks like: 2 4 8 10 20 40 82 106
20c 418 830 1060 20c0 4180 8300 600 c00 1800 3000 6000 c000 8000 0 0
One can see that after shifting the next bit into 0x8000 the result is
0 but should be 0x10000.
Thanks for your help,
Peter
P.S: I use msp430-gcc version 3.2.3 on a windows box
Peter Mueller
peter.o.muel...@gmx.de
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.2.3 (Darwin)
iD8DBQFBti/kUzCcwYQMTJoRAq8SAJ9wGEdP8WdecbhenUf4QXGWvg/+fQCfXyWu
Bcls7NaUVSda+E0cH0HghPY=
=wx9e
-----END PGP SIGNATURE-----