3d hall demo code, as of 02092016

Dependencies:   USBDevice mbed

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?

UserRevisionLine numberNew 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 }