Sample program for lpc1768 with 8ch ADC and Library TRP105F_Spline.
Dependencies: mbed TRP105F_Spline
main.cpp@0:b76e3288e79a, 2016-06-01 (annotated)
- Committer:
- aktk
- Date:
- Wed Jun 01 05:39:10 2016 +0000
- Revision:
- 0:b76e3288e79a
- Child:
- 1:b53d82528534
?? SPI ;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aktk | 0:b76e3288e79a | 1 | #include "mbed.h" |
aktk | 0:b76e3288e79a | 2 | #include "TRP105F_Spline.h" |
aktk | 0:b76e3288e79a | 3 | |
aktk | 0:b76e3288e79a | 4 | Serial pc(USBTX, USBRX); // tx, rx ( the usb serial communication ) |
aktk | 0:b76e3288e79a | 5 | extern AnalogIn g_Sensor_Voltage; |
aktk | 0:b76e3288e79a | 6 | SPI spi; // mosi(out), miso(in), sclk(clock) |
aktk | 0:b76e3288e79a | 7 | DigitalOut cs; // cs (the chip select signal) |
aktk | 0:b76e3288e79a | 8 | DigitalOut myled1(LED1),myled2(LED2); |
aktk | 0:b76e3288e79a | 9 | Timer t; |
aktk | 0:b76e3288e79a | 10 | |
aktk | 0:b76e3288e79a | 11 | |
aktk | 0:b76e3288e79a | 12 | // For SPI |
aktk | 0:b76e3288e79a | 13 | int DAread(int channel) |
aktk | 0:b76e3288e79a | 14 | { |
aktk | 0:b76e3288e79a | 15 | int command_high=0x06|((channel&0x04)>>2); |
aktk | 0:b76e3288e79a | 16 | int command_low=(channel&0x03)<<14; |
aktk | 0:b76e3288e79a | 17 | __disable_irq(); // 割り込み禁止 |
aktk | 0:b76e3288e79a | 18 | cs = 0; |
aktk | 0:b76e3288e79a | 19 | spi.write(command_high); |
aktk | 0:b76e3288e79a | 20 | int resultbyte=spi.write(command_low) & 0xfff; |
aktk | 0:b76e3288e79a | 21 | cs = 1; |
aktk | 0:b76e3288e79a | 22 | __enable_irq(); // 割り込み許可 |
aktk | 0:b76e3288e79a | 23 | return(resultbyte); |
aktk | 0:b76e3288e79a | 24 | } |
aktk | 0:b76e3288e79a | 25 | |
aktk | 0:b76e3288e79a | 26 | class SPI_TRP105FS |
aktk | 0:b76e3288e79a | 27 | { |
aktk | 0:b76e3288e79a | 28 | TRP105FS trp(5); |
aktk | 0:b76e3288e79a | 29 | unsigned int channel; |
aktk | 0:b76e3288e79a | 30 | |
aktk | 0:b76e3288e79a | 31 | void setSample(unsigned short arg_x) { |
aktk | 0:b76e3288e79a | 32 | trp.setSample(arg_x, (unsigned short)DAread(channel)); |
aktk | 0:b76e3288e79a | 33 | } |
aktk | 0:b76e3288e79a | 34 | void calibrate(){ |
aktk | 0:b76e3288e79a | 35 | trp.calibrate(); |
aktk | 0:b76e3288e79a | 36 | } |
aktk | 0:b76e3288e79a | 37 | unsigned short get |
aktk | 0:b76e3288e79a | 38 | } |
aktk | 0:b76e3288e79a | 39 | TRP105FS senseor[8]; |
aktk | 0:b76e3288e79a | 40 | int main() { |
aktk | 0:b76e3288e79a | 41 | // Setup the spi for 7 bit data, high steady state clock, |
aktk | 0:b76e3288e79a | 42 | // second edge capture, with a 1MHz clock rate |
aktk | 0:b76e3288e79a | 43 | spi.format(16,0); |
aktk | 0:b76e3288e79a | 44 | spi.frequency(1000000); |
aktk | 0:b76e3288e79a | 45 | |
aktk | 0:b76e3288e79a | 46 | myled1 = 1; |
aktk | 0:b76e3288e79a | 47 | //pc.printf("start\n"); |
aktk | 0:b76e3288e79a | 48 | pc.printf("\nload save-data or calibration[l/c]>"); |
aktk | 0:b76e3288e79a | 49 | if(pc.getc() == 'l'){ |
aktk | 0:b76e3288e79a | 50 | pc.printf("\n"); |
aktk | 0:b76e3288e79a | 51 | //sensor.loadSetting(); |
aktk | 0:b76e3288e79a | 52 | sensor0.loadSetting("savedata.log"); |
aktk | 0:b76e3288e79a | 53 | } |
aktk | 0:b76e3288e79a | 54 | else { |
aktk | 0:b76e3288e79a | 55 | pc.printf("\n"); |
aktk | 0:b76e3288e79a | 56 | sensor0.calibrateSensor(); |
aktk | 0:b76e3288e79a | 57 | sensor0.printOutData(); |
aktk | 0:b76e3288e79a | 58 | sensor0.saveSetting("savedata.log"); |
aktk | 0:b76e3288e79a | 59 | } |
aktk | 0:b76e3288e79a | 60 | myled2 = 1; |
aktk | 0:b76e3288e79a | 61 | unsigned short dst; |
aktk | 0:b76e3288e79a | 62 | while(1) { |
aktk | 0:b76e3288e79a | 63 | t.start(); |
aktk | 0:b76e3288e79a | 64 | dst=sensor0.getDistance(); |
aktk | 0:b76e3288e79a | 65 | t.stop(); |
aktk | 0:b76e3288e79a | 66 | pc.printf("dst:%d(%f s)\n",dst, t.read()); |
aktk | 0:b76e3288e79a | 67 | t.reset(); |
aktk | 0:b76e3288e79a | 68 | //pc.printf("vol:%d",g_Sensor_Voltage.read_u16()); |
aktk | 0:b76e3288e79a | 69 | pc.printf("vol:%d",DAread(0)); |
aktk | 0:b76e3288e79a | 70 | wait(0.5); |
aktk | 0:b76e3288e79a | 71 | pc.putc('\n'); |
aktk | 0:b76e3288e79a | 72 | if(pc.readable())if(pc.getc() == 'q') break; |
aktk | 0:b76e3288e79a | 73 | }/* |
aktk | 0:b76e3288e79a | 74 | while(1){ |
aktk | 0:b76e3288e79a | 75 | myled2 = 1; |
aktk | 0:b76e3288e79a | 76 | pc.printf("vol:%d\n",DAread(1)); |
aktk | 0:b76e3288e79a | 77 | }*/ |
aktk | 0:b76e3288e79a | 78 | myled1 = myled2 = 0; |
aktk | 0:b76e3288e79a | 79 | |
aktk | 0:b76e3288e79a | 80 | } |