Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
TRP105FS_SPIWrapper.cpp@11:d60fb729eacf, 2016-06-06 (annotated)
- Committer:
- aktk
- Date:
- Mon Jun 06 19:49:20 2016 +0000
- Revision:
- 11:d60fb729eacf
- Parent:
- 8:9eaa9772e1e7
- Child:
- 12:db5110d9d494
make it come to be platform variation selective
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
aktk | 8:9eaa9772e1e7 | 1 | #include "TRP105FS_SPIWrapper.h" |
aktk | 11:d60fb729eacf | 2 | #include "CODE_SELECTIVE.h" |
aktk | 8:9eaa9772e1e7 | 3 | |
aktk | 8:9eaa9772e1e7 | 4 | // |
aktk | 8:9eaa9772e1e7 | 5 | // Make instance of static member |
aktk | 8:9eaa9772e1e7 | 6 | // |
aktk | 11:d60fb729eacf | 7 | SPI |
aktk | 8:9eaa9772e1e7 | 8 | SPI_TRP105FS::spi(p5, p6, p7); // mosi(out), miso(in), sclk(clock) |
aktk | 8:9eaa9772e1e7 | 9 | |
aktk | 8:9eaa9772e1e7 | 10 | DigitalOut |
aktk | 8:9eaa9772e1e7 | 11 | SPI_TRP105FS::cs(p8); // cs (the chip select signal) |
aktk | 8:9eaa9772e1e7 | 12 | |
aktk | 8:9eaa9772e1e7 | 13 | // |
aktk | 8:9eaa9772e1e7 | 14 | // For SPI, Define static method |
aktk | 8:9eaa9772e1e7 | 15 | // |
aktk | 11:d60fb729eacf | 16 | int |
aktk | 8:9eaa9772e1e7 | 17 | SPI_TRP105FS::ADread(int channel) |
aktk | 8:9eaa9772e1e7 | 18 | { |
aktk | 8:9eaa9772e1e7 | 19 | int command_high=0x06|((channel&0x04)>>2); |
aktk | 8:9eaa9772e1e7 | 20 | int command_low=(channel&0x03)<<14; |
aktk | 8:9eaa9772e1e7 | 21 | __disable_irq(); // 割り込み禁止 |
aktk | 8:9eaa9772e1e7 | 22 | cs = 0; |
aktk | 8:9eaa9772e1e7 | 23 | spi.write(command_high); |
aktk | 8:9eaa9772e1e7 | 24 | int resultbyte=spi.write(command_low) & 0xfff; |
aktk | 8:9eaa9772e1e7 | 25 | cs = 1; |
aktk | 8:9eaa9772e1e7 | 26 | __enable_irq(); // 割り込み許可 |
aktk | 8:9eaa9772e1e7 | 27 | return(resultbyte); |
aktk | 8:9eaa9772e1e7 | 28 | } |
aktk | 8:9eaa9772e1e7 | 29 | |
aktk | 8:9eaa9772e1e7 | 30 | // |
aktk | 8:9eaa9772e1e7 | 31 | // Define Constructor |
aktk | 8:9eaa9772e1e7 | 32 | // |
aktk | 8:9eaa9772e1e7 | 33 | SPI_TRP105FS::SPI_TRP105FS() |
aktk | 8:9eaa9772e1e7 | 34 | :channel(0) |
aktk | 8:9eaa9772e1e7 | 35 | ,nsample(5) |
aktk | 8:9eaa9772e1e7 | 36 | ,trp(TRP105FS(nsample)) |
aktk | 8:9eaa9772e1e7 | 37 | ,filename("\0") |
aktk | 8:9eaa9772e1e7 | 38 | {} |
aktk | 8:9eaa9772e1e7 | 39 | |
aktk | 8:9eaa9772e1e7 | 40 | SPI_TRP105FS::SPI_TRP105FS(unsigned int arg_ch) |
aktk | 8:9eaa9772e1e7 | 41 | :channel(arg_ch) |
aktk | 8:9eaa9772e1e7 | 42 | ,nsample(5) |
aktk | 8:9eaa9772e1e7 | 43 | ,trp(TRP105FS(nsample)) |
aktk | 8:9eaa9772e1e7 | 44 | ,filename("\0") |
aktk | 8:9eaa9772e1e7 | 45 | {} |
aktk | 8:9eaa9772e1e7 | 46 | |
aktk | 11:d60fb729eacf | 47 | void |
aktk | 8:9eaa9772e1e7 | 48 | SPI_TRP105FS::setSample(unsigned short arg_x) |
aktk | 8:9eaa9772e1e7 | 49 | { |
aktk | 8:9eaa9772e1e7 | 50 | trp.setSample(arg_x, (unsigned short)ADread(channel)); |
aktk | 8:9eaa9772e1e7 | 51 | } |
aktk | 8:9eaa9772e1e7 | 52 | |
aktk | 11:d60fb729eacf | 53 | void |
aktk | 8:9eaa9772e1e7 | 54 | SPI_TRP105FS::calibrate() |
aktk | 8:9eaa9772e1e7 | 55 | { |
aktk | 8:9eaa9772e1e7 | 56 | trp.calibrate(); |
aktk | 8:9eaa9772e1e7 | 57 | } |
aktk | 8:9eaa9772e1e7 | 58 | |
aktk | 11:d60fb729eacf | 59 | unsigned short |
aktk | 8:9eaa9772e1e7 | 60 | SPI_TRP105FS::getDistance() |
aktk | 8:9eaa9772e1e7 | 61 | { |
aktk | 8:9eaa9772e1e7 | 62 | return trp.getDistance((unsigned short)ADread(channel)); |
aktk | 8:9eaa9772e1e7 | 63 | } |
aktk | 8:9eaa9772e1e7 | 64 | |
aktk | 11:d60fb729eacf | 65 | unsigned int |
aktk | 8:9eaa9772e1e7 | 66 | SPI_TRP105FS::getChannel() |
aktk | 8:9eaa9772e1e7 | 67 | { |
aktk | 8:9eaa9772e1e7 | 68 | return channel; |
aktk | 8:9eaa9772e1e7 | 69 | } |
aktk | 8:9eaa9772e1e7 | 70 | |
aktk | 11:d60fb729eacf | 71 | unsigned int |
aktk | 8:9eaa9772e1e7 | 72 | SPI_TRP105FS::getNsample() |
aktk | 8:9eaa9772e1e7 | 73 | { |
aktk | 8:9eaa9772e1e7 | 74 | return nsample; |
aktk | 8:9eaa9772e1e7 | 75 | } |
aktk | 8:9eaa9772e1e7 | 76 | |
aktk | 11:d60fb729eacf | 77 | void |
aktk | 8:9eaa9772e1e7 | 78 | SPI_TRP105FS::savedata() |
aktk | 8:9eaa9772e1e7 | 79 | { |
aktk | 8:9eaa9772e1e7 | 80 | if (filename[0] == '\0') |
aktk | 8:9eaa9772e1e7 | 81 | sprintf(filename, "SENSOR%02d.SAV", channel); |
aktk | 8:9eaa9772e1e7 | 82 | trp.saveSetting(filename); |
aktk | 8:9eaa9772e1e7 | 83 | } |
aktk | 8:9eaa9772e1e7 | 84 | |
aktk | 11:d60fb729eacf | 85 | void |
aktk | 8:9eaa9772e1e7 | 86 | SPI_TRP105FS::loaddata() |
aktk | 8:9eaa9772e1e7 | 87 | { |
aktk | 8:9eaa9772e1e7 | 88 | if (filename[0] == '\0') |
aktk | 8:9eaa9772e1e7 | 89 | sprintf(filename, "SENSOR%02d.SAV", channel); |
aktk | 8:9eaa9772e1e7 | 90 | trp.loadSetting(filename); |
aktk | 8:9eaa9772e1e7 | 91 | } |
aktk | 11:d60fb729eacf | 92 | void |
aktk | 8:9eaa9772e1e7 | 93 | SPI_TRP105FS::printCalibrationiLOG() |
aktk | 8:9eaa9772e1e7 | 94 | { |
aktk | 8:9eaa9772e1e7 | 95 | trp.printOutData("ADLOG.TXT"); |
aktk | 11:d60fb729eacf | 96 | #if defined(HAS_COM_TO_CONSOLE) |
aktk | 8:9eaa9772e1e7 | 97 | trp.printThresholds(); |
aktk | 11:d60fb729eacf | 98 | #endif |
aktk | 8:9eaa9772e1e7 | 99 | } |