1 //*****************************************************************************
3 // pwm.h - API function protoypes for Pulse Width Modulation (PWM) ports
5 // Copyright (c) 2005,2006 Luminary Micro, Inc. All rights reserved.
7 // Software License Agreement
9 // Luminary Micro, Inc. (LMI) is supplying this software for use solely and
10 // exclusively on LMI's Stellaris Family of microcontroller products.
12 // The software is owned by LMI and/or its suppliers, and is protected under
13 // applicable copyright laws. All rights are reserved. Any use in violation
14 // of the foregoing restrictions may subject the user to criminal sanctions
15 // under applicable laws, as well as to civil liability for the breach of the
16 // terms and conditions of this license.
18 // THIS SOFTWARE IS PROVIDED "AS IS". NO WARRANTIES, WHETHER EXPRESS, IMPLIED
19 // OR STATUTORY, INCLUDING, BUT NOT LIMITED TO, IMPLIED WARRANTIES OF
20 // MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE.
21 // LMI SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, INCIDENTAL, OR
22 // CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER.
24 // This is part of revision 816 of the Stellaris Driver Library.
26 //*****************************************************************************
36 //*****************************************************************************
38 // The following defines are passed to PWMGenConfigure() as the ulConfig
39 // parameter and specify the configuration of the PWM generator.
41 //*****************************************************************************
42 #define PWM_GEN_MODE_DOWN 0x00000000 // Down count mode
43 #define PWM_GEN_MODE_UP_DOWN 0x00000002 // Up/Down count mode
44 #define PWM_GEN_MODE_SYNC 0x00000038 // Synchronous updates
45 #define PWM_GEN_MODE_NO_SYNC 0x00000000 // Immediate updates
46 #define PWM_GEN_MODE_DBG_RUN 0x00000004 // Continue running in debug mode
47 #define PWM_GEN_MODE_DBG_STOP 0x00000000 // Stop running in debug mode
49 //*****************************************************************************
51 // Defines for enabling, disabling, and clearing PWM generator interrupts and
54 //*****************************************************************************
55 #define PWM_INT_CNT_ZERO 0x00000001 // Int if COUNT = 0
56 #define PWM_INT_CNT_LOAD 0x00000002 // Int if COUNT = LOAD
57 #define PWM_INT_CNT_AU 0x00000004 // Int if COUNT = CMPA U
58 #define PWM_INT_CNT_AD 0x00000008 // Int if COUNT = CMPA D
59 #define PWM_INT_CNT_BU 0x00000010 // Int if COUNT = CMPA U
60 #define PWM_INT_CNT_BD 0x00000020 // Int if COUNT = CMPA D
61 #define PWM_TR_CNT_ZERO 0x00000100 // Trig if COUNT = 0
62 #define PWM_TR_CNT_LOAD 0x00000200 // Trig if COUNT = LOAD
63 #define PWM_TR_CNT_AU 0x00000400 // Trig if COUNT = CMPA U
64 #define PWM_TR_CNT_AD 0x00000800 // Trig if COUNT = CMPA D
65 #define PWM_TR_CNT_BU 0x00001000 // Trig if COUNT = CMPA U
66 #define PWM_TR_CNT_BD 0x00002000 // Trig if COUNT = CMPA D
68 //*****************************************************************************
70 // Defines for enabling, disabling, and clearing PWM interrupts.
72 //*****************************************************************************
73 #define PWM_INT_GEN_0 0x00000001 // Generator 0 interrupt
74 #define PWM_INT_GEN_1 0x00000002 // Generator 1 interrupt
75 #define PWM_INT_GEN_2 0x00000004 // Generator 2 interrupt
76 #define PWM_INT_FAULT 0x00010000 // Fault interrupt
78 //*****************************************************************************
80 // Defines to identify the generators within a module.
82 //*****************************************************************************
83 #define PWM_GEN_0 0x00000040 // Offset address of Gen0
84 #define PWM_GEN_1 0x00000080 // Offset address of Gen1
85 #define PWM_GEN_2 0x000000C0 // Offset address of Gen2
87 #define PWM_GEN_0_BIT 0x00000001 // Bit-wise ID for Gen0
88 #define PWM_GEN_1_BIT 0x00000002 // Bit-wise ID for Gen1
89 #define PWM_GEN_2_BIT 0x00000004 // Bit-wise ID for Gen2
91 //*****************************************************************************
93 // Defines to identify the outputs within a module.
95 //*****************************************************************************
96 #define PWM_OUT_0 0x00000040 // Encoded offset address of PWM0
97 #define PWM_OUT_1 0x00000041 // Encoded offset address of PWM1
98 #define PWM_OUT_2 0x00000082 // Encoded offset address of PWM2
99 #define PWM_OUT_3 0x00000083 // Encoded offset address of PWM3
100 #define PWM_OUT_4 0x000000C4 // Encoded offset address of PWM4
101 #define PWM_OUT_5 0x000000C5 // Encoded offset address of PWM5
103 #define PWM_OUT_0_BIT 0x00000001 // Bit-wise ID for PWM0
104 #define PWM_OUT_1_BIT 0x00000002 // Bit-wise ID for PWM1
105 #define PWM_OUT_2_BIT 0x00000004 // Bit-wise ID for PWM2
106 #define PWM_OUT_3_BIT 0x00000008 // Bit-wise ID for PWM3
107 #define PWM_OUT_4_BIT 0x00000010 // Bit-wise ID for PWM4
108 #define PWM_OUT_5_BIT 0x00000020 // Bit-wise ID for PWM5
110 //*****************************************************************************
112 // API Function prototypes
114 //*****************************************************************************
115 extern void PWMGenConfigure(unsigned long ulBase, unsigned long ulGen,
116 unsigned long ulConfig);
117 extern void PWMGenPeriodSet(unsigned long ulBase, unsigned long ulGen,
118 unsigned long ulPeriod);
119 extern unsigned long PWMGenPeriodGet(unsigned long ulBase,
120 unsigned long ulGen);
121 extern void PWMGenEnable(unsigned long ulBase, unsigned long ulGen);
122 extern void PWMGenDisable(unsigned long ulBase, unsigned long ulGen);
123 extern void PWMPulseWidthSet(unsigned long ulBase, unsigned long ulPWMOut,
124 unsigned long ulWidth);
125 extern unsigned long PWMPulseWidthGet(unsigned long ulBase,
126 unsigned long ulPWMOut);
127 extern void PWMDeadBandEnable(unsigned long ulBase, unsigned long ulGen,
128 unsigned short usRise, unsigned short usFall);
129 extern void PWMDeadBandDisable(unsigned long ulBase, unsigned long ulGen);
130 extern void PWMSyncUpdate(unsigned long ulBase, unsigned long ulGenBits);
131 extern void PWMSyncTimeBase(unsigned long ulBase, unsigned long ulGenBits);
132 extern void PWMOutputState(unsigned long ulBase, unsigned long ulPWMOutBits,
134 extern void PWMOutputInvert(unsigned long ulBase, unsigned long ulPWMOutBits,
136 extern void PWMOutputFault(unsigned long ulBase, unsigned long ulPWMOutBits,
137 tBoolean bFaultKill);
138 extern void PWMGenIntRegister(unsigned long ulBase, unsigned long ulGen,
139 void (*pfIntHandler)(void));
140 extern void PWMGenIntUnregister(unsigned long ulBase, unsigned long ulGen);
141 extern void PWMFaultIntRegister(unsigned long ulBase,
142 void (*pfIntHandler)(void));
143 extern void PWMFaultIntUnregister(unsigned long ulBase);
144 extern void PWMGenIntTrigEnable(unsigned long ulBase, unsigned long ulGen,
145 unsigned long ulIntTrig);
146 extern void PWMGenIntTrigDisable(unsigned long ulBase, unsigned long ulGen,
147 unsigned long ulIntTrig);
148 extern unsigned long PWMGenIntStatus(unsigned long ulBase, unsigned long ulGen,
150 extern void PWMGenIntClear(unsigned long ulBase, unsigned long ulGen,
151 unsigned long ulInts);
152 extern void PWMIntEnable(unsigned long ulBase, unsigned long ulGenFault);
153 extern void PWMIntDisable(unsigned long ulBase, unsigned long ulGenFault);
154 extern void PWMFaultIntClear(unsigned long ulBase);
155 extern unsigned long PWMIntStatus(unsigned long ulBase, tBoolean bMasked);