mods

Dependencies:   mbed MCP4822 USBDevice

main.cpp

Committer:
kanope_benny
Date:
2021-02-25
Revision:
9:c2a2c38ae084
Parent:
8:c6ec6b9f6a55

File content as of revision 9:c2a2c38ae084:

#if 1
#include "mbed.h"
#include "USBMIDI.h"
#include "MCP4822.h"


void setup(void)
{
    RCC_ClkInitTypeDef RCC_ClkInitStruct;
    RCC_OscInitTypeDef RCC_OscInitStruct;
 
    RCC_OscInitStruct.OscillatorType =  RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState =        RCC_HSE_ON;
    
    RCC_OscInitStruct.LSIState =        RCC_LSI_ON;
    RCC_OscInitStruct.PLL.PLLState =    RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource =   RCC_PLLSOURCE_HSE;
    
RCC_OscInitStruct.PLL.PLLM            = 25;             // VCO input clock = 1 MHz (25 MHz / 25)
RCC_OscInitStruct.PLL.PLLN            = 192;           // VCO output clock = 192 MHz (1 MHz * 192)
RCC_OscInitStruct.PLL.PLLP            = RCC_PLLP_DIV2; // PLLCLK = 96 MHz (192 MHz / 2)
RCC_OscInitStruct.PLL.PLLQ            = 4;             // USB clock = 48 MHz (192 MHz / 4) --> Good for USB
  
  HAL_RCC_OscConfig(&RCC_OscInitStruct);
 
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
    
    SystemCoreClockUpdate();
    SystemCoreClock = 96000000;
    
    //HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_1);        // output SYSCLOCK to pin PC9 to monitor frequency
}

DigitalOut myled( PC_13); 
DigitalOut gate_A( PB_2);  
DigitalOut gate_B( PB_10); 
SPI spi(  PA_7, PA_6, PA_5); 
MCP4822 dac(spi, PB_1, PB_0 );
    
void show_message(MIDIMessage msg) {
    switch (msg.type()) {
        case MIDIMessage::NoteOffType:
            //TODO
            break;
        case MIDIMessage::NoteOnType:
            // TODO  
            //cf  = msg.key();
            //cf  = msg.velocity();
            
            break;
        case MIDIMessage::PolyphonicAftertouchType:
            // TODO code 
            break;
        case MIDIMessage::ControlChangeType:
            // TODO code 
            break;
        case MIDIMessage::AllNotesOffType:
            // TODO 
            break;
        case MIDIMessage::ErrorType:
            // TODO code 
            break;
        case MIDIMessage::ProgramChangeType:
            // TODO code 
            break;
        case MIDIMessage::ChannelAftertouchType:
            // TODO code 
            break;
        case MIDIMessage::PitchWheelType:
            // TODO code 
            break;
        case MIDIMessage::SysExType:
            // TODO code 
            break; 
        default:
           // leds = 0;
           break; 
    }
}

int main() {    

    setup();

    USBMIDI midi;
    
    
    
    midi.attach(show_message);
         
    while (1) {    
        for(int i=48; i<83; i++) {     // send some messages!
            midi.write(MIDIMessage::NoteOn(i));
            dac.a(0,1024);
            dac.b(0,1024);
            gate_A = 1 ; 
            gate_B = 1 ; 
            
            wait(0.25);
            midi.write(MIDIMessage::NoteOff(i));
            gate_A = 0 ; 
            gate_B = 0 ; 
            dac.a(0,512);
            dac.b(0,512);
            
            wait(0.5);
            myled = !myled; // LED 
        }
    }
}
#endif 
#if 0
#include "mbed.h"
#include "USBMIDI.h"


void setup(void)
{
    RCC_ClkInitTypeDef RCC_ClkInitStruct;
    RCC_OscInitTypeDef RCC_OscInitStruct;
 
    RCC_OscInitStruct.OscillatorType =  RCC_OSCILLATORTYPE_LSI|RCC_OSCILLATORTYPE_HSE;
    RCC_OscInitStruct.HSEState =        RCC_HSE_ON;
    
    RCC_OscInitStruct.LSIState =        RCC_LSI_ON;
    RCC_OscInitStruct.PLL.PLLState =    RCC_PLL_ON;
    RCC_OscInitStruct.PLL.PLLSource =   RCC_PLLSOURCE_HSE;
    
RCC_OscInitStruct.PLL.PLLM            = 25;             // VCO input clock = 1 MHz (25 MHz / 25)
RCC_OscInitStruct.PLL.PLLN            = 192;           // VCO output clock = 192 MHz (1 MHz * 192)
RCC_OscInitStruct.PLL.PLLP            = RCC_PLLP_DIV2; // PLLCLK = 96 MHz (192 MHz / 2)
RCC_OscInitStruct.PLL.PLLQ            = 4;             // USB clock = 48 MHz (192 MHz / 4) --> Good for USB
  
  HAL_RCC_OscConfig(&RCC_OscInitStruct);
 
    RCC_ClkInitStruct.ClockType = RCC_CLOCKTYPE_SYSCLK|RCC_CLOCKTYPE_PCLK1;
    RCC_ClkInitStruct.SYSCLKSource = RCC_SYSCLKSOURCE_PLLCLK;
    RCC_ClkInitStruct.APB1CLKDivider = RCC_HCLK_DIV2;
    HAL_RCC_ClockConfig(&RCC_ClkInitStruct, FLASH_LATENCY_2);
    
    SystemCoreClockUpdate();
    SystemCoreClock = 96000000;
    
    //HAL_RCC_MCOConfig(RCC_MCO2, RCC_MCO2SOURCE_SYSCLK, RCC_MCODIV_1);        // output SYSCLOCK to pin PC9 to monitor frequency
}

 DigitalOut myled( PC_13); 

int main() {    

    setup();

    USBMIDI midi;
    
         
    while (1) {    
        for(int i=48; i<83; i++) {     // send some messages!
            midi.write(MIDIMessage::NoteOn(i));
            wait(0.25);
            midi.write(MIDIMessage::NoteOff(i));
            wait(0.5);
            myled = !myled; // LED 
        }
    }
}
#endif