/** * @file timer.h * * @ingroup lpc176x * * @brief Timer API for the lpc176x bsp. */ /* * Copyright (c) 2014 Taller Technologies. * * @author Boretto Martin (martin.boretto@tallertechnologies.com) * @author Diaz Marcos (marcos.diaz@tallertechnologies.com) * @author Lenarduzzi Federico (federico.lenarduzzi@tallertechnologies.com) * @author Daniel Chicco (daniel.chicco@tallertechnologies.com) * * The license and distribution terms for this file may be * found in the file LICENSE in this distribution or at * http://www.rtems.org/license/LICENSE. */ #ifndef LIBBSP_ARM_LPC176X_TIMER_H #define LIBBSP_ARM_LPC176X_TIMER_H #include #ifdef __cplusplus extern "C" { #endif /* __cplusplus */ /** * @brief resets timer counter and stops it. * * @param tnumber the device to be reseted * @return RTEMS_SUCCESSFUL if the timer was reseted successfuly. */ rtems_status_code lpc176x_timer_reset( lpc176x_timer_number tnumber ); /** * @brief Sets mode of the timer (timer, counter rising, counter falling * or counter both edges) * * @param tnumber: the device to be setted * @param mode: the desired mode * @return RTEMS_SUCCESSFUL if the timer's mode was setted successfuly. */ rtems_status_code lpc176x_timer_set_mode( lpc176x_timer_number tnumber, lpc176x_timer_mode mode ); /** * @brief Starts the timer counter * * @param tnumber: the device to be started * @return RTEMS_SUCCESSFUL if the timer's was started successfuly. */ rtems_status_code lpc176x_timer_start( lpc176x_timer_number tnumber ); /** * @brief true if timer is started. * * @param tnumber: the timer number to check. * @param is_started: TRUE if the timer is running. * @return RTEMS_SUCCESSFUL if the started timer check was successfuly. */ rtems_status_code lpc176x_timer_is_started( lpc176x_timer_number tnumber, bool *is_started ); /** * @brief sets the resolution in microseconds of the timer * * @param tnumber: the device to be modified. * @param resolution: how many microseconds will mean each timer * counter unit. * @return RTEMS_SUCCESSFUL if the timer resolution was setted successfuly. */ rtems_status_code lpc176x_timer_set_resolution( lpc176x_timer_number tnumber, lpc176x_microseconds resolution ); /** * @brief Configures the timer match * * @param tnumber: the device to be modified * @param match_port: which port of this timer will be setted * @param function: what the timer should do when match: stop timer, clear, * and/or interrupt * @param match_value: the value that the timer should match. * @return RTEMS_SUCCESSFUL if the timer was configured successfuly. */ rtems_status_code lpc176x_timer_match_config( lpc176x_timer_number tnumber, lpc176x_match_port match_port, lpc176x_match_function function, uint32_t match_value ); /** * @brief Configures the capture ports * * @param tnumber: the device to be modified * @param capture_port: which port of this timer will be setted * @param function: At which edge/s will the capture work, and * if it will interrupt */ rtems_status_code lpc176x_timer_capture_config( lpc176x_timer_number tnumber, lpc176x_capture_port capture_port, lpc176x_capture_function function ); /** * @brief Configures the external match ports * * @param tnumber: the device to be modified * @param match_port: which match for this timer * @param function: what should do when match: set, clear toggle or nothing */ rtems_status_code lpc176x_timer_external_match_config( lpc176x_timer_number tnumber, lpc176x_match_port match_port, lpc176x_ext_match_function function ); /** * @brief Gets the captured value * * @param tnumber: the device to be modified * @param capnumber: which capture port for this timer * @return the captured value */ uint32_t lpc176x_timer_get_capvalue( lpc176x_timer_number tnumber, lpc176x_capture_port capnumber ); /** * @brief Gets the timer value * * @param tnumber: the device * @return the timer value */ uint32_t lpc176x_timer_get_timer_value( lpc176x_timer_number tnumber ); /** * @brief Sets the timer value * * @param tnumber: the timer to modify. * @param timer_value the value to set. */ rtems_status_code lpc176x_timer_set_timer_value( lpc176x_timer_number tnumber, uint32_t lpc176x_timer_value ); /** * @brief Timer generic isroutine. * * @param timernumber the number of timer. */ void lpc176x_timer_isr( void *lpc176x_timer_number ); /** * @brief Initializes timer in timer mode and resets counter but * without starting it, and without any capture or * match function. * * @param tnumber which timer * @return RTEMS_SUCCESSFUL when everything ok. */ rtems_status_code lpc176x_timer_init( lpc176x_timer_number tnumber ); /** * @brief Initializes timer in timer mode and resets counter but * without starting it, and without any capture or * match function. * * @param tnumber which timer to init * @param vector the functions to be used by the isr. * @return RTEMS_SUCCESSFUL when everything ok. */ rtems_status_code lpc176x_timer_init_with_interrupt( lpc176x_timer_number tnumber, const lpc176x_isr_funct_vector *vector ); #ifdef __cplusplus } #endif /* __cplusplus */ #endif /* LIBBSP_ARM_LPC176X_TIMER_H */