i have tested the setup with arduino board and its working but with the TIVA c launchpad board i am only getting ss , MOSI and CLK as attached but no MISO. ///////////////////////////////////////////////////Arduino code///////////////////////////////////////// #include /* ARDUINO UNO SS: 10 MOSI: 11 MISO:12 SCK:13 */ // Slave Select pins for encoder // Feel free to reallocate these pins to best suit your circuit const int slaveSelectEnc= 10; // These hold the current encoder count. signed long encodercount = 0; void setup() { Serial.begin(9600); // Serial com for data output SPI.beginTransaction(SPISettings(1000000, MSBFIRST, SPI_MODE0)); // SPI Configuration: CLK, Data Shift, SPI Mode initEncoders(); Serial.println ("Encoders Initialized..."); Serial.println ("Encoders Cleared..."); } void loop() { delay(500); // Retrieve current encoder counters encodercount = readEncoder(); Serial.print("Enc: "); Serial.println(encodercount); } void initEncoders() { // Set slave selects as outputs pinMode(slaveSelectEnc, OUTPUT); // Raise select pins // Communication begins when you drop the individual select signsl digitalWrite(slaveSelectEnc,HIGH); SPI.begin(); // Initialize encoder // Negative index input // free-running count mode // x4 quatrature count mode (four counts per quadrature cycle) // NOTE: For more information on commands, see datasheet digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation SPI.transfer(0x88); // Write to MDR0 SPI.transfer(0x00); // Configure x4 quadrature count mode (four counts per quadrature cycle) digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation /*MDR1 is not configured because its default value is 0x00 which is the desired value*/ } int long readEncoder() { // Initialize temporary variables for SPI read unsigned int count_1, count_2, count_3, count_4; long count_value; // Read encoder digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation // SPI.transfer(0x20); SPI.transfer(0x60); // Request count count_1 = SPI.transfer(0x00); // Read highest order byte count_2 = SPI.transfer(0x00); count_3 = SPI.transfer(0x00); count_4 = SPI.transfer(0x00); // Read lowest order byte digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation count_value = (count_1 //#include // Slave Select pins for encoders 1 and 2 // Feel free to reallocate these pins to best suit your circuit const int slaveSelectEnc= PD_2; // These hold the current encoder count. signed long encodercount = 0; void setup() { Serial.begin(9600); // Serial com for data output Serial.println("Encoders settings up."); Serial7.begin(115200); // Serial com for data output Serial7.println("Encoders settings up."); SPI.setModule(2); //SPI.beginTransaction(SPISettings(10000, MSBFIRST, SPI_MODE0)); SPI.setBitOrder(MSBFIRST); SPI.setDataMode(SPI_MODE0); //unsigned int g_ui32SysClock; pinMode(PD_4,OUTPUT); digitalWrite(PD_4,LOW); // Mux pin pinMode(slaveSelectEnc, OUTPUT); digitalWrite(slaveSelectEnc,HIGH); SPI.begin(); digitalWrite(slaveSelectEnc,LOW); // SS Pin SPI.transfer(0x88); // Write to MDR0 SPI.transfer(0x00); // Configure x4 quadrature count mode (four counts per quadrature cycle) digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation //SysCtlClockFreqSet((SYSCTL_XTAL_25MHZ | SYSCTL_OSC_MAIN | SYSCTL_USE_PLL | SYSCTL_CFG_VCO_480), 12000000 ); // clearEncoderCount(); Serial.println("EEncodersncoders Cleared..."); Serial7.println("EEncodersncoders Cleared..."); } void loop() { delay(500); // Retrieve current encoder counters encodercount = readEncoder(); //clearEncoderCount(); Serial.print(" Enc: "); Serial.println(encodercount); Serial7.print(" Enc: "); Serial7.println(encodercount); //delay(500); } void clearEncoderCount() { // Set encoder1's data register to 0 digitalWrite(slaveSelectEnc,HIGH); digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation // Write to DTR SPI.transfer(0x98); // Load data SPI.transfer(0x00); // Highest order byte SPI.transfer(0x00); SPI.transfer(0x00); SPI.transfer(0x00); // lowest order byte digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation delayMicroseconds(100); // provides some breathing room between SPI conversations // Set encoder1's current data register to center digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation SPI.transfer(0xE0); digitalWrite(slaveSelectEnc,HIGH); // Terminate SPI conversation } int long readEncoder() { // Initialize temporary variables for SPI read unsigned int count_1=0, count_2=0, count_3=0, count_4=0; long count_value; // Read encoder //digitalWrite(slaveSelectEnc,HIGH); digitalWrite(slaveSelectEnc,LOW); // Begin SPI conversation //delay(500); //SPI.transfer(0xE8); SPI.transfer(0x60); // Request count count_1 = SPI.transfer(0x00); // Read highest order byte count_2 = SPI.transfer(0x00); count_3 = SPI.transfer(0x00); count_4 = SPI.transfer(0x00); // Read lowest order byte //SPI.transfer(0x20); digitalWrite(slaveSelectEnc,HIGH); Serial.print("count_1 "); Serial.print(count_1 ); Serial.print(" count_2 "); Serial.print(count_2); Serial.print(" count_3 "); Serial.print(count_3 ); Serial.print(" count_4 "); Serial.print(count_4 ); Serial7.print("count_1 "); Serial7.print(count_1 ); Serial7.print(" count_2 "); Serial7.print(count_2); Serial7.print(" count_3 "); Serial7.print(count_3 ); Serial7.print(" count_4 "); Serial7.print(count_4 ); count_value = (count_1 << 8) + count_2; count_value = (count_value << 8) + count_3; count_value = (count_value << 8) + count_4; // count_value = (long) ( (count_1 << 24) | (count_2 << 16) | (count_3 << 8) | (count_4 ) ) ; return count_value; } ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
↧