シーケンサーのデータをSPIで送るテスト。UART出力停止

Dependencies:   Sequence mbed-rtos mbed Amp Envelope FilterController

Fork of SpiSequencerSender_Test by Ryo Od

Committer:
ryood
Date:
Sun Jun 26 09:51:40 2016 +0000
Revision:
9:3e4e08578e1c
Parent:
8:de409197ff95
Child:
10:fb04f9959fd9
EnvelopeGenerator?AmpController???

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ryood 0:21e39bc75e31 1 #include "mbed.h"
ryood 5:4abac408b827 2 #include "rtos.h"
ryood 0:21e39bc75e31 3
ryood 6:fc10eac60b91 4 #define UART_TRACE (0)
ryood 6:fc10eac60b91 5 #include "SpiSequenceSender.h"
ryood 9:3e4e08578e1c 6 #include "EnvelopeGenerator.h"
ryood 9:3e4e08578e1c 7 #include "SpiAmpController.h"
ryood 0:21e39bc75e31 8
ryood 6:fc10eac60b91 9 #define SEQUENCE_N (16)
ryood 6:fc10eac60b91 10 #define SPI_RATE (8000000)
ryood 0:21e39bc75e31 11
ryood 0:21e39bc75e31 12 SPI spiMaster(SPI_MOSI, SPI_MISO, SPI_SCK);
ryood 0:21e39bc75e31 13
ryood 0:21e39bc75e31 14 Sequence sequence[SEQUENCE_N];
ryood 7:ed01846ee0a5 15 SpiSequenceSender sequenceSender(&spiMaster, D9, sequence, SEQUENCE_N, 10);
ryood 6:fc10eac60b91 16
ryood 8:de409197ff95 17 Envelope envelope(4095, 10, 8, 5, 2047);
ryood 9:3e4e08578e1c 18 EnvelopeGenerator envelopeGenerator;
ryood 9:3e4e08578e1c 19 SpiAmpController ampController(&spiMaster, D8, D7);
ryood 6:fc10eac60b91 20
ryood 9:3e4e08578e1c 21 /*
ryood 6:fc10eac60b91 22 class TestClass {
ryood 6:fc10eac60b91 23 public:
ryood 6:fc10eac60b91 24 void callbackFunction(int ticks)
ryood 6:fc10eac60b91 25 {
ryood 7:ed01846ee0a5 26 if (ticks == 0) {
ryood 9:3e4e08578e1c 27 envelopeGenerator.init(envelope);
ryood 7:ed01846ee0a5 28 }
ryood 9:3e4e08578e1c 29 uint16_t level = envelopeGenerator.update();
ryood 8:de409197ff95 30 printf("m,%d\r\n", level);
ryood 6:fc10eac60b91 31 }
ryood 6:fc10eac60b91 32 } testClass;
ryood 9:3e4e08578e1c 33 */
ryood 0:21e39bc75e31 34
ryood 8:de409197ff95 35 void callbackFunction(int ticks)
ryood 8:de409197ff95 36 {
ryood 8:de409197ff95 37 if (ticks == 0) {
ryood 9:3e4e08578e1c 38 envelopeGenerator.init(envelope);
ryood 8:de409197ff95 39 }
ryood 9:3e4e08578e1c 40 uint16_t level = envelopeGenerator.getModLevel();
ryood 9:3e4e08578e1c 41 //printf("g,%d\r\n", level);
ryood 9:3e4e08578e1c 42 ampController.outDca(level);
ryood 9:3e4e08578e1c 43 envelopeGenerator.update();
ryood 8:de409197ff95 44 }
ryood 8:de409197ff95 45
ryood 0:21e39bc75e31 46 int main()
ryood 0:21e39bc75e31 47 {
ryood 0:21e39bc75e31 48 spiMaster.format(8, 0);
ryood 0:21e39bc75e31 49 spiMaster.frequency(SPI_RATE);
ryood 0:21e39bc75e31 50
ryood 0:21e39bc75e31 51 // Test SequencerSender Run
ryood 0:21e39bc75e31 52 //
ryood 4:dd1582f2e5df 53 sequenceSender.setBpm(120);
ryood 0:21e39bc75e31 54 for (int i = 0; i < SEQUENCE_N; i++) {
ryood 0:21e39bc75e31 55 Sequence& seq = sequenceSender.getSequences()[i];
ryood 6:fc10eac60b91 56 seq.setPitch(i);
ryood 4:dd1582f2e5df 57 seq.setOctave(-1);
ryood 0:21e39bc75e31 58 seq.tie = true;
ryood 0:21e39bc75e31 59 }
ryood 0:21e39bc75e31 60
ryood 5:4abac408b827 61 sequence[3].setOctave(2);
ryood 5:4abac408b827 62 sequence[7].setOctave(1);
ryood 5:4abac408b827 63 sequence[11].setOctave(0);
ryood 5:4abac408b827 64 sequence[15].setOctave(1);
ryood 6:fc10eac60b91 65
ryood 9:3e4e08578e1c 66 envelopeGenerator.init(envelope);
ryood 7:ed01846ee0a5 67
ryood 9:3e4e08578e1c 68 //sequenceSender.attachUpdate(&testClass, &TestClass::callbackFunction);
ryood 9:3e4e08578e1c 69 sequenceSender.attachUpdate(&callbackFunction);
ryood 0:21e39bc75e31 70 sequenceSender.run(0);
ryood 5:4abac408b827 71
ryood 5:4abac408b827 72 for (;;) {
ryood 5:4abac408b827 73 sequenceSender.setPulseWidth(sequenceSender.getPulseWidth() + 4);
ryood 6:fc10eac60b91 74 Thread::wait(500);
ryood 6:fc10eac60b91 75 sequenceSender.setWaveShape(SpiSequenceSender::WAVESHAPE_SAW);
ryood 6:fc10eac60b91 76 Thread::wait(500);
ryood 6:fc10eac60b91 77 sequenceSender.setWaveShape(SpiSequenceSender::WAVESHAPE_SQUARE);
ryood 5:4abac408b827 78 }
ryood 0:21e39bc75e31 79 }