summaryrefslogtreecommitdiff
path: root/peripherals/pwmc/pwmc2.h
blob: d9d979dcc198a14fc502a44ed06a87dc0f4f4948 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
/* ----------------------------------------------------------------------------
 *         ATMEL Microcontroller Software Support
 * ----------------------------------------------------------------------------
 * Copyright (c) 2008, Atmel Corporation
 *
 * All rights reserved.
 *
 * Redistribution and use in source and binary forms, with or without
 * modification, are permitted provided that the following conditions are met:
 *
 * - Redistributions of source code must retain the above copyright notice,
 * this list of conditions and the disclaimer below.
 *
 * Atmel's name may not be used to endorse or promote products derived from
 * this software without specific prior written permission.
 *
 * DISCLAIMER: THIS SOFTWARE IS PROVIDED BY ATMEL "AS IS" AND ANY EXPRESS OR
 * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
 * MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT ARE
 * DISCLAIMED. IN NO EVENT SHALL ATMEL BE LIABLE FOR ANY DIRECT, INDIRECT,
 * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
 * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA,
 * OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
 * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
 * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
 * EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
 * ----------------------------------------------------------------------------
 */

//------------------------------------------------------------------------------
/// \unit
///
/// !Purpose
///
/// Interface for configuration the Pulse Width Modulation Controller (PWM) peripheral.
///
/// !Usage
///
///    -# Configures PWM clocks A & B to run at the given frequencies using
///       PWMC_ConfigureClocks().
///    -# Configure PWMC channel using PWMC_ConfigureChannel(), PWMC_ConfigureChannelExt()
///       PWMC_SetPeriod(), PWMC_SetDutyCycle() and PWMC_SetDeadTime().
///    -# Enable & disable channel using PWMC_EnableChannel() and
///       PWMC_DisableChannel().
///    -# Enable & disable the period interrupt for the given PWM channel using
///       PWMC_EnableChannelIt() and PWMC_DisableChannelIt().
///    -# Enable & disable the selected interrupts sources on a PWMC peripheral
///       using  PWMC_EnableIt() and PWMC_DisableIt().
///    -# Control syncronous channel using PWMC_ConfigureSyncChannel(),
///       PWMC_SetSyncChannelUpdatePeriod() and PWMC_SetSyncChannelUpdateUnlock().
///    -# Control PWM override output using PWMC_SetOverrideValue(),
///       PWMC_EnableOverrideOutput() and PWMC_DisableOverrideOutput().
///    -# Send data through the transmitter using PWMC_WriteBuffer().
///
/// Please refer to the list of functions in the #Overview# tab of this unit
/// for more detailed information.
//------------------------------------------------------------------------------

#ifndef PWMC2_H
#define PWMC2_H

//------------------------------------------------------------------------------
//         Headers
//------------------------------------------------------------------------------

#include <board.h>

//------------------------------------------------------------------------------
//         Global functions
//------------------------------------------------------------------------------

extern void PWMC_ConfigureChannel(
    unsigned char channel,
    unsigned int prescaler,
    unsigned int alignment,
    unsigned int polarity);

extern void PWMC_ConfigureChannelExt(
    unsigned char channel,
    unsigned int prescaler,
    unsigned int alignment,
    unsigned int polarity,
    unsigned int countEventSelect,
    unsigned int DTEnable,
    unsigned int DTHInverte,
    unsigned int DTLInverte);

extern void PWMC_ConfigureClocks
    (unsigned int clka,
     unsigned int clkb,
     unsigned int mck);

extern void PWMC_SetPeriod(unsigned char channel, unsigned short period);

extern void PWMC_SetDutyCycle(unsigned char channel, unsigned short duty);

extern void PWMC_SetDeadTime(unsigned char channel, unsigned short timeH, unsigned short timeL);

extern void PWMC_ConfigureSyncChannel(
    unsigned int channels,
    unsigned int updateMode,
    unsigned int requestMode,
    unsigned int requestComparisonSelect);

extern void PWMC_SetSyncChannelUpdatePeriod(unsigned char period);

extern void PWMC_SetSyncChannelUpdateUnlock(void);

extern void PWMC_EnableChannel(unsigned char channel);

extern void PWMC_DisableChannel(unsigned char channel);

extern void PWMC_EnableChannelIt(unsigned char channel);

extern void PWMC_DisableChannelIt(unsigned char channel);

extern void PWMC_EnableIt(unsigned int sources1, unsigned int sources2);

extern void PWMC_DisableIt(unsigned int sources1, unsigned int sources2);

extern unsigned char PWMC_WriteBuffer(AT91S_PWMC *pwmc,
    void *buffer,
    unsigned int length);

extern void PWMC_SetOverrideValue(unsigned int value);

extern void PWMC_EnableOverrideOutput(unsigned int value, unsigned int sync);

extern void PWMC_DisableOverrideOutput(unsigned int value, unsigned int sync);

extern void PWMC_SetFaultMode(unsigned int mode);

extern void PWMC_FaultClear(unsigned int fault);

extern void PWMC_SetFaultProtectionValue(unsigned int value);

extern void PWMC_EnableFaultProtection(unsigned int value);

extern void PWMC_ConfigureComparisonUnit(unsigned int x, unsigned int value, unsigned int mode);

extern void PWMC_ConfigureEventLineMode(unsigned int x, unsigned int mode);
#endif //#ifndef PWMC2_H

personal git repositories of Harald Welte. Your mileage may vary