void PWM_ISR ( void ) { ISR_ENTRY(); // LED_TOGGLE(2); if (servos_idx == 0) { IO1CLR = _BV(SERV1_RESET_PIN); IO1SET = _BV(SERV1_DATA_PIN); PWMMR0 = servos_values[servos_idx]; servos_delay = SERVO_REFRESH_TICS - servos_values[servos_idx]; PWMLER = PWMLER_LATCH0; servos_idx++; } else if (servos_idx < _4015_NB_CHANNELS) { IO1CLR = _BV(SERV1_DATA_PIN); PWMMR0 = servos_values[servos_idx]; servos_delay -= servos_values[servos_idx]; PWMLER = PWMLER_LATCH0; servos_idx++; } else { IO1SET = _BV(SERV1_RESET_PIN); PWMMR0 = servos_delay; PWMLER = PWMLER_LATCH0; servos_idx = 0; } /* clear the interrupt */ PWMIR = PWMIR_MRI_SERV1; VICVectAddr = 0x00000000; ISR_EXIT(); }
static void SSP_ISR(void) { ISR_ENTRY(); MmOnSpiIt(); VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
__attribute__ ((naked)) void TIMER_0_ISR_0(void) { ISR_ENTER(); DEBUG("\nenter ISR\n"); irq_handler(TIMER_0, TIMER_0_DEV_0, TIMER_0_DEV_1); DEBUG("leave ISR\n\n"); ISR_EXIT(); }
/** Interrupt handler Simply calls the USB ISR, then signals end of interrupt to VIC */ void USBIntHandler(void) { ISR_ENTRY(); USBHwISR(); VICVectAddr = 0x00; // dummy write to VIC to signal end of ISR ISR_EXIT(); }
static void NACKEDFUNC ATTR ws2812_int (void) /* SSC Interrupt Handler */ { ISR_ENTRY(); ws2812_int_safe(); *AT91C_AIC_EOICR = 0; /* End of Interrupt */ ISR_EXIT(); }
void EXTINT_ISR(void) { ISR_ENTRY(); /* no, we won't do anything asynchronously, so just notify */ ms2001_status = MS2001_GOT_EOC; /* clear EINT */ EXTINT = (1<<MS2001_DRDY_EINT); VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
void uart1_ISR(void) { // perform proper ISR entry so thumb-interwork works properly ISR_ENTRY(); uart_ISR(&uart1); VICVectAddr = 0x00000000; // clear this interrupt from the VIC ISR_EXIT(); // recover registers and return }
void EXTINT_ISR(void) { ISR_ENTRY(); baro_scp_read(); SetBit(EXTINT, SPI1_DRDY_EINT); /* clear EINT2 */ VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
/** Interrupt handler Simply calls the USB ISR, then signals end of interrupt to VIC */ void USBIntHandler(void) { // do we really need this entry/exit stuff? ISR_ENTRY(); USBHwISR(); VICVectAddr = 0x00; // dummy write to VIC to signal end of ISR ISR_EXIT(); }
/******* External interrupt: Data input available ***********/ void EXTINT_ISR(void) { ISR_ENTRY(); max3100_data_available = true; SetBit(EXTINT, MAX3100_IRQ_EINT); /* clear extint */ VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
void i2c1_ISR(void) { ISR_ENTRY(); uint32_t state = I2C1STAT; I2cAutomaton(state,&i2c1); I2cClearIT(i2c1.reg_addr); VICVectAddr = 0x00000000; // clear this interrupt from the VIC ISR_EXIT(); // recover registers and return }
void EXTINT_ISR(void) { ISR_ENTRY(); /* scp1000 has measured new data, now it's time to read it from spi */ scp1000_read(); EXTINT |= 1 << SCP_DRDY_EINT; /* clear EINT */ VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
/** Interrupt handler Simply calls the USB ISR, then signals end of interrupt to VIC */ void USBIntHandler(void) { ISR_ENTRY(); //DBG("Z"); USBHwISR(); //DBG("z"); VICVectAddr = 0x00; // dummy write to VIC to signal end of ISR //DBG("Exit int\n"); ISR_EXIT(); }
void EXTINT0_ISR(void) { ISR_ENTRY(); //ASSERT((max1168_status == MAX1168_SENDING_REQ), DEBUG_MAX_1168, MAX1168_ERR_SPURIOUS_EOC); max1168_status = MAX1168_GOT_EOC; //SetBit(EXTINT, MAX1168_EOC_EINT); /* clear extint0 */ EXTINT = (1<<MAX1168_EOC_EINT); VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
void i2c1_ISR(void) { ISR_ENTRY(); uint32_t state = I2C1_STATUS_REG; i2c1_automaton(state); I2c1ClearIT(); VICVectAddr = 0x00000000; // clear this interrupt from the VIC ISR_EXIT(); // recover registers and return }
void EXTINT_ISR(void) { ISR_ENTRY(); //LED_TOGGLE(3); /* no, we won't do anything asynchronously, so just notify */ micromag_status = MM_GOT_EOC; /* clear EINT */ SetBit(EXTINT,MM_DRDY_EINT); // EXTINT = (1<<MM_DRDY_EINT); VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
void ADC0_ISR ( void ) { ISR_ENTRY(); uint32_t tmp = AD0GDR; uint16_t tmp2 = (uint16_t)(tmp >> 6) & 0x03FF; BatteryISRHandler(tmp2); /* trigger next convertion */ T0MR1 += BOOZ2_ANALOG_BATTERY_PERIOD; /* lower clock */ T0EMR &= ~TEMR_EM1; VICVectAddr = 0x00000000; // clear this interrupt from the VIC ISR_EXIT(); // recover registers and return }
__attribute__((naked)) void isr_exti4_15(void) { ISR_ENTER(); if (EXTI->PR & EXTI_PR_PR4) { EXTI->PR |= EXTI_PR_PR4; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_4].cb(); } else if (EXTI->PR & EXTI_PR_PR5) { EXTI->PR |= EXTI_PR_PR5; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_5].cb(); } else if (EXTI->PR & EXTI_PR_PR6) { EXTI->PR |= EXTI_PR_PR6; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_6].cb(); } else if (EXTI->PR & EXTI_PR_PR7) { EXTI->PR |= EXTI_PR_PR7; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_7].cb(); } else if (EXTI->PR & EXTI_PR_PR8) { EXTI->PR |= EXTI_PR_PR8; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_8].cb(); } else if (EXTI->PR & EXTI_PR_PR9) { EXTI->PR |= EXTI_PR_PR9; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_9].cb(); } else if (EXTI->PR & EXTI_PR_PR10) { EXTI->PR |= EXTI_PR_PR10; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_10].cb(); } else if (EXTI->PR & EXTI_PR_PR11) { EXTI->PR |= EXTI_PR_PR11; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_11].cb(); } else if (EXTI->PR & EXTI_PR_PR12) { EXTI->PR |= EXTI_PR_PR12; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_12].cb(); } else if (EXTI->PR & EXTI_PR_PR13) { EXTI->PR |= EXTI_PR_PR13; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_13].cb(); } else if (EXTI->PR & EXTI_PR_PR14) { EXTI->PR |= EXTI_PR_PR14; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_14].cb(); } else if (EXTI->PR & EXTI_PR_PR15) { EXTI->PR |= EXTI_PR_PR15; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_15].cb(); } ISR_EXIT(); }
__attribute__((naked)) void isr_exti4(void) { ISR_ENTER(); if (EXTI->PR & EXTI_PR_PR4) { EXTI->PR |= EXTI_PR_PR4; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_4].cb(config[GPIO_IRQ_4].arg); } if (sched_context_switch_request) { thread_yield(); } ISR_EXIT(); }
__attribute__((naked)) void isr_exti0_1(void) { ISR_ENTER(); if (EXTI->PR & EXTI_PR_PR0) { EXTI->PR |= EXTI_PR_PR0; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_0].cb(); } else if (EXTI->PR & EXTI_PR_PR1) { EXTI->PR |= EXTI_PR_PR1; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_1].cb(); } ISR_EXIT(); }
__attribute__((naked)) void isr_exti2_3(void) { ISR_ENTER(); if (EXTI->PR & EXTI_PR_PR2) { EXTI->PR |= EXTI_PR_PR2; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_2].cb(); } else if (EXTI->PR & EXTI_PR_PR3) { EXTI->PR |= EXTI_PR_PR3; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_3].cb(); } ISR_EXIT(); }
__attribute__((naked)) void RTT_ISR(void) { ISR_ENTER(); if (RTT_DEV->CRL & RTC_CRL_ALRF) { RTT_DEV->CRL &= ~(RTC_CRL_ALRF); alarm_cb(alarm_arg); } if (sched_context_switch_request) { thread_yield(); } ISR_EXIT(); }
void NACKEDFUNC ATTR system_int (void) { /* System Interrupt Handler */ volatile AT91S_PITC * pPIT = AT91C_BASE_PITC; ISR_ENTRY(); if (pPIT->PITC_PISR & AT91C_PITC_PITS) { /* Check PIT Interrupt */ *AT91C_AIC_EOICR = pPIT->PITC_PIVR; /* Ack & End of Interrupt */ timeval++; /* Increment Time Tick */ } else { *AT91C_AIC_EOICR = 0; /* End of Interrupt */ } ISR_EXIT(); }
void EXTINT2_ISR(void) { ISR_ENTRY(); /* read dummy control byte reply */ uint8_t foo __attribute__ ((unused)) = SSPDR; /* trigger 2 bytes read */ SSPDR = 0; SSPDR = 0; /* enable timeout interrupt */ SpiEnableRti(); /* clear EINT2 */ SetBit(EXTINT,MM_DRDY_EINT); /* clear EINT2 */ VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
void NACKEDFUNC ATTR system_int (void) { /* System Interrupt Handler */ volatile AT91S_PITC * pPIT = AT91C_BASE_PITC; ISR_ENTRY(); if (pPIT->PITC_PISR & AT91C_PITC_PITS) { /* Check PIT Interrupt */ timeval++; /* Increment Time Tick */ if ((timeval % 500) == 0) { /* 500ms Elapsed ? */ *AT91C_PIOA_ODSR ^= LED4; /* Toggle LED4 */ } *AT91C_AIC_EOICR = pPIT->PITC_PIVR; /* Ack & End of Interrupt */ } else { *AT91C_AIC_EOICR = 0; /* End of Interrupt */ } ISR_EXIT(); }
void TIMER_1_ISR1(void) { ISR_ENTER(); uint32_t status = TIMER_1_DEV->TC_CHANNEL[0].TC_SR; if (status & TC_SR_CPAS) { TIMER_1_DEV->TC_CHANNEL[0].TC_IDR = TC_IDR_CPAS; config[TIMER_1].cb(0); } if (status & TC_SR_CPBS) { TIMER_1_DEV->TC_CHANNEL[0].TC_IDR = TC_IDR_CPBS; config[TIMER_1].cb(1); } if (status & TC_SR_CPCS) { TIMER_1_DEV->TC_CHANNEL[0].TC_IDR = TC_IDR_CPCS; config[TIMER_1].cb(2); } ISR_EXIT(); }
void TIMER_2_ISR2(void) { ISR_ENTER(); uint32_t status = TIMER_2_DEV->TC_CHANNEL[1].TC_SR; if (status & TC_SR_CPAS) { TIMER_2_DEV->TC_CHANNEL[1].TC_IDR = TC_IDR_CPAS; config[TIMER_2].cb(3); } else if (status & TC_SR_CPBS) { TIMER_2_DEV->TC_CHANNEL[1].TC_IDR = TC_IDR_CPBS; config[TIMER_2].cb(4); } else if (status & TC_SR_CPCS) { TIMER_2_DEV->TC_CHANNEL[1].TC_IDR = TC_IDR_CPCS; config[TIMER_2].cb(5); } ISR_EXIT(); }
__attribute__((naked)) void isr_exti15_10(void) { ISR_ENTER(); #ifdef GPIO_IRQ_10 if (EXTI->PR & EXTI_PR_PR10) { EXTI->PR |= EXTI_PR_PR10; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_10].cb(config[GPIO_IRQ_10].arg); } #endif #ifdef GPIO_IRQ_11 if (EXTI->PR & EXTI_PR_PR11) { EXTI->PR |= EXTI_PR_PR11; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_11].cb(config[GPIO_IRQ_11].arg); } #endif #ifdef GPIO_IRQ_12 if (EXTI->PR & EXTI_PR_PR12) { EXTI->PR |= EXTI_PR_PR12; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_12].cb(config[GPIO_IRQ_12].arg); } #endif #ifdef GPIO_IRQ_13 if (EXTI->PR & EXTI_PR_PR13) { EXTI->PR |= EXTI_PR_PR13; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_13].cb(config[GPIO_IRQ_13].arg); } #endif #ifdef GPIO_IRQ_14 if (EXTI->PR & EXTI_PR_PR14) { EXTI->PR |= EXTI_PR_PR14; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_14].cb(config[GPIO_IRQ_14].arg); } #endif #ifdef GPIO_IRQ_15 if (EXTI->PR & EXTI_PR_PR15) { EXTI->PR |= EXTI_PR_PR15; /* clear status bit by writing a 1 to it */ config[GPIO_IRQ_15].cb(config[GPIO_IRQ_15].arg); } #endif if (sched_context_switch_request) { thread_yield(); } ISR_EXIT(); }
static void SSP_ISR(void) { ISR_ENTRY(); switch (imu_spi_selected) { case SPI_SLAVE_MAX1168: max1168_got_interrupt_retrieve_values(); imu_spi_selected = SPI_NONE; break; case SPI_SLAVE_MM: micromag_got_interrupt_retrieve_values(); if (micromag_status == MM_DATA_AVAILABLE) imu_spi_selected = SPI_NONE; break; } VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }
static void SPI0_ISR(void) { ISR_ENTRY(); static uint8_t cnt = 0; LED_TOGGLE(1); if ( bit_is_set(S0SPSR, SPIF)) { /* transfer complete */ uint8_t foo = S0SPDR; S0SPDR = cnt; cnt++; } /* clear_it */ S0SPINT = 1<<SPI0IF; VICVectAddr = 0x00000000; /* clear this interrupt from the VIC */ ISR_EXIT(); }