예제 #1
0
void SYS_Initialize ( void* data )
{
    /* Core Processor Initialization */
    SYS_CLK_Initialize( NULL );
    sysObj.sysDevcon = SYS_DEVCON_Initialize(SYS_DEVCON_INDEX_0, (SYS_MODULE_INIT*)&sysDevconInit);
    SYS_DEVCON_PerformanceConfig(SYS_CLK_SystemFrequencyGet());
    SYS_DEVCON_JTAGDisable();
    SYS_PORTS_Initialize();

    /* Initialize Drivers */
    /* Initialize USB Driver */ 
    sysObj.drvUSBObject = DRV_USBFS_Initialize(DRV_USBFS_INDEX_0, (SYS_MODULE_INIT *) &drvUSBInit);

    /* Initialize System Services */
    SYS_INT_Initialize();

    /* Initialize Middleware */

    /* Copy the UID to the USB descriptor. */
    UIDStore_Init();
    UIDStore_AsUnicodeString(BootloaderUSBDescriptor_UnicodeUID());

    /* Initialize the USB device layer */
    sysObj.usbDevObject0 = USB_DEVICE_Initialize(
        USB_DEVICE_INDEX_0,
        (SYS_MODULE_INIT*) BootloaderUSBDescriptor_GetDeviceConfig());

    /* Enable Global Interrupts */
    SYS_INT_Enable();

    /* Initialize the Application */
    Bootloader_Initialize();
}
예제 #2
0
파일: app.c 프로젝트: hezmand/ja-rule
void APP_Initialize(void) {
#ifdef PRE_APP_INIT_HOOK
  PRE_APP_INIT_HOOK();
#endif

  // We can do this after USB_DEVICE_Initialize() has been called since it's
  // not used until we reach the tasks function.
  UIDStore_AsUnicodeString(USBDescriptor_UnicodeUID());

  CoarseTimer_Settings timer_settings = {
    .timer_id = AS_TIMER_ID(COARSE_TIMER_ID),
    .interrupt_source = AS_TIMER_INTERRUPT_SOURCE(COARSE_TIMER_ID)
  };
  SYS_INT_VectorPrioritySet(AS_TIMER_INTERRUPT_VECTOR(COARSE_TIMER_ID),
                            INT_PRIORITY_LEVEL6);
  CoarseTimer_Initialize(&timer_settings);

  // Initialize the Logging system, bottom up
  USBTransport_Initialize(NULL);
  USBConsole_Initialize();
  SysLog_Initialize(NULL);

  // Initialize the DMX / RDM Transceiver
  TransceiverHardwareSettings transceiver_settings = {
    .usart = AS_USART_ID(TRANSCEIVER_UART),
    .usart_vector = AS_USART_INTERRUPT_VECTOR(TRANSCEIVER_UART),
    .usart_tx_source = AS_USART_INTERRUPT_TX_SOURCE(TRANSCEIVER_UART),
    .usart_rx_source = AS_USART_INTERRUPT_RX_SOURCE(TRANSCEIVER_UART),
    .usart_error_source = AS_USART_INTERRUPT_ERROR_SOURCE(TRANSCEIVER_UART),
    .port = TRANSCEIVER_PORT,
    .break_bit = TRANSCEIVER_PORT_BIT,
    .tx_enable_bit = TRANSCEIVER_TX_ENABLE_PORT_BIT,
    .rx_enable_bit = TRANSCEIVER_RX_ENABLE_PORT_BIT,
    .input_capture_module = AS_IC_ID(TRANSCEIVER_IC),
    .input_capture_vector = AS_IC_INTERRUPT_VECTOR(TRANSCEIVER_IC),
    .input_capture_source = AS_IC_INTERRUPT_SOURCE(TRANSCEIVER_IC),
    .timer_module_id = AS_TIMER_ID(TRANSCEIVER_TIMER),
    .timer_vector = AS_TIMER_INTERRUPT_VECTOR(TRANSCEIVER_TIMER),
    .timer_source = AS_TIMER_INTERRUPT_SOURCE(TRANSCEIVER_TIMER),
    .input_capture_timer = AS_IC_TMR_ID(TRANSCEIVER_TIMER),
  };
  Transceiver_Initialize(&transceiver_settings, NULL, NULL);

  // Base RDM Responder
  RDMResponderSettings responder_settings = {
    .identify_port = RDM_RESPONDER_IDENTIFY_PORT,
    .identify_bit = RDM_RESPONDER_IDENTIFY_PORT_BIT,
    .mute_port = RDM_RESPONDER_MUTE_PORT,
    .mute_bit = RDM_RESPONDER_MUTE_PORT_BIT,
  };
  memcpy(responder_settings.uid, UIDStore_GetUID(), UID_LENGTH);
  RDMResponder_Initialize(&responder_settings);
  ReceiverCounters_ResetCounters();

  // RDM Handler
  RDMHandlerSettings rdm_handler_settings = {
    .default_model = LED_MODEL_ID,
    .send_callback = NULL
  };
  RDMHandler_Initialize(&rdm_handler_settings);

  // Initialize RDM Models, keep these in Model ID order.
  LEDModel_Initialize();
  RDMHandler_AddModel(&LED_MODEL_ENTRY);

  ProxyModel_Initialize();
  RDMHandler_AddModel(&PROXY_MODEL_ENTRY);

  MovingLightModel_Initialize();
  RDMHandler_AddModel(&MOVING_LIGHT_MODEL_ENTRY);

  SensorModel_Initialize();
  RDMHandler_AddModel(&SENSOR_MODEL_ENTRY);

  NetworkModel_Initialize();
  RDMHandler_AddModel(&NETWORK_MODEL_ENTRY);

  DimmerModel_Initialize();
  RDMHandler_AddModel(&DIMMER_MODEL_ENTRY);

  // Initialize the Host message layers.
  MessageHandler_Initialize(NULL);
  StreamDecoder_Initialize(NULL);

  Flags_Initialize();

  // SPI DMX Output
  SPIRGBConfiguration spi_config;
  spi_config.module_id = SPI_MODULE_ID;
  spi_config.baud_rate = SPI_BAUD_RATE;
  spi_config.use_enhanced_buffering = SPI_USE_ENHANCED_BUFFERING;
  SPIRGB_Init(&spi_config);

  // Send a frame with all pixels set to 0.
  SPIRGB_BeginUpdate();
  SPIRGB_CompleteUpdate();
}