OK first off I know my code is horrible and I have no intention of becoming a professional coder so I'm not going to change that. But to the point, I'm trying to send the number 1, wait a second, the number 2, wait a second, the number 3 then repeat, and have an LED light up based on the # received. I haven't gotten a response from the receiving end no matter what I try. What am I missing here? FYI the most complex thing I've interfaced before these is a 1kbit i2c eeprom so this is a bit over my head. The LED for the number 2 does light up dimly whenever power is connected. Power supply is 3.3 volts. Do these need pull up/down resistors? Did I miss a register? How do I select the data pipe to use, or the addres to send to? I couldn't find any answers in the datasheet or the diyembedded tutorial, and the code examples I have found have all used hardware level SPI and been beyond my understanding.
The address for pipe 1 is "aaaaa" and I've tried to disable every advanced feature on the chip to simplify things. By the way, when I copied and pasted the code, it cut off the first part of my commands. (101010 turns into 101010) WTF??
TX code:
Code:
define osc 4
a var byte
csn var portc.1
transmit var portc.3
so var portc.5
si var portc.2
sck var portc.4
high csn
pause 100
low transmit
low csn
shiftout si, sck, 0, [10000, 000000]
high csn
pause 5
low csn
shiftout si, sck, 0, [101010, "a", "a", "a", "a", "a"]
high csn
pause 5
low csn
shiftout si, sck, 0, [110001, 000001]
high csn
do
low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 000001]
high csn
high transmit
pause 10
low transmit
pause 1000
low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 000010]
high csn
high transmit
pause 10
low transmit
pause 1000
low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 000011]
high csn
high transmit
pause 10
low transmit
pause 1000
loop
RX code:
Code:
define osc 4
#config
__config H'3F46'
#endconfig
a var byte
csn var porta.2
receive var portb.0
so var portb.3
si var portb.2
sck var portb.1
high csn
pause 100
low csn
shiftout si, sck, 0, [10000, 000000]
high csn
pause 5
low csn
shiftout si, sck, 0, [101010, "a", "a", "a", "a", "a"]
high csn
pause 5
low csn
shiftout si, sck, 0, [110001, 000001]
high csn
do
low receive
low csn
shiftout si, sck, 0, [100000, "a", "a", "a", "a", "a", 010101]
shiftin so, sck, 0, [a]
high csn
high receive
pause 10
if a = 1 then
high portb.4
low portb.5
low portb.6
elseif a = 2 then
high portb.5
low portb.4
low portb.5
elseif a = 3 then
high portb.6
low portb.4
low portb.5
else
high portb.4
high portb.5
high portb.6
endif
pause 20
loop
Bookmarks