void thread_init() { #ifdef USE_OV try_ov = ov_init(); #endif #ifdef USE_MT try_mt = mt_init(); #endif }
/** * \brief Initialize PIO capture and the OV7740 image sensor. * * \return 0 on success, 1 otherwise. */ static uint32_t capture_init(void) { twi_options_t opt; /* Init Vsync handler */ init_vsync_interrupts(); /* Init PIO capture */ pio_capture_init(OV_DATA_BUS_PIO, OV_DATA_BUS_ID); /* Turn on OV7740 image sensor using power pin */ ov_power(true, OV_POWER_PIO, OV_POWER_MASK); /* Init PCK0 at 24 Mhz */ PMC->PMC_PCK[0] = (PMC_PCK_PRES_CLK_4 | PMC_PCK_CSS_PLLA_CLK); PMC->PMC_SCER = PMC_SCER_PCK0; while (!(PMC->PMC_SCSR & PMC_SCSR_PCK0)) { } /* Enable TWI peripheral */ pmc_enable_periph_clk(ID_BOARD_TWI); /* Init TWI peripheral */ opt.master_clk = sysclk_get_cpu_hz(); opt.speed = TWI_CLK; twi_master_init(BOARD_TWI, &opt); /* Configure TWI interrupts */ NVIC_DisableIRQ(BOARD_TWI_IRQn); NVIC_ClearPendingIRQ(BOARD_TWI_IRQn); NVIC_SetPriority(BOARD_TWI_IRQn, 0); NVIC_EnableIRQ(BOARD_TWI_IRQn); /* OV7740 initialization*/ delay_ms(1000); if (ov_init(BOARD_TWI) == 0) { /* OV7740 configuration */ ov_configure(BOARD_TWI, TEST_PATTERN); /* Wait 3 seconds to let the image sensor to adapt to the * environment */ delay_ms(3000); return 0; } else { return 1; } }