int main( void ) { unsigned char inc; unsigned int rx_time=0, tx_time=0; mcu_init(); sys_time_init(); led_init(); VCOM_allow_linecoding(1); #ifdef USE_USB_SERIAL VCOM_init(); #endif mcu_int_enable(); LED_ON(3); #ifdef USE_UART0 while(1) { if (T0TC > (rx_time+((PCLK / T0_PCLK_DIV) / BLINK_MIN))) LED_OFF(1); if (T0TC > (tx_time+((PCLK / T0_PCLK_DIV) / BLINK_MIN))) LED_OFF(2); if (uart_char_available(&uart0) && VCOM_check_free_space(1)) { LED_ON(1); rx_time = T0TC; inc = uart_getch(&uart0); VCOM_putchar(inc); } if (VCOM_check_available() && uart_check_free_space(&uart0, 1)) { LED_ON(2); tx_time = T0TC; inc = VCOM_getchar(); uart_transmit(&uart0, inc); } } #else while(1) { if (T0TC > (rx_time+((PCLK / T0_PCLK_DIV) / BLINK_MIN))) LED_OFF(1); if (T0TC > (tx_time+((PCLK / T0_PCLK_DIV) / BLINK_MIN))) LED_OFF(2); if (uart_char_available(&uart1) && VCOM_check_free_space(1)) { LED_ON(1); rx_time = T0TC; inc = uart_getch(&uart1); VCOM_putchar(inc); } if (VCOM_check_available() && uart_check_free_space(&uart1, 1)) { LED_ON(2); tx_time = T0TC; inc = VCOM_getchar(); uart_transmit(&uart1, inc); } } #endif return 0; }
void platform_setup_usb_cdc(void) { int c; printf("Initialising USB stack\n"); // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // enable bulk-in interrupts on NAKs USBHwNakIntEnable(INACK_BI); // initialise VCOM VCOM_init(); printf("Starting USB communication\n"); // enable IRQ NVIC_EnableIRQ(USB_IRQn); // connect to bus printf("Connecting to USB bus\n"); USBHwConnect(TRUE); }
void mcu_init(void) { mcu_arch_init(); #ifdef PERIPHERALS_AUTO_INIT sys_time_init(); #ifdef USE_LED led_init(); #endif /* for now this means using spektrum */ #if defined RADIO_CONTROL & defined RADIO_CONTROL_SPEKTRUM_PRIMARY_PORT & defined RADIO_CONTROL_BIND_IMPL_FUNC RADIO_CONTROL_BIND_IMPL_FUNC(); #endif #ifdef USE_UART0 uart0_init(); #endif #ifdef USE_UART1 uart1_init(); #endif #ifdef USE_UART2 uart2_init(); #endif #ifdef USE_UART3 uart3_init(); #endif #ifdef USE_UART4 uart4_init(); #endif #ifdef USE_UART5 uart5_init(); #endif #ifdef USE_I2C0 i2c0_init(); #endif #ifdef USE_I2C1 i2c1_init(); #endif #ifdef USE_I2C2 i2c2_init(); #endif #ifdef USE_ADC adc_init(); #endif #ifdef USE_USB_SERIAL VCOM_init(); #endif #if USE_SPI #if SPI_MASTER #if USE_SPI0 spi0_init(); #endif #if USE_SPI1 spi1_init(); #endif #if USE_SPI2 spi2_init(); #endif #if USE_SPI3 spi3_init(); #endif spi_init_slaves(); #endif // SPI_MASTER #if SPI_SLAVE #if USE_SPI0_SLAVE spi0_slave_init(); #endif #if USE_SPI1_SLAVE spi1_slave_init(); #endif #if USE_SPI2_SLAVE spi2_slave_init(); #endif #if USE_SPI3_SLAVE spi3_slave_init(); #endif #endif // SPI_SLAVE #endif // USE_SPI #ifdef USE_DAC dac_init(); #endif #else INFO("PERIPHERALS_AUTO_INIT not enabled! Peripherals (including sys_time) need explicit initialization.") #endif /* PERIPHERALS_AUTO_INIT */ }
/************************************************************************* main ==== **************************************************************************/ bool USBStart(void) { int c; // initialise stack USBInit(); // register descriptors USBRegisterDescriptors(abDescriptors); // register class request handler USBRegisterRequestHandler(REQTYPE_TYPE_CLASS, HandleClassRequest, abClassReqData); // register endpoint handlers USBHwRegisterEPIntHandler(INT_IN_EP, NULL); USBHwRegisterEPIntHandler(BULK_IN_EP, BulkIn); USBHwRegisterEPIntHandler(BULK_OUT_EP, BulkOut); // register frame handler USBHwRegisterFrameHandler(USBFrameHandler); // register device event handler USBHwRegisterDevIntHandler(USBDevIntHandler); // initialise VCOM VCOM_init(); VICVectCntl22 = 0x01; VICVectAddr22 = (int)USBIntHandler; // set up USB interrupt VICIntSelect &= ~(1<<22); // select IRQ for USB VICIntEnable |= (1<<22); // connect to bus USBHwConnect(TRUE); #if TCM // echo any character received (do USB stuff in interrupt) while (1) { c = VCOM_getchar(); if (c != EOF) { // show on console if ((c == 9) || (c == 10) || (c == 13) || ((c >= 32) && (c <= 126))) { DBG("%c", c); } else { DBG("."); } VCOM_putchar(c); } } return 0; #endif return true; }
void init_ap( void ) { #ifndef SINGLE_MCU /** init done in main_fbw in single MCU */ hw_init(); sys_time_init(); #ifdef LED led_init(); #endif #ifdef ADC adc_init(); #endif #endif /* SINGLE_MCU */ /************* Sensors initialization ***************/ #ifdef USE_INFRARED ir_init(); #endif #ifdef USE_GYRO gyro_init(); #endif #ifdef USE_GPS gps_init(); #endif #ifdef USE_UART0 Uart0Init(); #endif #ifdef USE_UART1 Uart1Init(); #endif #ifdef USE_UART2 Uart2Init(); #endif #ifdef USE_UART3 Uart3Init(); #endif #ifdef USE_USB_SERIAL VCOM_init(); #endif #ifdef USE_GPIO GpioInit(); #endif #ifdef USE_I2C0 i2c0_init(); #endif #ifdef USE_I2C1 i2c1_init(); #endif #ifdef USE_I2C2 i2c2_init(); #endif /************* Links initialization ***************/ #if defined USE_SPI spi_init(); #endif #if defined MCU_SPI_LINK link_mcu_init(); #endif #ifdef MODEM modem_init(); #endif /************ Internal status ***************/ h_ctl_init(); v_ctl_init(); estimator_init(); #ifdef ALT_KALMAN alt_kalman_init(); #endif nav_init(); modules_init(); /** - start interrupt task */ int_enable(); /** wait 0.5s (historical :-) */ sys_time_usleep(500000); #if defined GPS_CONFIGURE gps_configure_uart(); #endif #if defined DATALINK #if DATALINK == XBEE xbee_init(); #endif #endif /* DATALINK */ #if defined AEROCOMM_DATA_PIN IO0DIR |= _BV(AEROCOMM_DATA_PIN); IO0SET = _BV(AEROCOMM_DATA_PIN); #endif power_switch = FALSE; /************ Multi-uavs status ***************/ #ifdef TRAFFIC_INFO traffic_info_init(); #endif }