A B
/
3D_HALL_DEMO
3d hall demo code, as of 02092016
main.cpp@0:644d21a11da3, 2016-09-02 (annotated)
- Committer:
- adambalkan
- Date:
- Fri Sep 02 06:55:21 2016 +0000
- Revision:
- 0:644d21a11da3
3d hall demo code 02092016
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
adambalkan | 0:644d21a11da3 | 1 | #include "mbed.h" |
adambalkan | 0:644d21a11da3 | 2 | #include "USBSerial.h" |
adambalkan | 0:644d21a11da3 | 3 | |
adambalkan | 0:644d21a11da3 | 4 | USBSerial pc; |
adambalkan | 0:644d21a11da3 | 5 | |
adambalkan | 0:644d21a11da3 | 6 | DigitalOut ASIC_CS(P0_2); |
adambalkan | 0:644d21a11da3 | 7 | DigitalOut CNV_ADC(P1_26); |
adambalkan | 0:644d21a11da3 | 8 | |
adambalkan | 0:644d21a11da3 | 9 | |
adambalkan | 0:644d21a11da3 | 10 | |
adambalkan | 0:644d21a11da3 | 11 | |
adambalkan | 0:644d21a11da3 | 12 | |
adambalkan | 0:644d21a11da3 | 13 | SPI ASIC(P0_9, P0_8, P1_29);//MOSI, MISO, SCLK |
adambalkan | 0:644d21a11da3 | 14 | SPI ADC(P1_22, P1_21, P1_20);// MOSI, MISO, SCLK //ADC LTC2311-16 |
adambalkan | 0:644d21a11da3 | 15 | |
adambalkan | 0:644d21a11da3 | 16 | |
adambalkan | 0:644d21a11da3 | 17 | int sixteen_bit_result; |
adambalkan | 0:644d21a11da3 | 18 | int ASIC_SPI_REGISTER; |
adambalkan | 0:644d21a11da3 | 19 | char command, p1, p2, p3, p4; |
adambalkan | 0:644d21a11da3 | 20 | void variable_defaults() |
adambalkan | 0:644d21a11da3 | 21 | { |
adambalkan | 0:644d21a11da3 | 22 | ASIC_SPI_REGISTER = (0x0000); |
adambalkan | 0:644d21a11da3 | 23 | ASIC_CS=1; |
adambalkan | 0:644d21a11da3 | 24 | CNV_ADC=1; |
adambalkan | 0:644d21a11da3 | 25 | } |
adambalkan | 0:644d21a11da3 | 26 | |
adambalkan | 0:644d21a11da3 | 27 | |
adambalkan | 0:644d21a11da3 | 28 | int READ_ADC() // sets the value of MCP4922 DAC channel A |
adambalkan | 0:644d21a11da3 | 29 | { |
adambalkan | 0:644d21a11da3 | 30 | int response= ADC.write(0); // write byte |
adambalkan | 0:644d21a11da3 | 31 | return response; |
adambalkan | 0:644d21a11da3 | 32 | } |
adambalkan | 0:644d21a11da3 | 33 | |
adambalkan | 0:644d21a11da3 | 34 | |
adambalkan | 0:644d21a11da3 | 35 | void Send_ASIC_SPI(char to_send) |
adambalkan | 0:644d21a11da3 | 36 | { |
adambalkan | 0:644d21a11da3 | 37 | ASIC_CS=0; |
adambalkan | 0:644d21a11da3 | 38 | int junk = ASIC.write(to_send); |
adambalkan | 0:644d21a11da3 | 39 | ASIC_CS=1; |
adambalkan | 0:644d21a11da3 | 40 | } |
adambalkan | 0:644d21a11da3 | 41 | |
adambalkan | 0:644d21a11da3 | 42 | int main() { |
adambalkan | 0:644d21a11da3 | 43 | variable_defaults(); |
adambalkan | 0:644d21a11da3 | 44 | ASIC.format(8, 1);// the ASIC should operate in SPI mode 1 |
adambalkan | 0:644d21a11da3 | 45 | ADC.format(16, 2);// the ADC should operate in SPI mode 3 |
adambalkan | 0:644d21a11da3 | 46 | |
adambalkan | 0:644d21a11da3 | 47 | while(1) { |
adambalkan | 0:644d21a11da3 | 48 | if (pc.readable()){ |
adambalkan | 0:644d21a11da3 | 49 | command = pc.getc(); // Data from PC (command) |
adambalkan | 0:644d21a11da3 | 50 | p1 = pc.getc(); // Data from PC (param p1) |
adambalkan | 0:644d21a11da3 | 51 | p2 = pc.getc(); // Data from PC (param p2) |
adambalkan | 0:644d21a11da3 | 52 | p3 = pc.getc(); // Data from PC (param p2) |
adambalkan | 0:644d21a11da3 | 53 | p4 = pc.getc(); // Data from PC (param p2) |
adambalkan | 0:644d21a11da3 | 54 | int scrap = pc.getc(); // Carriage Return |
adambalkan | 0:644d21a11da3 | 55 | |
adambalkan | 0:644d21a11da3 | 56 | if (command=='A') // update ASIC SPI REGISTER |
adambalkan | 0:644d21a11da3 | 57 | { |
adambalkan | 0:644d21a11da3 | 58 | ASIC_SPI_REGISTER=0x0000; //clear register |
adambalkan | 0:644d21a11da3 | 59 | ASIC_SPI_REGISTER = ASIC_SPI_REGISTER|p2<<16; |
adambalkan | 0:644d21a11da3 | 60 | ASIC_SPI_REGISTER = ASIC_SPI_REGISTER|p3<<8; |
adambalkan | 0:644d21a11da3 | 61 | ASIC_SPI_REGISTER = ASIC_SPI_REGISTER|p4; |
adambalkan | 0:644d21a11da3 | 62 | Send_ASIC_SPI((p2)); |
adambalkan | 0:644d21a11da3 | 63 | Send_ASIC_SPI((p3)); |
adambalkan | 0:644d21a11da3 | 64 | Send_ASIC_SPI((p4)); |
adambalkan | 0:644d21a11da3 | 65 | // pc.printf("%d\n",ASIC_SPI_REGISTER); |
adambalkan | 0:644d21a11da3 | 66 | // pc.printf("%d\n",0xff&(ASIC_SPI_REGISTER>>16)); |
adambalkan | 0:644d21a11da3 | 67 | // pc.printf("%d\n",0xff&(ASIC_SPI_REGISTER>>8)); |
adambalkan | 0:644d21a11da3 | 68 | // pc.printf("%d\n",0xff&(ASIC_SPI_REGISTER)); |
adambalkan | 0:644d21a11da3 | 69 | } |
adambalkan | 0:644d21a11da3 | 70 | else if (command=='a') // read adc value |
adambalkan | 0:644d21a11da3 | 71 | { |
adambalkan | 0:644d21a11da3 | 72 | pc.printf("%d,%d\n",(sixteen_bit_result>>8)&0xff,(sixteen_bit_result&0xff)); |
adambalkan | 0:644d21a11da3 | 73 | } |
adambalkan | 0:644d21a11da3 | 74 | |
adambalkan | 0:644d21a11da3 | 75 | } |
adambalkan | 0:644d21a11da3 | 76 | else |
adambalkan | 0:644d21a11da3 | 77 | { |
adambalkan | 0:644d21a11da3 | 78 | //CNV_ADC=0; |
adambalkan | 0:644d21a11da3 | 79 | // wait_us(100); |
adambalkan | 0:644d21a11da3 | 80 | // pc.printf("reading adc...\n"); |
adambalkan | 0:644d21a11da3 | 81 | //sixteen_bit_result = 0; |
adambalkan | 0:644d21a11da3 | 82 | CNV_ADC=1; |
adambalkan | 0:644d21a11da3 | 83 | //wait_us(1); |
adambalkan | 0:644d21a11da3 | 84 | CNV_ADC=0; |
adambalkan | 0:644d21a11da3 | 85 | sixteen_bit_result = ADC.write(0); |
adambalkan | 0:644d21a11da3 | 86 | //wait_us(1); |
adambalkan | 0:644d21a11da3 | 87 | CNV_ADC=1; |
adambalkan | 0:644d21a11da3 | 88 | //ADC.format(16, 0);// the ADC should operate in SPI mode |
adambalkan | 0:644d21a11da3 | 89 | } |
adambalkan | 0:644d21a11da3 | 90 | |
adambalkan | 0:644d21a11da3 | 91 | } |
adambalkan | 0:644d21a11da3 | 92 | } |