Title: Pulse%20Width%20Modulation%20Unit%20(PWM)%20(20%20MHz)
1Pulse Width Modulation Unit (PWM)(20 MHz)
- 4 independent PWM channels each with its own
time-base - 50ns or 12.8µs timer-resolution provides a very
wide frequency range to generate PWM signals - Programmable output polarity
- Up to 78 KHz at 8-bit PWM resolution
- Four operation modes
- Standard, edge-aligned PWM
- Symmetrical, center-aligned PWM for asynchronous
motor control - Burst-mode for modulated PWM signals
- Single-shot mode
2PWM unitFrequencies and Resolution
PMW Unit Frequencies and Resolution in Mode 0
Operation (EDGE-ALIGNED)
Resolution
8 Bit
10 Bit
12 Bit
14 Bit
16 Bit
Input Clock (CPU _at_ 20 MHz)
CPU Clock (50ns Resolution)
78.1 KHz
19.5 KHz
4.88 KHz
1.22 KHz
305 Hz
CPU Clock / 64 (3.2µs Res.)
1.22 KHz
305 Hz
76.3 Hz
13.1 Hz
4.77 Hz
PMW Unit Frequencies and Resolution in Mode 1
Operation (SYMMETRICAL)
Resolution
8 Bit
10 Bit
12 Bit
14 Bit
16 Bit
Input Clock (CPU _at_ 20 MHz)
CPU Clock (50ns Resolution)
39.1 KHz
9.77 KHz
2.44 KHz
610 Hz
152.6 Hz
CPU Clock / 64 (3.2µs Res.)
610 Hz
152.6 Hz
38.15 Hz
9.54 Hz
2.4 Hz
3PWM unitFunction Diagram
Period Register PP0-PP3
Shadow Register
Comparator
Run Enable
20 MHz
up/down,clear
Timer PT0-PT3
78 KHz
PWM Outputs
Output Polarity Enable
at 20 MHz CPU Clock
Comparator
Shadow Register
Pulse Width Reg. PW0-PW3
4 identical PWM Channels with common Interrupt
Control Register
4PWM unit - Mode 0 and 1
PWM Mode 0 Standard PWMs or Edge-Aligned PWMs
PWM Mode 1 Symmetrical or Center-Aligned PWMs
Contents of the Period Register (PPx)
Timer Period
Timer Period
Timer Period
Contents of the PWx Register
Contents of the PWx Register
Interrupt Request and Latch of the Shadow Register
IR and Latch of the Shadow Register
PWM Signal
PWM Signal
If all channels are programmed to mode
0, edge-aligned PWM signals will be generated. A
duty cycle from 0 to 100 is programmable
If all channels are programmed to mode
1, center-aligned PWM signals will be
generated. A duty cycle from 0 to 100 is
programmable
Possible PWM Signals from other channels
programmed to the same mode
PWMx
PWMy
5PWM unit - Burst Mode / Single Shot Mode
Burst Mode Burst Sequence by combining PWM
channel 0 and 1
Single Shot Only one PWM Pulse is generated
Mode available for channel 2 and 3
Period Value
Period Value
Timer Period PT0
Timer Period
PeriodValue
Pulse widthValue
Timer is automatically stopped
Timer is released by Software again
Internal Signal of Channel 0
Output Signal
Period of Timer PT1
The Timer can be dynamically changed to lengthen
(retrigger) or shorten the output pulse
Int. Signal of Channel 1
Output Result Channel 1 is modulated by Channel 0
6Overview Port Structure
- The Port lines provide the connection to the
external world - 111 Port lines on the C167
- All Port lines are individually addressable and
all I/0 lines are independently programmable for
input or output - Each Port line is dedicated to one or more
peripheral functions - Each Port is protected with fast diodes
- Programmable open drain buffers
- P2, 3, 6, 7, 8 on the C167
7Overview Port Structure
VCC
Open Drain Control
Direction Register
Alternate Enable
Alternate Output
Write
Port Pin
Output Latch
Buffer
Mux
Read
Direction
Internal Bus
Buffer
Mux
Input Latch
Vss
ESD structure
Clock
Alternate Input
8Exercise 7PWM_1 - Two edge-alignedPWM Signals
with the PWM unit
- Objective
- Generate an edge-aligned 25 duty cycle PWM
Signal using PWM channel 1 (Period 1ms) - Generate an edge-aligned 50 duty cycle PWM
Signal using PWM channel 3 (Period 1ms)
9Exercise 7PWM_1- DAvE Configurations
- Start DAvE
- Create new Project with microcontroller
C167CR/CS - Project name 7pwm_1
- Select project path c\hot167_1\7pwm_1
- Project Settings
- General
- Select Keil Compiler, SMALL model
- System Clock
- External Oscillator Frequency Set to 5 MHz
- Startup Configuration
- Bus Type after Reset Set to 16 bit DEMUX
- Write Configuration Pin WR and BHE operates as
WRL and WRH - Save close
C167CS not yet supported by DAvE V1.0 CD ROM.
See Hints regarding DAvE.
10Exercise 7PWM_1 - DAvE Configurations (cont.)
- Configure PWM
- Control
- Configure Channel 1
- General Use PWM Channel 1
- PWM Channel Mode Control Standard PWM (edge
aligned) - Channel Output Enable Enable Channel 1 output
signal - PWM Timer Start Control Start PWM Timer 1 after
init - Period Required Period 1000 us
- Duty Cycle Required Duty Cycle 25
- Save Close
- Configure Channel 3
- General Use PWM Channel 3
- PWM Channel Mode Control Standard PWM (edge
aligned) - Channel Output Enable Enable Channel 3 output
signal - PWM Timer Start Control Start PWM Timer 3 after
init - Period Required Period 1000 us
- Duty Cycle Required Duty Cycle 50
- Save Close
11Exercise 7PWM_1 - DAvE Configurations (cont.)
- Configure PWM (cont.)
- Functions
- Include PWM initialization function PWM_vInit
- Save Close
- Configure Port 7
- Port 7
- DAvE has reserved P7.1 and P7.3 for the PWM
alternate functions with 0 as initial output - Dont enable general purpose IO!
- Functions
- Include port initialization function IO_vInit
- Save close
- Generate Code
12Exercise 7PWM_1 - µVision2 Configurations
- Start µVision2
- New Project
- Add Files
- Go to Project Targets, Groups, Files
- Click Groups / Add Files
- Select Source Group 1
- Click Add Files to Group
- Select all C files and click add
- Enter file name start.asm, click add
(Assembler Startup File) - Click Close and OK
- Double-click all files in the Project Window to
open them - Select Target Hardware (kitCON-167)
- Go to Project Options for Target Target 1
- Go to Debug tab
- Click Settings (upper right hand corner)
- Monitor configuration select Phytec KC167
- Click OK twice
13Exercise 7PWM_1 -µVision2 Configurations (cont.)
- Edit MAIN.C
- include endless loop in main()
- // USER CODE BEGIN (Main,2)
- while(1)
- // USER CODE END
14Exercise 7PWM_1 - Running the Program
- Reset Target Hardware (Press Reset Button on
Starter Kit) - Build Project (Project Rebuild Target)
- Run integrated Debugger from within µVision2
- Debug Start / Stop Debug Session (click OK
when prompted) - The Debugger will load the Keil Monitor into the
kitCON-167s RAM via bootstrap loader - Object file c\hot167_1\7pwm_1\7pwm_1 will be
loaded automatically and the debugger will go to
main(). - Go! (Debug Go)
- Program Verification Connect Scope to
- P7.1 / POUT1 (connector X3 pin 121)
- P7.3 / POUT3 (connector X3 pin 122)
15Exercise 7PWM_2 - Two center-alignedPWM Signals
with the PWM unit
- Objective
- Generate a center-aligned 25 duty cycle PWM
Signal using PWM channel 1 (Period 250 us) - Generate a center-aligned 50 duty cycle PWM
Signal using PWM channel 3 (Period 250us)
16Exercise 7PWM_2 - DAvE Configurations
- Start DAvE
- Create new Project with microcontroller
C167CR/CS - Project name 7pwm_2
- Select project path c\hot167_1\7pwm_2
- Project Settings
- General
- Select Keil Compiler, SMALL model
- System Clock
- External Oscillator Frequency Set to 5 MHz
- Startup Configuration
- Bus Type after Reset Set to 16 bit DEMUX
- Write Configuration Pin WR and BHE operates as
WRL and WRH - Save close
C167CS not yet supported by DAvE V1.0 CD ROM.
See Hints regarding DAvE.
17Exercise 7PWM_2 - DAvE Configurations (cont.)
- Configure PWM
- Control
- Configure Channel 1
- General Use PWM Channel 1
- PWM Channel Mode Control Symmetrical PWM(center
aligned) - Channel Output Enable Enable Channel 1 output
signal - PWM Timer Start Control Start PWM Timer 1 after
init - Period Required Period 250 us
- Duty Cycle Required Duty Cycle 25
- Save Close
- Configure Channel 3
- General Use PWM Channel 3
- PWM Channel Mode Control Symmetrical PWM(center
aligned) - Channel Output Enable Enable Channel 3 output
signal - PWM Timer Start Control Start PWM Timer 3 after
init - Period Required Period 250 us
- Duty Cycle Required Duty Cycle 50
- Save Close
18Exercise 7PWM_2 - DAvE Configurations (cont.)
- Configure PWM (cont.)
- Functions
- Include PWM initialization function PWM_vInit
- Save Close
- Configure Port 7
- Port 7
- DAvE has reserved P7.1 and P7.3 for the PWM
alternate functions with 0 as initial output - Functions
- Include port initialization function IO_vInit
- Save close
- Generate Code
19Exercise 7PWM_2 - µVision2 Configurations
- Start µVision2
- Open Project c\hot167_1\7pwm_1\7pwm_1.uv2
(Project Open Pr.) - Add Files
- Go to Project Targets, Groups, Files
- Click Groups / Add Files
- Select Source Group 1
- Click Add Files to Group
- Select all C files and click add
- Enter file name start.asm, click add
(Assembler Startup File) - Click Close and OK
- Double-click all files in the Project Window to
open them - Select Target Hardware (kitCON-167)
- Go to Project Options for Target Target 1
- Go to Debug tab
- Click Settings (upper right hand corner)
- Monitor configuration select Phytec KC167
- Click OK twice
20Exercise 7PWM_2 -µVision2 Configurations (cont.)
- Edit MAIN.C
- include endless loop in main()
- // USER CODE BEGIN (Main,2)
- while(1)
- // USER CODE END
21Exercise 7PWM_2 - Running the Program
- Reset Target Hardware (Press Reset Button on
Starter Kit) - Build Project (Project Rebuild Target)
- Run integrated Debugger from within µVision2
- Debug Start / Stop Debug Session (click OK
when prompted) - The Debugger will load the Keil Monitor into the
kitCON-167s RAM via bootstrap loader - Object file c\hot167_1\7pwm_1\7pwm_1 will be
loaded automatically and the debugger will go to
main(). - Go! (Debug Go)
- Program Verification Connect Scope to
- P7.1 / POUT2 (connector X3 pin 121)
- P7.3 / POUT4 (connector X3 pin 123)