for child

Fork of TRP105F_Spline by Akifumi Takahashi

Committer:
tanaken0605
Date:
Tue Oct 24 00:44:39 2017 +0000
Revision:
27:1f38ee841153
Parent:
26:062b89351253
?????????

Who changed what in which revision?

UserRevisionLine numberNew contents of line
aktk 8:9eaa9772e1e7 1 #include "TRP105FS_SPIWrapper.h"
aktk 8:9eaa9772e1e7 2
aktk 8:9eaa9772e1e7 3 //
aktk 8:9eaa9772e1e7 4 // Make instance of static member
aktk 8:9eaa9772e1e7 5 //
aktk 11:d60fb729eacf 6 SPI
tanaken0605 26:062b89351253 7 SPI_TRP105FS::spi(p11,p12,p13); // mosi(out), miso(in), sclk(clock)
aktk 8:9eaa9772e1e7 8
aktk 8:9eaa9772e1e7 9 DigitalOut
tanaken0605 26:062b89351253 10 SPI_TRP105FS::cs(p14); // cs (the chip select signal)
aktk 8:9eaa9772e1e7 11
aktk 8:9eaa9772e1e7 12 //
aktk 8:9eaa9772e1e7 13 // For SPI, Define static method
aktk 8:9eaa9772e1e7 14 //
aktk 11:d60fb729eacf 15 int
aktk 8:9eaa9772e1e7 16 SPI_TRP105FS::ADread(int channel)
aktk 8:9eaa9772e1e7 17 {
tanaken0605 23:772a9736ee59 18
tanaken0605 27:1f38ee841153 19 int command = ((13|(channel<<1))<<11) & 0x7fff;
tanaken0605 23:772a9736ee59 20 __disable_irq(); // 割り込み禁止
tanaken0605 23:772a9736ee59 21 cs=0;
tanaken0605 23:772a9736ee59 22 int resultbyte=spi.write(command) & 0x3ff;
tanaken0605 23:772a9736ee59 23 cs=1;
tanaken0605 23:772a9736ee59 24 __enable_irq(); // 割り込み許可
aktk 8:9eaa9772e1e7 25 return(resultbyte);
aktk 8:9eaa9772e1e7 26 }
aktk 8:9eaa9772e1e7 27
aktk 8:9eaa9772e1e7 28 //
aktk 8:9eaa9772e1e7 29 // Define Constructor
aktk 8:9eaa9772e1e7 30 //
aktk 8:9eaa9772e1e7 31 SPI_TRP105FS::SPI_TRP105FS()
aktk 8:9eaa9772e1e7 32 :channel(0)
aktk 8:9eaa9772e1e7 33 ,nsample(5)
aktk 8:9eaa9772e1e7 34 ,trp(TRP105FS(nsample))
aktk 8:9eaa9772e1e7 35 ,filename("\0")
aktk 8:9eaa9772e1e7 36 {}
aktk 8:9eaa9772e1e7 37
aktk 8:9eaa9772e1e7 38 SPI_TRP105FS::SPI_TRP105FS(unsigned int arg_ch)
aktk 8:9eaa9772e1e7 39 :channel(arg_ch)
aktk 8:9eaa9772e1e7 40 ,nsample(5)
aktk 8:9eaa9772e1e7 41 ,trp(TRP105FS(nsample))
aktk 8:9eaa9772e1e7 42 ,filename("\0")
aktk 8:9eaa9772e1e7 43 {}
aktk 8:9eaa9772e1e7 44
aktk 19:ee2558b13570 45 SPI_TRP105FS::SPI_TRP105FS(unsigned int arg_ns, unsigned int arg_ch)
aktk 19:ee2558b13570 46 :channel(arg_ch)
aktk 19:ee2558b13570 47 ,nsample(arg_ns)
aktk 19:ee2558b13570 48 ,trp(TRP105FS(nsample))
aktk 19:ee2558b13570 49 ,filename("\0")
aktk 19:ee2558b13570 50 {}
aktk 19:ee2558b13570 51
aktk 11:d60fb729eacf 52 void
aktk 8:9eaa9772e1e7 53 SPI_TRP105FS::setSample(unsigned short arg_x)
aktk 8:9eaa9772e1e7 54 {
aktk 8:9eaa9772e1e7 55 trp.setSample(arg_x, (unsigned short)ADread(channel));
aktk 8:9eaa9772e1e7 56 }
aktk 8:9eaa9772e1e7 57
aktk 11:d60fb729eacf 58 void
aktk 8:9eaa9772e1e7 59 SPI_TRP105FS::calibrate()
aktk 8:9eaa9772e1e7 60 {
aktk 8:9eaa9772e1e7 61 trp.calibrate();
aktk 8:9eaa9772e1e7 62 }
aktk 8:9eaa9772e1e7 63
aktk 11:d60fb729eacf 64 unsigned short
aktk 8:9eaa9772e1e7 65 SPI_TRP105FS::getDistance()
aktk 8:9eaa9772e1e7 66 {
aktk 8:9eaa9772e1e7 67 return trp.getDistance((unsigned short)ADread(channel));
aktk 8:9eaa9772e1e7 68 }
aktk 8:9eaa9772e1e7 69
aktk 11:d60fb729eacf 70 unsigned int
aktk 8:9eaa9772e1e7 71 SPI_TRP105FS::getChannel()
aktk 8:9eaa9772e1e7 72 {
aktk 8:9eaa9772e1e7 73 return channel;
aktk 8:9eaa9772e1e7 74 }
aktk 8:9eaa9772e1e7 75
aktk 11:d60fb729eacf 76 unsigned int
aktk 8:9eaa9772e1e7 77 SPI_TRP105FS::getNsample()
aktk 8:9eaa9772e1e7 78 {
aktk 8:9eaa9772e1e7 79 return nsample;
aktk 8:9eaa9772e1e7 80 }
aktk 8:9eaa9772e1e7 81
aktk 16:c2b0f3ca63dd 82 #if defined(HAS_LOCAL_FILE_SYSTEM)
aktk 11:d60fb729eacf 83 void
aktk 8:9eaa9772e1e7 84 SPI_TRP105FS::savedata()
aktk 8:9eaa9772e1e7 85 {
aktk 8:9eaa9772e1e7 86 if (filename[0] == '\0')
aktk 8:9eaa9772e1e7 87 sprintf(filename, "SENSOR%02d.SAV", channel);
aktk 8:9eaa9772e1e7 88 trp.saveSetting(filename);
aktk 8:9eaa9772e1e7 89 }
aktk 8:9eaa9772e1e7 90
aktk 11:d60fb729eacf 91 void
aktk 8:9eaa9772e1e7 92 SPI_TRP105FS::loaddata()
aktk 8:9eaa9772e1e7 93 {
aktk 8:9eaa9772e1e7 94 if (filename[0] == '\0')
aktk 8:9eaa9772e1e7 95 sprintf(filename, "SENSOR%02d.SAV", channel);
aktk 8:9eaa9772e1e7 96 trp.loadSetting(filename);
aktk 8:9eaa9772e1e7 97 }
aktk 11:d60fb729eacf 98 void
aktk 8:9eaa9772e1e7 99 SPI_TRP105FS::printCalibrationiLOG()
aktk 8:9eaa9772e1e7 100 {
aktk 22:eaaaa42a0ccb 101 char lfilename[13];
aktk 22:eaaaa42a0ccb 102
tanaken0605 23:772a9736ee59 103 sprintf(lfilename, "ADLOG%02d.TXT", channel);
aktk 22:eaaaa42a0ccb 104 trp.printOutData(lfilename);
aktk 16:c2b0f3ca63dd 105 }
aktk 16:c2b0f3ca63dd 106 #endif