Go Down

Topic: shiftOut (Read 618 times) previous topic - next topic

Vincent19

http://arduino.cc/en/Reference/shiftOut

Dear all,
I read this tutorial and I was confused about the MSBFIRST/LSBFIRST. Can anyone provide me an example how to illustrate the difference between this two ? If my number is 00000001, then it will shift the 0 first if it is MSBFIRST ? If my LEDs are numbered 1 to 8 from left to right assuming the most right is the LSB. So, I am confuse here.

Thanks for help :)

CrossRoads

"If my number is 00000001, then it will shift the 0 first if it is MSBFIRST ?"  Yes.

"If my LEDs are numbered 1 to 8 from left to right assuming the most right is the LSB." So number them 7 to 0 from left to right. Then they will match up with your data. The lowest place of anything should always be position 0.
Look at how the data goes thru the shift register as well - from Qa to Qh. So Qa is the LSB and Qh is the MSB.
So your example 00000001 will end with Qh-g-f-e-d-c-b-a as 0-0-0-0-0-0-0-1.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

twang

I get confused to.
what I usually do is just do it with either LSB or MSB first.
if that doesn't work right, just do the other one.
It's a 50 50 chance you'll end up with the right one

Vincent19


"If my number is 00000001, then it will shift the 0 first if it is MSBFIRST ?"  Yes.

"If my LEDs are numbered 1 to 8 from left to right assuming the most right is the LSB." So number them 7 to 0 from left to right. Then they will match up with your data. The lowest place of anything should always be position 0.
Look at how the data goes thru the shift register as well - from Qa to Qh. So Qa is the LSB and Qh is the MSB.
So your example 00000001 will end with Qh-g-f-e-d-c-b-a as 0-0-0-0-0-0-0-1.

So if MSB first, suppose the sequence should be reverse ? Assuming the data shift from left to right. So MSB first means Qh first and Qh will get shifted to the LSB position isnt that ?

Thanks !

CrossRoads

No, the shift register only goes one way, from Qa to Qh.
If you want to shift LSB first, then Qh would end up with the LSB.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Vincent19

Okay I think I get it now. The key is that 'it starts from Qa'

So if my example is 00000001, and order type is MSBFIRST, the 1 will be shift first ?

Thanks ! :)

Vincent19

If I want to shift the number 00000001, then Qa will output 0 and be placed at MSB position and Qh will have value of 1 and position at the LSB ?

Is that what MSBFIRST/LSBFIRST means ?

Thanks !

CrossRoads

As written, MSB - 00000001 - LSB.

MSBFirst results in:
Qh-g-f-e-d-c-b-a are MSB - 0-0-0-0-0-0-0-1 - LSB with MSB/LSB referring to the shift register

LSBFirst results in:
Qh-g-f-e-d-c-b-a are MSB - 1-0-0-0-0-0-0-0 - LSB.

So MSBFIRST/LSBFIRST is a software thing, and you have to check to make sure that is in sync with your hardware.
Designing & building electrical circuits for over 25 years.  Screw Shield for Mega/Due/Uno,  Bobuino with ATMega1284P, & other '328P & '1284P creations & offerings at  my website.

Go Up