4 * \brief Timer Counter (TC) driver for SAM.
\r
6 * Copyright (c) 2011-2013 Atmel Corporation. All rights reserved.
\r
12 * Redistribution and use in source and binary forms, with or without
\r
13 * modification, are permitted provided that the following conditions are met:
\r
15 * 1. Redistributions of source code must retain the above copyright notice,
\r
16 * this list of conditions and the following disclaimer.
\r
18 * 2. Redistributions in binary form must reproduce the above copyright notice,
\r
19 * this list of conditions and the following disclaimer in the documentation
\r
20 * and/or other materials provided with the distribution.
\r
22 * 3. The name of Atmel may not be used to endorse or promote products derived
\r
23 * from this software without specific prior written permission.
\r
25 * 4. This software may only be redistributed and used in connection with an
\r
26 * Atmel microcontroller product.
\r
28 * THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR IMPLIED
\r
29 * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
\r
30 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
\r
31 * EXPRESSLY AND SPECIFICALLY DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR
\r
32 * ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
\r
33 * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
\r
34 * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
\r
35 * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
\r
36 * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN
\r
37 * ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
\r
38 * POSSIBILITY OF SUCH DAMAGE.
\r
44 #ifndef TC_H_INCLUDED
\r
45 #define TC_H_INCLUDED
\r
47 #include "compiler.h"
\r
57 void tc_init(Tc *p_tc, uint32_t ul_Channel, uint32_t ul_Mode);
\r
58 void tc_sync_trigger(Tc *p_tc);
\r
59 void tc_set_block_mode(Tc *p_tc, uint32_t ul_blockmode);
\r
62 uint32_t tc_init_2bit_gray(Tc *p_tc, uint32_t ul_channel,
\r
63 uint32_t ul_steppermode);
\r
66 void tc_start(Tc *p_tc, uint32_t ul_channel);
\r
67 void tc_stop(Tc *p_tc, uint32_t ul_channel);
\r
69 uint32_t tc_read_cv(Tc *p_tc, uint32_t ul_channel);
\r
70 uint32_t tc_read_ra(Tc *p_tc, uint32_t ul_channel);
\r
71 uint32_t tc_read_rb(Tc *p_tc, uint32_t ul_channel);
\r
72 uint32_t tc_read_rc(Tc *p_tc, uint32_t ul_channel);
\r
74 void tc_write_ra(Tc *p_tc, uint32_t ul_channel,
\r
76 void tc_write_rb(Tc *p_tc, uint32_t ul_channel,
\r
78 void tc_write_rc(Tc *p_tc, uint32_t ul_channel,
\r
81 uint32_t tc_find_mck_divisor(uint32_t ul_freq, uint32_t ul_mck,
\r
82 uint32_t *p_uldiv, uint32_t *ul_tcclks, uint32_t ul_boardmck);
\r
83 void tc_enable_interrupt(Tc *p_tc, uint32_t ul_channel,
\r
84 uint32_t ul_sources);
\r
85 void tc_disable_interrupt(Tc *p_tc, uint32_t ul_channel,
\r
86 uint32_t ul_sources);
\r
87 uint32_t tc_get_interrupt_mask(Tc *p_tc, uint32_t ul_channel);
\r
88 uint32_t tc_get_status(Tc *p_tc, uint32_t ul_channel);
\r
90 void tc_enable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources);
\r
91 void tc_disable_qdec_interrupt(Tc *p_tc, uint32_t ul_sources);
\r
92 uint32_t tc_get_qdec_interrupt_mask(Tc *p_tc);
\r
93 uint32_t tc_get_qdec_interrupt_status(Tc *p_tc);
\r
97 void tc_set_writeprotect(Tc *p_tc, uint32_t ul_enable);
\r
101 uint32_t tc_get_feature(Tc *p_tc);
\r
102 uint32_t tc_get_version(Tc *p_tc);
\r
114 #endif /* TC_H_INCLUDED */
\r