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

Dependencies:   Sequence mbed-rtos mbed Amp Envelope FilterController

Fork of SpiSequencerSender_Test by Ryo Od

main.cpp

Committer:
ryood
Date:
2016-06-26
Revision:
8:de409197ff95
Parent:
7:ed01846ee0a5
Child:
9:3e4e08578e1c

File content as of revision 8:de409197ff95:

#include "mbed.h"
#include "rtos.h"

#define UART_TRACE  (0)
#include "SpiSequenceSender.h"
#include "Envelope.h"

#define SEQUENCE_N  (16)
#define SPI_RATE    (8000000)

SPI spiMaster(SPI_MOSI, SPI_MISO, SPI_SCK);

Sequence sequence[SEQUENCE_N];
SpiSequenceSender sequenceSender(&spiMaster, D9, sequence, SEQUENCE_N, 10);

Envelope envelope(4095, 10, 8, 5, 2047);

class TestClass {
public:
    void callbackFunction(int ticks)
    {
        if (ticks == 0) {
            envelope.init();
        }
        uint16_t level = envelope.update();
        printf("m,%d\r\n", level);
    }    
} testClass;

void callbackFunction(int ticks)
{
    if (ticks == 0) {
        envelope.init();
    }
    uint16_t level = envelope.update();
    printf("g,%d\r\n", level);
}

int main()
{
    spiMaster.format(8, 0);
    spiMaster.frequency(SPI_RATE);
    
    // Test SequencerSender Run
    //
    sequenceSender.setBpm(120);
    for (int i = 0; i < SEQUENCE_N; i++) {
        Sequence& seq = sequenceSender.getSequences()[i];
        seq.setPitch(i);
        seq.setOctave(-1);
        seq.tie = true;
    }

    sequence[3].setOctave(2);
    sequence[7].setOctave(1);
    sequence[11].setOctave(0);
    sequence[15].setOctave(1);
    
    envelope.init();
    
    sequenceSender.attachUpdate(&testClass, &TestClass::callbackFunction);
    //sequenceSender.attachUpdate(&callbackFunction);
    sequenceSender.run(0);
    
    for (;;) {
        sequenceSender.setPulseWidth(sequenceSender.getPulseWidth() + 4);
        Thread::wait(500);
        sequenceSender.setWaveShape(SpiSequenceSender::WAVESHAPE_SAW);
        Thread::wait(500);
        sequenceSender.setWaveShape(SpiSequenceSender::WAVESHAPE_SQUARE);
    }
}