After studying this for a few nights, the fog is beginning to clear a bit, but not completely.
On the above mentioned inclinometer (sca61t, pages 11 &12), you send a command and then concurrently it sends back a reply with the data. I think I can see how to send the command, and extend the transmission to 19 clocks so that it can fit in the response by leaving CS low with the [var\19] in SEROUT. What I don't see how to grab those reply bits using SEROUT and SERIN. Each one would execute in order and not catch the response as both share the clock.
Will test further, but I suspect that I might have to resort to the hardware SPI.Code:I VAR WORD D VAR WORD CS_I VAR PORTC.2 ' chip select Inclinomteter CS_D VAR PORTC.3 ' chip select D/A SCK VAR PORTC.5 ' clock SDI VAR PORTC.4 ' data OUT SDO VAR PORTC.7 ' data IN IncIn var word HIGH CS_I HIGH CS_D LOW SCK I = %0001000000000000 'send RDAX & fill to get 11 bits of data D = %0001111111111111 '2x, active, max output for test '*** Inclinometer Commands *********** 'MEAS 00000000 'Measure (Exit self test) 'RWTR 00001000 'R/W Temp 'RDSR 00001010 'Read Status register 'RLOAD 00001011 'relaod NV to o/p 'STX 00001110 'activate self test 'RDAX 00010000 'read acceleration Main: GOSUB IncRdg GOSUB DACout goto main '**** Subs ********************************* ;---- Sub to read the inclinometer ------------------ IncRdg: LOW CS_i ' enable writes to Inclinometer SHIFTOUT SDI,SCK,0,[I\19] 'sends command to READ ' SHIFTIN SDO,SDK,0,[IncIn\11] ' I don't see this working HIGH CS_I PAUSE 5 RETURN ''---- Sub to output to the D/A converter ----- 'DACout: ' LOW CS_D ' enable writes to D/A converter ' SHIFTOUT SDI,SCK,0,[D\16] ' HIGH CS_D ' PAUSE 5 ' return
Any thoughts?
Bo




Bookmarks