/** * 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); } }
/** * \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); }