OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [rtos/] [freertos-6.1.1/] [Demo/] [CORTEX_AT91SAM3U256_IAR/] [AT91Lib/] [peripherals/] [pit/] [pit.c] - Blame information for rev 580

Details | Compare with Previous | View Log

Line No. Rev Author Line
1 580 jeremybenn
/* ----------------------------------------------------------------------------
2
 *         ATMEL Microcontroller Software Support
3
 * ----------------------------------------------------------------------------
4
 * Copyright (c) 2008, Atmel Corporation
5
 *
6
 * All rights reserved.
7
 *
8
 * Redistribution and use in source and binary forms, with or without
9
 * modification, are permitted provided that the following conditions are met:
10
 *
11
 * - Redistributions of source code must retain the above copyright notice,
12
 * this list of conditions and the disclaimer below.
13
 *
14
 * Atmel's name may not be used to endorse or promote products derived from
15
 * this software without specific prior written permission.
16
 *
17
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
18
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
19
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
20
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
21
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
22
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
23
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
24
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
25
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
26
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
27
 * ----------------------------------------------------------------------------
28
 */
29
 
30
//------------------------------------------------------------------------------
31
//         Headers
32
//------------------------------------------------------------------------------
33
 
34
#include "pit.h"
35
#include <board.h>
36
 
37
//------------------------------------------------------------------------------
38
//         Global functions
39
//------------------------------------------------------------------------------
40
 
41
//------------------------------------------------------------------------------
42
/// Initialize the Periodic Interval Timer to generate a tick at the specified
43
/// period, given the current master clock frequency.
44
/// \param period  Period in µsecond.
45
/// \param pit_frequency  Master clock frequency in MHz.
46
//------------------------------------------------------------------------------
47
void PIT_Init(unsigned int period, unsigned int pit_frequency)
48
{
49
    AT91C_BASE_PITC->PITC_PIMR = period? (period * pit_frequency + 8) >> 4 : 0;
50
    AT91C_BASE_PITC->PITC_PIMR |= AT91C_PITC_PITEN;
51
}
52
 
53
//------------------------------------------------------------------------------
54
/// Set the Periodic Interval Value of the PIT.
55
/// \param piv  PIV value to set.
56
//------------------------------------------------------------------------------
57
void PIT_SetPIV(unsigned int piv)
58
{
59
    AT91C_BASE_PITC->PITC_PIMR = (AT91C_BASE_PITC->PITC_PIMR & AT91C_PITC_PIV)
60
                                 | piv;
61
}
62
 
63
//------------------------------------------------------------------------------
64
/// Enables the PIT if this is not already the case.
65
//------------------------------------------------------------------------------
66
void PIT_Enable(void)
67
{
68
    AT91C_BASE_PITC->PITC_PIMR |= AT91C_PITC_PITEN;
69
}
70
 
71
//----------------------------------------------------------------------------
72
/// Enable the PIT periodic interrupt.
73
//----------------------------------------------------------------------------
74
void PIT_EnableIT(void)
75
{
76
    AT91C_BASE_PITC->PITC_PIMR |= AT91C_PITC_PITIEN;
77
}
78
 
79
//------------------------------------------------------------------------------
80
/// Disables the PIT periodic interrupt.
81
//------------------------------------------------------------------------------
82
void PIT_DisableIT(void)
83
{
84
    AT91C_BASE_PITC->PITC_PIMR &= ~AT91C_PITC_PITIEN;
85
}
86
 
87
//------------------------------------------------------------------------------
88
/// Returns the value of the PIT mode register.
89
/// \return PIT_MR value.
90
//------------------------------------------------------------------------------
91
unsigned int PIT_GetMode(void)
92
{
93
    return AT91C_BASE_PITC->PITC_PIMR;
94
}
95
 
96
//------------------------------------------------------------------------------
97
/// Returns the value of the PIT status register, clearing it as a side effect.
98
/// \return PIT_SR value.
99
//------------------------------------------------------------------------------
100
unsigned int PIT_GetStatus(void)
101
{
102
    return AT91C_BASE_PITC->PITC_PISR;
103
}
104
 
105
//------------------------------------------------------------------------------
106
/// Returns the value of the PIT Image Register, to read PICNT and CPIV without
107
/// clearing the current values.
108
/// \return PIT_PIIR value.
109
//------------------------------------------------------------------------------
110
unsigned int PIT_GetPIIR(void)
111
{
112
    return AT91C_BASE_PITC->PITC_PIIR;
113
}
114
 
115
//------------------------------------------------------------------------------
116
/// Returns the value of the PIT Value Register, clearing it as a side effect.
117
/// \return PIT_PIVR value.
118
//------------------------------------------------------------------------------
119
unsigned int PIT_GetPIVR(void)
120
{
121
    return AT91C_BASE_PITC->PITC_PIVR;
122
}

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.