AmpController Class Test
Dependencies: Amp Envelope mbed-rtos mbed
main.cpp@0:e8cd21a7412a, 2016-06-23 (annotated)
- Committer:
- ryood
- Date:
- Thu Jun 23 13:49:23 2016 +0000
- Revision:
- 0:e8cd21a7412a
- Child:
- 2:fbc776fc8e12
first commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
ryood | 0:e8cd21a7412a | 1 | /* |
ryood | 0:e8cd21a7412a | 2 | * EnvelopeをMCP4922に出力するテスト |
ryood | 0:e8cd21a7412a | 3 | * |
ryood | 0:e8cd21a7412a | 4 | * 2016.06.23 |
ryood | 0:e8cd21a7412a | 5 | * |
ryood | 0:e8cd21a7412a | 6 | */ |
ryood | 0:e8cd21a7412a | 7 | |
ryood | 0:e8cd21a7412a | 8 | #include "mbed.h" |
ryood | 0:e8cd21a7412a | 9 | #include "rtos.h" |
ryood | 0:e8cd21a7412a | 10 | #include "Envelope.h" |
ryood | 0:e8cd21a7412a | 11 | #include "SpiAmpController.h" |
ryood | 0:e8cd21a7412a | 12 | |
ryood | 0:e8cd21a7412a | 13 | #define AMP_VREF 0x0fff |
ryood | 0:e8cd21a7412a | 14 | #define SPIM_RATE 1000000 |
ryood | 0:e8cd21a7412a | 15 | |
ryood | 0:e8cd21a7412a | 16 | const int envLength = 25; |
ryood | 0:e8cd21a7412a | 17 | |
ryood | 0:e8cd21a7412a | 18 | AnalogIn levelIn(A0); |
ryood | 0:e8cd21a7412a | 19 | AnalogIn durationIn(A1); |
ryood | 0:e8cd21a7412a | 20 | AnalogIn decayIn(A2); |
ryood | 0:e8cd21a7412a | 21 | AnalogIn sustainIn(A3); |
ryood | 0:e8cd21a7412a | 22 | |
ryood | 0:e8cd21a7412a | 23 | SPI spiM(SPI_MOSI, SPI_MISO, SPI_SCK); |
ryood | 0:e8cd21a7412a | 24 | |
ryood | 0:e8cd21a7412a | 25 | int main() |
ryood | 0:e8cd21a7412a | 26 | { |
ryood | 0:e8cd21a7412a | 27 | spiM.format(8, 0); |
ryood | 0:e8cd21a7412a | 28 | spiM.frequency(SPIM_RATE); |
ryood | 0:e8cd21a7412a | 29 | |
ryood | 0:e8cd21a7412a | 30 | // Envelope(level, length, duration, decay, sustain) |
ryood | 0:e8cd21a7412a | 31 | Envelope envelope(4095, envLength, envLength*3/4, envLength/2, 2047); |
ryood | 0:e8cd21a7412a | 32 | SpiAmpController ampController(&spiM, D8, D7); |
ryood | 0:e8cd21a7412a | 33 | ampController.setVref(AMP_VREF); |
ryood | 0:e8cd21a7412a | 34 | |
ryood | 0:e8cd21a7412a | 35 | printf("\r\n\n*** Amp Controller Test ***\r\n"); |
ryood | 0:e8cd21a7412a | 36 | envelope.init(); |
ryood | 0:e8cd21a7412a | 37 | int cnt = 0; |
ryood | 0:e8cd21a7412a | 38 | int vref = 0; |
ryood | 0:e8cd21a7412a | 39 | while (true) { |
ryood | 0:e8cd21a7412a | 40 | ampController.outDca(envelope.getModLevel()); |
ryood | 0:e8cd21a7412a | 41 | envelope.update(); |
ryood | 0:e8cd21a7412a | 42 | |
ryood | 0:e8cd21a7412a | 43 | cnt++; |
ryood | 0:e8cd21a7412a | 44 | if (cnt == envLength) { |
ryood | 0:e8cd21a7412a | 45 | cnt = 0; |
ryood | 0:e8cd21a7412a | 46 | envelope.setLevel(levelIn * 4095); |
ryood | 0:e8cd21a7412a | 47 | envelope.setDuration(durationIn * envLength); |
ryood | 0:e8cd21a7412a | 48 | envelope.setDecay(decayIn * envLength); |
ryood | 0:e8cd21a7412a | 49 | envelope.setSustain(sustainIn * 4095); |
ryood | 0:e8cd21a7412a | 50 | |
ryood | 0:e8cd21a7412a | 51 | /* |
ryood | 0:e8cd21a7412a | 52 | printf("%d\t%d\t%d\t%d\t%d\t\r\n", |
ryood | 0:e8cd21a7412a | 53 | envelope.getLevel(), envelope.getLength(), envelope.getDuration(), envelope.getDecay(), envelope.getSustain()); |
ryood | 0:e8cd21a7412a | 54 | */ |
ryood | 0:e8cd21a7412a | 55 | envelope.init(); |
ryood | 0:e8cd21a7412a | 56 | ampController.setVref(vref); |
ryood | 0:e8cd21a7412a | 57 | vref += 0x10; |
ryood | 0:e8cd21a7412a | 58 | if (vref > 0x0fff) { |
ryood | 0:e8cd21a7412a | 59 | vref = 0; |
ryood | 0:e8cd21a7412a | 60 | } |
ryood | 0:e8cd21a7412a | 61 | } |
ryood | 0:e8cd21a7412a | 62 | Thread::wait(5); |
ryood | 0:e8cd21a7412a | 63 | } |
ryood | 0:e8cd21a7412a | 64 | } |