Yoichi Nagashima / Mbed 2 deprecated NucleoF401RE_LittleBitsSynth_controller

Dependencies:   mbed

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "MIDI_sub3.h"
00003 
00004 int main(){
00005     int i, j, k, p;
00006     unsigned char adc_new;
00007     i = j = k = p = 0;
00008     rx_top = rx_end = tx_top = tx_end = adc_no = 0; 
00009     MIDI.baud(31250);
00010     MIDI.attach(&rx_fifoset, MIDI.RxIrq);
00011     LatchPulse.write(0x01F8);
00012     TriggerOut.write(0xF000);
00013     trigger_status = 0;
00014     for(i=0; i<6; i++) DAC_out(i,0);
00015     for(i=0; i<10; i++) adc_old[i] = 0;
00016     while(1){
00017         if(++p > 10000){
00018             p = 0;
00019             if(++adc_no > 9) adc_no = 0;
00020             adc_new = ADC_get(adc_no);
00021             if(adc_old[adc_no] != adc_new){
00022                 adc_old[adc_no] = adc_new;
00023                 tx_fifoset(0xBF);
00024                 tx_fifoset(adc_no);
00025                 tx_fifoset(adc_new);
00026             }
00027         }
00028         tx_fifo_check();
00029         if(rx_fifo_check() == 1){
00030             switch(midi_message>>20){
00031                 case 0x0B:
00032                     if(((midi_message>>16) & 0x0F) == 0){
00033                         k = (midi_message>>8) & 0x7F;
00034                         if(k < 6){
00035                             DAC_out(k, (midi_message & 0x7F)<<1);
00036                         }
00037                     }
00038                     else if(((midi_message>>16) & 0x0F) == 1){
00039                         k = (midi_message>>8) & 0x7F;
00040                         if(k < 4){
00041                             Trigger_send(k, (midi_message & 0x7F));
00042                         }
00043                     }
00044                     break;
00045                 case 0x0C:
00046                     tx_fifoset(midi_message>>16);
00047                     tx_fifoset((midi_message>>8) & 0x7F);
00048                     break;
00049             }         
00050         }
00051         if(++j > 1000000){
00052             j = 0;
00053             myled = !myled;
00054         }
00055     }
00056 }