Esempio n. 1
0
void measure_irq_speed(void)
{
#undef	TESTS
#define	TESTS 64

	int n;
	dword t;
	float f;
	float test_timePR[TESTS];
	float test_timeRP[TESTS];
	float timer_time=1193181;		// timer freq in Hz

	test_irq();
	for(n=0; n<TESTS; n++)
	{
		t=test_irq();
		test_timePR[n]=(t&0x0000FFFF);
		test_timeRP[n]=(t&0xFFFF0000)>>16;
	}
	f=0;
	for(n=0; n<TESTS; n++) f=f+test_timePR[n];
	f=f/TESTS;
	irqPR_speed=(f/2)/timer_time;

	f=0;
	for(n=0; n<TESTS; n++) f=f+test_timeRP[n];
	f=f/TESTS;
	irqRP_speed=(f/2)/timer_time;
}
Esempio n. 2
0
/**
 * @brief	GPIO Interrupt handler function
 * @internal
 *
 * Invoked whenever an activated gpio interrupt is triggered by a rising
 * or falling edge.
 */
void __attribute__((__no_instrument_function__)) GPIO_IRQHandler(void)
{
    if (IO_INT_STAT & BIT0) {										/* interrupt(s) on PORT0 pending */
        unsigned long int_stat_f = IO0_INT_STAT_F;					/* save content */
        unsigned long int_stat_r = IO0_INT_STAT_R;					/* save content */

        IO0_INT_CLR = int_stat_f;									/* clear flags of fallen pins */
        IO0_INT_CLR = int_stat_r;									/* clear flags of risen pins */

        test_irq(0, int_stat_f, int_stat_r, gpioint0);
    }

    if (IO_INT_STAT & BIT2) {										/* interrupt(s) on PORT2 pending */
        unsigned long int_stat_f = IO2_INT_STAT_F;					/* save content */
        unsigned long int_stat_r = IO2_INT_STAT_R;					/* save content */

        IO2_INT_CLR = int_stat_f;									/* clear flags of fallen pins */
        IO2_INT_CLR = int_stat_r;									/* clear flags of risen pins */

        test_irq(2, int_stat_f, int_stat_r, gpioint2);
    }

    VICVectAddr = 0;												/* Acknowledge Interrupt */
}
Esempio n. 3
0
File: gpio.c Progetto: JMR-b/RIOT
void GPIO_IRQHandler(void)
{
    if (IO_INT_STAT & BIT0) {                       /* interrupt(s) on PORT0 pending */
        unsigned long int_stat_f = IO0_INT_STAT_F;  /* save content */
        unsigned long int_stat_r = IO0_INT_STAT_R;  /* save content */

        IO0_INT_CLR = int_stat_f;                   /* clear flags of fallen pins */
        IO0_INT_CLR = int_stat_r;                   /* clear flags of risen pins */

        test_irq(0, int_stat_f, int_stat_r);
    }

    if (IO_INT_STAT & BIT2) {                       /* interrupt(s) on PORT2 pending */
        unsigned long int_stat_f = IO2_INT_STAT_F;  /* save content */
        unsigned long int_stat_r = IO2_INT_STAT_R;  /* save content */

        IO2_INT_CLR = int_stat_f;                   /* clear flags of fallen pins */
        IO2_INT_CLR = int_stat_r;                   /* clear flags of risen pins */

        test_irq(2, int_stat_f, int_stat_r);
    }

    VICVectAddr = 0;                                /* Acknowledge Interrupt */
}