Thanks mackrackit... I just found that out as you posted...
Pity no-one has example code of these modules in picbasic.. would make my learning procedure easier...
Thanks mackrackit... I just found that out as you posted...
Pity no-one has example code of these modules in picbasic.. would make my learning procedure easier...
Have you just tried to send this binary string with shiftout?
I think there is not much needed to make it work. Just send the string. Serout will not work here.
Ioannis
Ioannis,
I have not used shiftout before... I have just tried..
This did not change the osc... still 1Mhz. Is my syntax ok?Code:SCK var portb.6 SDO var portb.7 shiftout SDO, SCK, 1, [%1100000011110111]
If you check it with the manual, I understand that you cannot send a binary string that way. You have to use, as with most of the commands, a variable. Either byte or word size defined on top.
So put the string in two byte variables or a word sized variable and then send it out with shiftout command. Check also if MSB or LSB is needed by the module.
The 1100000011110111 string is exaclty 16bits.
Ioannis
There is an example on the meLabs website showing how to use the synchronous serial port hardware to read/write from/to an SPI slave (e.g. RF12).Also, here is a link to a BasCOM program written for the RF12. While BasCOM is not PBP and an AVR chip is not a PIC, it should still give you a good understanding of what you need to do.
Last edited by dhouston; - 9th June 2008 at 12:49.
Ioannis,
I realised this not long after I posted.. I tried the following with no difference in results..
Tried with the HEX, and the binary values.Code:dout var word dout = $C0F7 shiftout SDO, SCK, 1, [dout]
I don't think it matters, but also tried [dout\16]
Dhouston,
Thanks for the links, I will study them closely tomorrow.
Thank for the link.
The program is written in German... but it is a great help.
regards,
Ambrogio
Hi,
Is this thread still open?
I would like to ask questions
Camerart
Nops in this function are a delay. The function (subroutine as you worked out) sends a single zero value out of the SPI bus.
If you were to set SCK low, and then high again in the very next instruction, the receiving device might miss the signal.
Especially if the external device runs slower than the transmitting device. You can use @nop in PBP.
Since there are several flavours of SPI, it would be better to reproduce this then use PBP SHIFTOUT (unless it’s already working).
They are really only turning two port bits on & off.
Code:writezero: portb.something = 0’ clear SPI data portb.something = 0’ clear clock pin, the receiver will look at the value of the SPI data bit now. delay portb.something = 1’ set the clock pin, the receiver will look for the next bit on the next rising edge (next time you call this function, or the writeone function).Code:void Write0( void ) { SDI=0; SCK=0; NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); NOP(); SCK=1; NOP(); }
Last edited by Art; - 8th October 2016 at 10:50.
Bookmarks