Microchip® Advanced Software Framework

drivers/tc/unit_test/unit_test.c File Reference

SAM TC Unit test.

Copyright (c) 2013-2020 Microchip Technology Inc. and its subsidiaries.

#include <asf.h>
#include <stdio_serial.h>
#include <string.h>
#include "conf_test.h"

Functions

static void cdc_uart_init (void)
 Initialize the USART for unit test. More...
 
int main (void)
 Run TC unit tests. More...
 
static void run_16bit_capture_and_compare_test (const struct test_case *test)
 Test capture and compare. More...
 
static void run_basic_functionality_test (const struct test_case *test)
 Test basic functionality. More...
 
static void run_callback_test (const struct test_case *test)
 Test the callback API. More...
 
static void run_init_test (const struct test_case *test)
 Test of tc_init() and tc_get_config_defaults() More...
 
static void run_reset_32bit_master_test (const struct test_case *test)
 Test initializing and resetting 32-bit TC and reinitialize. More...
 
static void tc_callback_function (struct tc_module *const module_inst)
 Function used to test callback API. More...
 

Variables

bool basic_functionality_test_passed = false
 
volatile uint32_t callback_function_entered = 0
 
struct usart_module cdc_uart_module
 
bool tc_init_success = 0
 
struct tc_config tc_test0_config
 
struct tc_module tc_test0_module
 
struct tc_config tc_test1_config
 
struct tc_module tc_test1_module
 

static void cdc_uart_init ( void  )
static
static void run_16bit_capture_and_compare_test ( const struct test_case test)
static

Test capture and compare.

This test uses TC module 0 as a PWM generator (compare function). TC module 1 will be set to capture the signal from TC module 0 to test the capture functionality.

Parameters
testCurrent test case.

References callback_function_entered, tc_config::clock_prescaler, tc_16bit_config::compare_capture_channel, tc_config::counter_16_bit, extint_chan_conf::detection_criteria, events_config::edge_detect, tc_config::enable_capture_on_channel, tc_pwm_channel::enabled, events_allocate(), events_attach_user(), EVENTS_EDGE_DETECT_NONE, events_get_config_defaults(), EVENTS_PATH_ASYNCHRONOUS, extint_chan_set_config(), EXTINT_DETECT_HIGH, extint_enable_events(), EXTINT_PULL_UP, extint_chan_conf::filter_input_signal, extint_events::generate_event_on_detect, events_config::generator, extint_chan_conf::gpio_pin, extint_chan_conf::gpio_pin_mux, extint_chan_conf::gpio_pin_pull, tc_events::on_event_perform_action, events_config::path, tc_pwm_channel::pin_mux, tc_pwm_channel::pin_out, tc_config::pwm_channel, system_clock_source_get_hz(), SYSTEM_CLOCK_SOURCE_OSC16M, TC_CALLBACK_CC_CHANNEL0, tc_callback_function(), TC_CLOCK_PRESCALER_DIV1, TC_COMPARE_CAPTURE_CHANNEL_0, TC_COMPARE_CAPTURE_CHANNEL_1, tc_enable(), tc_enable_callback(), tc_enable_events(), TC_EVENT_ACTION_PPW, tc_get_capture_value(), tc_get_config_defaults(), tc_init(), tc_init_success, tc_register_callback(), tc_reset(), tc_test0_config, tc_test0_module, tc_test1_config, tc_test1_module, TC_WAVE_GENERATION_MATCH_PWM, test_assert_true, extint_chan_conf::wake_if_sleeping, and tc_config::wave_generation.

Referenced by main().

static void run_basic_functionality_test ( const struct test_case test)
static

Test basic functionality.

This test tests the basic functionality for the TC. It tests the following functions:

Parameters
testCurrent test case.

References basic_functionality_test_passed, tc_enable(), tc_get_config_defaults(), tc_get_count_value(), tc_init(), tc_init_success, tc_reset(), tc_set_count_value(), tc_start_counter(), tc_stop_counter(), tc_test0_config, tc_test0_module, and test_assert_true.

Referenced by main().

static void run_init_test ( const struct test_case test)
static

Test of tc_init() and tc_get_config_defaults()

This test is used to initialize the tcx_module structs and associate the given hw module with the struct. This test should be run at the very beginning of testing as other tests depend on the result of this test.

References STATUS_OK, tc_get_config_defaults(), tc_init(), tc_init_success, tc_test0_config, tc_test0_module, tc_test1_config, tc_test1_module, and test_assert_true.

Referenced by main().

static void run_reset_32bit_master_test ( const struct test_case test)
static

Test initializing and resetting 32-bit TC and reinitialize.

This test tests the software reset of a 32-bit TC by the use of the tc_reset(). It also test re-enabling the two TC modules used in the 32-bit TC into two separate 16-bit TC's.

Parameters
testCurrent test case.

References tc_config::counter_size, TC_COUNTER_SIZE_16BIT, TC_COUNTER_SIZE_32BIT, tc_enable(), tc_get_config_defaults(), tc_init(), tc_init_success, tc_is_syncing(), tc_reset(), tc_test0_config, tc_test0_module, tc_test1_config, tc_test1_module, test_assert_false, and test_assert_true.

Referenced by main().

static void tc_callback_function ( struct tc_module *const  module_inst)
static

Function used to test callback API.

This function indicates that the callback function has been invoked.

References callback_function_entered.

Referenced by run_16bit_capture_and_compare_test(), and run_callback_test().

bool basic_functionality_test_passed = false
struct usart_module cdc_uart_module