/**
 *  Configure pin irq QT1070
*/
void configure_pin_qt1070(void)
{
	/* Configure Pio and interrupt */
	pio_configure(&qt1070_irq[0], 1);
	pio_configure_it(&qt1070_irq[0]);
	pio_add_handler_to_group(qt1070_irq[0].group, qt1070_irq[0].mask, qt1070_irq_handler, NULL);
	pio_enable_it(&qt1070_irq[0]);
}
/**
 *  \brief Configure the Pushbuttons
 *
 *  Configure the PIO as inputs and generate corresponding interrupt when
 *  pressed or released.
 */
static void _configure_buttons(void)
{
	int i = 0;
	for (i = 0; i <  ARRAY_SIZE(button_pins); ++i)
	{
		/* Configure pios as inputs. */
		pio_configure(&button_pins[i], 1);
		/* Adjust pio debounce filter parameters, uses 10 Hz filter. */
		pio_set_debounce_filter(&button_pins[i], 10);
		/* Initialize pios interrupt with its handlers */
		pio_configure_it(&button_pins[i]);
		pio_add_handler_to_group(button_pins[i].group,
					 button_pins[i].mask,
					 push_button_handler,
					 NULL);
		pio_enable_it(button_pins);
	}
}
Beispiel #3
0
/**
 *  \brief getting-started Application entry point.
 *
 *  \return Unused (ANSI-C compatibility).
 */
int main(void)
{
	int tests = 0;
	int test_fail = 0;

	printf("<?xml version=\"1.0\" encoding=\"UTF-8\">\r\n\r\n");
	printf("<testsuite>\r\n");
	printf("  <testcase classname=\"pio.setup\" name=\"Setup\">\r\n");
	printf("    <system-out>\r\n");

	/* Output example information */
	console_example_info("PIO Testing Example");

	/* Configure PIO for input acquisition */
	pio_configure(&pio_input, 1);
	pio_set_debounce_filter(&pio_input, 100);

	/* Initialize pios interrupt with its handlers, see
	 * PIO definition in board.h. */
	pio_configure_it(&pio_input);
	pio_add_handler_to_group(pio_input.group, pio_input.mask, pio_handler, NULL);

	/* Configure PIO for output generation */
	pio_configure(&pio_output, 1);

	/* Reset event counts */
	_pio_event = 0;
	printf("    </system-out>\r\n");
	printf("  </testcase>\r\n");

	printf("<testsuite>\r\n");
	printf("  <testcase classname=\"pio.level.low\" name='PIO: Set/Get PIO LOW LEVEL'>\r\n");
	printf("    <system-out>\r\n");
	_pio_event = 0;
	pio_clear(&pio_output);
	timer_wait(10);
	printf("    </system-out>\r\n");
	if (!(pio_get(&pio_input) == 0) || !(pio_get(&pio_output) == 0)) {
		test_fail++;
		printf("    <error type=\"error\" />\r\n");
	}
	tests++;
	printf("  </testcase>\r\n");
	
	printf("  <testcase classname=\"pio.level.high\" name=\"PIO: Get PIO HIGH LEVEL\">\r\n");
    printf("    <system-out>\r\n");
	_pio_event = 0;
	pio_set(&pio_output);
	timer_wait(10);
	printf("    </system-out>\r\n");
	if (!(pio_get(&pio_input) == 1) || !(pio_get(&pio_output) == 1)) {
		test_fail++;
		printf("    <error type=\"error\" />\r\n");
	}
	tests++;
	printf("  </testcase>\r\n");
	
	printf("  <testcase classname=\"pio.irq.edge.falling\" name=\"PIO: Get PIO IRQ FALLING EDGE\">\r\n");
    printf("    <system-out>\r\n");
	_pio_event = 0;
	pio_set(&pio_output);

	pio_input.attribute |= PIO_IT_FALL_EDGE;
	pio_configure(&pio_input, 1);
	pio_enable_it(&pio_input);

	pio_clear(&pio_output);
	timer_wait(10);
	printf("    </system-out>\r\n");
	if (_pio_event != 1) {
		test_fail++;
		printf("    <error type=\"error\" />\r\n");
	}
	tests++;
	pio_input.attribute &= ~PIO_IT_FALL_EDGE;
	printf("  </test>\r\n");
	
	printf("  <testcase classname=\"pio.irq.edge.rising\" name=\"PIO: Get PIO IRQ RISING EDGE\">\r\n");
    printf("    <system-out>\r\n");
	_pio_event = 0;
	pio_clear(&pio_output);

	pio_input.attribute |= PIO_IT_RISE_EDGE;
	pio_configure(&pio_input, 1);
	pio_enable_it(&pio_input);

	pio_set(&pio_output);
	timer_wait(10);
	printf("    </system-out>\r\n");
	if (_pio_event != 1) {
		test_fail++;
		printf("    <error error=\"error\">event(s): %d</error>\r\n", _pio_event);
	}
	tests++;
	pio_input.attribute &= ~PIO_IT_RISE_EDGE;
	printf("  </test>\r\n");
	
	printf("  <testcase classname=\"pio.irq.edge.both\" name=\"PIO: Get PIO IRQ BOTH EDGE\">\r\n");
#ifdef PIO_IT_BOTH_EDGE
    printf("    <system-out>\r\n");
	_pio_event = 0;
	pio_set(&pio_output);

	pio_input.attribute |= PIO_IT_BOTH_EDGE;
	pio_configure(&pio_input, 1);
	pio_enable_it(&pio_input);

	pio_clear(&pio_output);
	timer_wait(10);

	pio_set(&pio_output);
	timer_wait(10);
	printf("    </system-out>\r\n");
	if (_pio_event != 2) {
		test_fail++;
		printf("    <error type=\"error\" />\r\n");
	}
	tests++;
	pio_input.attribute &= ~PIO_IT_BOTH_EDGE;
#else
	printf("    <skip />\r\n");
#endif	
	printf("  </testcase>\r\n");
	
	printf("  <testcase classname=\"pio.irq.level.low\" name=\"PIO: Get PIO IRQ LEVEL LOW\">\r\n");
    printf("    <system-out>\r\n");
	pio_set(&pio_output);

	pio_input.attribute |= PIO_IT_LOW_LEVEL;
	pio_configure(&pio_input, 1);
	pio_enable_it(&pio_input);

	_pio_event = 0;
	pio_clear(&pio_output);
	timer_wait(10);
	pio_set(&pio_output);
	printf("    </system-out>\r\n");
	if (_pio_event < 1) {
		test_fail++;
		printf("    <error type=\"error\" />\r\n");
	}
	tests++;
	pio_input.attribute &= ~PIO_IT_LOW_LEVEL;
	printf("  </testcase>\r\n");
	
	printf("  <testcase classname=\"pio.irq.level.high\" name=\"PIO: Get PIO IRQ LEVEL HIGH\">\r\n");
    printf("    <system-out>\r\n");
	_pio_event = 0;
	pio_clear(&pio_output);

	pio_input.attribute |= PIO_IT_HIGH_LEVEL;
	pio_configure(&pio_input, 1);
	pio_enable_it(&pio_input);
	pio_set(&pio_output);
	timer_wait(10);
	pio_clear(&pio_output);
	printf("    </system-out>\r\n");
	if (_pio_event < 1) {
		test_fail++;
		printf("    <error type=\"error\" />\r\n");
	}
	tests++;
	pio_input.attribute &= ~PIO_IT_HIGH_LEVEL;
	printf("  </test>\r\n");
	
	printf("  <testcase classname=\"pio.mode.pull.up\" name=\"PIO: Get PIO PULL UP\">\r\n");
	printf("    <system-out>\r\n");
	pio_clear(&pio_output);
	pio_output.type = PIO_INPUT;
	pio_output.attribute |= PIO_PULLUP;
	pio_configure(&pio_output, 1);
	pio_configure(&pio_input, 1);

	printf("    </system-out>\r\n");
	if (pio_get(&pio_input) != 1) {
		test_fail++;
		printf("   <error type=\"error\" />\r\n");
	}
	tests++;
	pio_output.attribute &= ~PIO_PULLUP;
	pio_output.type = PIO_OUTPUT_0;
	pio_configure(&pio_output, 1);
	printf("  </testcase>\r\n");

    printf("  <statistics>\r\n");
	printf("    <failures>%d</failures>\r\n", test_fail);
	printf("    <tests>%d</tests>\r\n", tests);
	printf("  </statistics>\r\n");
	printf("</testsuite>\r\n");
	
	while (1);
}