/** * First init */ static void firstInit(void) { //Hardware init GPIO_init(); USART1_init();//midi USART6_init();//debug usb_midi_init(); //Init everything for midiUSB ADC_init_all(); //ADC init SD_DMA_activate(); //Display delayms(400); #ifdef WS0010_GRAPHICS hd44780_init(); hd44780_display( HD44780_DISP_ON, HD44780_DISP_CURS_OFF, HD44780_DISP_BLINK_OFF); ws0010_Graphics_mode(); ws0010_Draw_buffer(pictureVMK188); delayms(20000); ws0010_Character_mode(); hd44780_init(); #else hd44780_init(); hd44780_display( HD44780_DISP_ON, HD44780_DISP_CURS_OFF, HD44780_DISP_BLINK_OFF); hd44780_message_center(APP_NAME, 1); hd44780_message_center(APP_VERSION, 2); delayms(3000); #endif }
/** Main routine for midi-link. **/ int main(void) { /** Disable watchdog. **/ wdt_disable(); /** setbits for the LEDs. **/ // DDRC |= _BV(5); DDRC |= _BV(4); sr165_init(); lcd_init(); lcd_line1(); lcd_puts("HELO"); for (;;) { uint16_t sr = sr165_read16(); lcd_line1(); lcd_putnumber16(sr); } /** Initialize UART. **/ uart_init(); usb_midi_init(); /** Initialize D12 pins and stack. **/ d12_pins_init(); d12_init(); /** Enable interrupts. **/ sei(); uint8_t uart_configured = 0; for (;;) { if (d12_device_is_configured() && (uart_configured == 0)) { /* discard data in uart buffer */ while (uart_avail()) { uart_getc(); } uart_configured = 1; } if (uart_configured < 100) { _delay_ms(10); uart_configured++; } else { /** Handle midi from UART and from USB. **/ midi_link_main(); } /** Handle usb status. **/ d12_main(); /* check ep2 again because of d12 bug */ uint8_t status; do { d12_read_cmd(D12_CMD_SELECT_EP + D12_MIDI_EP_OUT, &status, 1); if ((status & 1) && d12_device_is_configured() && (uart_configured > 100)) { handle_midi_ep_out(); } } while (status & 1); } }