/* * Wind Speed translation : V = p*(2,25/t) * V: speed in mph * p: pulses per sampelperiod * t: sample period in sec */ void setupirq(){ DBG("Initialize Wind Cups...\n"); Chip_GPIOINT_Init(LPC_GPIOINT); Chip_GPIO_SetPinDIRInput(LPC_GPIO,2,13); Chip_GPIO_SetPinState(LPC_GPIO, 2, 13, true); Chip_IOCON_PinMux(LPC_IOCON, 2, 13, IOCON_MODE_PULLUP, IOCON_FUNC0); const uint32_t prescaleDivisor = 8; Chip_TIMER_Init(LPC_TIMER2); Chip_TIMER_PrescaleSet(LPC_TIMER2, prescaleDivisor - 1); Chip_TIMER_Enable(LPC_TIMER2); ticksPerSecond = Chip_Clock_GetSystemClockRate() / prescaleDivisor / 4; Chip_GPIOINT_SetIntFalling(LPC_GPIOINT, GPIOINT_PORT2, (1 << 13)); Chip_GPIOINT_ClearIntStatus(LPC_GPIOINT, GPIOINT_PORT2, (1 << 13)); NVIC_ClearPendingIRQ(EINT3_IRQn); NVIC_EnableIRQ(EINT3_IRQn); DBG("Initialize Wind Cups complete...\n"); }
/** * @brief Handle interrupt from GPIO pin or GPIO pin mapped to PININT * @return Nothing */ void GPIO_IRQ_HANDLER(void) { Chip_GPIOINT_ClearIntStatus(LPC_GPIOINT, GPIO_INTERRUPT_PORT, 1 << GPIO_INTERRUPT_PIN); Board_LED_Toggle(0); }