SHIFTOUT MSB/LSBFIRST clarification
good day to all in this forum,
I am using PicBasic pro to load an 8 bit shift register and I wrote a very simple program like this:
INCLUDE "MODEDEFS.BAS"
DT var byte
DT=128 ' decimal
SHIFTOUT H_DATA,H_CLK,msbfirst ,[DT\8]
Then I do suppose that the MSB ( in this case "1" ) is transmitted first and then "0000000" is transmitted after it.
By looking to the output stream with a scope, I find that the bit at logic level = high ( dec 128) is shown to the left side of the scope and not at the right side of the scope display.
I am just a little bit confuesd about that: any clarification please ?
Thanks in advance.
bye
Re: SHIFTOUT MSB/LSBFIRST clarification
I haven't done this in a long time but here is a snippet of code I used to send by SPI to a device:
Low PORTA.3 : Pause 10 'CHIP SELECT
ShiftOut PORTC.5,PORTC.3,0,[9254\16] 'playconfig0
ShiftOut PORTC.5,PORTC.3,0,[114\8] '1st play byte
High PORTA.3 : Pause 10 'deselect - end of word
The 0 after portc.3 means send code LSB. A 1 would send it MSB.
Re: SHIFTOUT MSB/LSBFIRST clarification
thanks a lot,
Is your SPI device set to receive MSBfirst or LSBfirst please ?
Bye
1 Attachment(s)
Re: SHIFTOUT MSB/LSBFIRST clarification
time on a scope flows from left to right
Attachment 9052
Re: SHIFTOUT MSB/LSBFIRST clarification
I am so sorry Richard:
if the time flows from left to right, then the first bit sent should be on the right and not to the left of the scope !
Where am I wrong please ?
Bye
1 Attachment(s)
Re: SHIFTOUT MSB/LSBFIRST clarification
which second was recorded first in time sequence ?
Attachment 9053
Re: SHIFTOUT MSB/LSBFIRST clarification
slow your timbase right down , what direction does the dot travel
the dot having writ moves on
Re: SHIFTOUT MSB/LSBFIRST clarification
the first bit sent out by the pic should be on the right ( 9 seconds old )
The last bit sent by the pic should be on the left ( 0 seconds old )
I am sorry for not understanding...
thanks
1 Attachment(s)
Re: SHIFTOUT MSB/LSBFIRST clarification
Re: SHIFTOUT MSB/LSBFIRST clarification
thanks again,
I am sorry for not understand...
If I slow down the scope time base the dot goes from left to right.
So the first bit transmitted by the PIC is always to the right of the scope and the last transmitted by the PIC is shown to the left.
Am I right ?
Then the 9 seconds old bit is the first transmitted by the PIC.
The 0 secs old bit is the last transmitted by the PIC.
Is it right ?
Thanks
Re: SHIFTOUT MSB/LSBFIRST clarification
sorry: I did not tell that I am talking about the PIC output .
Thanks
Re: SHIFTOUT MSB/LSBFIRST clarification
completely wrong , the first bit is on the left
Re: SHIFTOUT MSB/LSBFIRST clarification
could you please check in the real situation:
connect the PIC DATA output to scope ch_1
connect the PIC clock output to scope ch_2 and set the trigger to this channel.
Tranmit bin 00000011 ( dec 3 ) \8 selecting MSB FIRST. and insert a small delay in the main loop just for better scope triggering. My scope is a old style !
What do you see on the scope ? 00000011 or 11000000 ?
Or better: do you see "11" to the right side or to the left side of the scope ?
Thanks for helping
regards
Re: SHIFTOUT MSB/LSBFIRST clarification
Re: SHIFTOUT MSB/LSBFIRST clarification
Hi Peter,
could you please clarify better ?
( my English is not a first language )
Thanks
Re: SHIFTOUT MSB/LSBFIRST clarification
iT IS MY FAULT:
Richard explanation is correct as usual !
Thanks for all.
All the best
regards,
Bye
Re: SHIFTOUT MSB/LSBFIRST clarification
In the first post you said the number was 128 (10000000 in binary) so the MSB is indeed a '1'.
But on the last post you saw a number 3 (00000011 in binary) so the MSB is a '0'.
Ioannis
Re: SHIFTOUT MSB/LSBFIRST clarification
thanks for the response,
I had on my mund a shift register that will receive the serial stream from the PIC and I did associated the scope display to the shift register...
I was in error when I thought that the first bit on the left hand side of the scope is the last transmitted by the PIC: the first bit bit on the left of the scope is the first transmitted and the last bit to the right is the last transmitted.
Again, it was my fault .
Thanks for the assistance.
regards,Bye