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

Dependencies:   Sequence mbed-rtos mbed Amp Envelope FilterController

Fork of SpiSequencerSender_Test by Ryo Od

Committer:
ryood
Date:
Sun Jun 26 08:34:01 2016 +0000
Revision:
8:de409197ff95
Parent:
7:ed01846ee0a5
Child:
9:3e4e08578e1c
attachUpdate()??????????????????

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