pnielsen
Member level 2
I was able to get the following code to zero all channels. But trying to read real voltages on all 4 channels?
Code is written for Cypress:
Code is written for Cypress:
Code C - [expand] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 #include <device.h> uint32 Readvalue[4]; uint8 dummyvar; uint8 i; void main() { /* Place your initialization/startup code here (e.g. MyInst_Start()) */ CyGlobalIntEnable; /* Uncomment this line to enable global interrupts. */ SPIM_Start(); SPIM_ClearTxBuffer(); SPIM_ClearRxBuffer(); // LCD_Char_1_Start(); SS_Write(0); //digitalWrite(ADCCS, LOW); SPIM_WriteTxData(0x60); //SPI.transfer(B01100000); //address SPIM_WriteTxData(0x34); //SPI.transfer(command1); command1 = B00110100 while(!(SPIM_ReadTxStatus() & SPIM_STS_SPI_DONE)); SS_Write(1); //digitalWrite(ADCCS, HIGH); // For reading 3 bytes of data and sending a command byte. SS_Write(0); //digitalWrite(ADCCS, LOW); CyDelayUs(1); //Maximum time needed for the Output pin to get enabled is 20nsec, giving a delay of 1usec. //if (digitalRead(MISO) == LOW) { // ADC Converter ready ? SPIM_WriteTxData(0xF0); //SPI.transfer(B11110000); while(!(SPIM_ReadTxStatus() & SPIM_STS_SPI_DONE)); SPIM_ClearRxBuffer(); //Read buffer will have two + one bytes of data, so clear the RX FIFO before reading 24 bits of data as you need. for(i=0;i<4;i++) // Three 8 bit Write/Reads clears memory registers { SPIM_WriteTxData(0x00); //b0=SPI.transfer(0); SPIM_WriteTxData(0x00); //b0=SPI.transfer(0); SPIM_WriteTxData(0x00); //b0=SPI.transfer(0); (24 dummy/ zero bits to be sent) while(!(SPIM_ReadTxStatus() & SPIM_STS_SPI_DONE)); // Wait till the three bytes are sent. Or check the RXStatus if some data has been received, but that doesn't tell if all 3 bytes have been received. Thus check when the Tx FIFO is sent completly. dummyvar = SPIM_ReadRxData(); Readvalue[i]|=dummyvar; Readvalue[i]<<=8; dummyvar = SPIM_ReadRxData(); Readvalue[i]|=dummyvar; Readvalue[i]<<=8; dummyvar = SPIM_ReadRxData(); Readvalue[i]|=dummyvar; // LCD_Char_1_Position(0,0) ; // LCD_Char_1_PrintString(i); ? // if i = 0 // { // LCD_Char // } // May need UNION statement? } CyDelayUs(10000); SS_Write(1); CyDelayUs(1); for(;;) { } } /* [] END OF FILE */ // Will use RS232 for com. Then RS232 to USB converter? Check Labview
Last edited by a moderator: