0 penilaian0% menganggap dokumen ini bermanfaat (0 suara)
37 tayangan27 halaman
The document describes the capture-compare-pulse-width module (CCP) in the PIC16F877 microcontroller. The CCP module contains two ports, CCP1 and CCP2, that can operate in capture, compare, or PWM modes. In capture mode, the CCP module measures the time of external events. In compare mode, it compares register values to trigger events. In PWM mode, it generates pulse width modulated signals to control devices. The document provides details on module configuration, timer sources, register settings, and a sample C program to generate PWM output on CCP1.
The document describes the capture-compare-pulse-width module (CCP) in the PIC16F877 microcontroller. The CCP module contains two ports, CCP1 and CCP2, that can operate in capture, compare, or PWM modes. In capture mode, the CCP module measures the time of external events. In compare mode, it compares register values to trigger events. In PWM mode, it generates pulse width modulated signals to control devices. The document provides details on module configuration, timer sources, register settings, and a sample C program to generate PWM output on CCP1.
The document describes the capture-compare-pulse-width module (CCP) in the PIC16F877 microcontroller. The CCP module contains two ports, CCP1 and CCP2, that can operate in capture, compare, or PWM modes. In capture mode, the CCP module measures the time of external events. In compare mode, it compares register values to trigger events. In PWM mode, it generates pulse width modulated signals to control devices. The document provides details on module configuration, timer sources, register settings, and a sample C program to generate PWM output on CCP1.
Introduction • Capture-Compare-Pulse-Width-Module (CCP) special module design for modulation and waveform generation applications. • This module works on three different modes (capture/compare and PWM modes). • The PIC16F877 chip contains two CCP ports (CCP1 and CCP2) The CCP1 and CCP2 modules are identical in its operation except in its special event trigger operation. CCP module • Two CCP modules.- CCP1 And CCP2 • Identical in operation. – Special Event trigger (difference) • Uses Timers for operation. • Capture & compare - Timer 1 • PWM - Timer 2 Introduction - Modes • The CCP module is a peripheral which allows the user to time and control different events. • Capture Mode, allows timing for the duration of an event. This circuit gives insight into the current state of a register which constantly changes its value. In this case, it is the timer TMR1 register. • Compare Mode compares values contained in two registers at some point. One of them is the timer TMR1 register. This circuit also allows the user to trigger an external event when a predetermined amount of time has expired. • PWM – Pulse Width Modulation can generate signals of varying frequency and duty cycle. • The PIC16F887 microcontroller has two such modules – CCP1 and CCP2. Timer sources • In each CCP modules, the capture, compare and PWM modes using different timer resources. • The table below shows the different CCP modes and its timer resources. CCP2 Module
• Capture/Compare/PWM Register 2 (CCPR2) is
comprised of two 8-bit registers: CCPR2L (low byte) and CCPR2H (high byte). • The CCP2CON register controls the operation of CCP2. • The special event trigger is generated by a compare match and will reset Timer1 and start an A/D conversion (if the A/D module is enabled). Capture Mode
• Captures the time of occurrence of an Event.
• “Event” is an external signal transition. • Timer 1 is used • Timer mode or in Sync Counter mode. Block Diagram- Capture Mode
CCP1CON/CCP2CON Capture Mode - Operation • In Capture mode, CCPR1H:CCPR1L captures the 16-bit value of the TMR1 register when an event occurs on pin RC2/CCP1. • Modes: Every falling edge Every Rising Edge Every 4th rising edge Every 16th rising edge • The type of event is configured by control bits, CCP1M3:CCP1M0 (CCPxCON<3:0>). • When a capture is made, the interrupt request flag bit, CCP1IF (PIR1<2>), is set. The interrupt flag must be cleared in software. • If another capture occurs before the value in register CCPR1 is read, the old captured value is overwritten by the new value. Compare - Mode • Compares CCPR1H:CCPR1L and TMR1H:TMR1L • If it matches – Drive RC2/CCP1 pin high – Drive RC2/CCP1 pin low – Remains unchanged, generate interrupt. Compare Mode • In Compare mode, the 16-bit CCPR1 register value is constantly compared against the TMR1 register pair value. When a match occurs, the RC2/CCP1 pin is: Driven high Driven low Remains unchanged • The action on the pin is based on the value of control bits, CCP1M3:CCP1M0 (CCP1CON<3:0>). At the same time, interrupt flag bit CCP1IF is set. Compare Mode Block diagram CCP1CON/CCP2CON PWM Mode (Pulse Width Modulation) • Signals of varying frequency and duty cycle have a wide range of application in automation. Applications • A typical example is a power control circuit. • If a logic zero (0) indicates the switch-off and a logic one (1) indicates the switch-on - Switch • The electrical power that load consumers will be directly proportional to the pulse duration. This ratio is often called Duty Cycle - brightness Example-2 The use of PWM signals in the circuit for generating signals of arbitrary waveforms such as sinusoidal waveform.
Devices which operate in this way are used in practice as
adjustable frequency drivers controlling the electric motor (speed, acceleration, deceleration etc.). PWM Mode (Pulse Width Modulation) • In Pulse Width Modulation mode, the CCPx pin produces up to a 10-bit resolution PWM output. • Since the CCP1 pin is multiplexed with the PORTC data latch, the TRISC<2> bit must be cleared to make the CCP1 pin an output. • 8 bit timer value concatenated with 2 bits prescalar to create 10 bit time base PWM Mode Block Diagram
default low state
When PR2= TMR2 set high Duty cycle is latched from CCPR1L to CCPR1H
Remain in high state till
TMR2= CCPRIH (duty cycle) Setup for PWM Operation The following steps should be taken when configuring the CCP module for PWM operation: 1. Set the PWM period by writing to the PR2 register.
2. Set the PWM duty cycle by writing to the CCPR1L register and CCP1CON<5:4> bits.
3. Make the CCP1 pin an output by clearing the TRISC<2> bit.
4. Set the TMR2 prescale value and enable Timer2 by writing to
T2CON.
5. Configure the CCP1 module for PWM operation.
PWM PERIOD • The output pulse period (T) is determined by the PR2 register of the timer TMR2. • PWM Period = (PR2 +1) * 4Tosc * TMR2 Prescale Value. • If the PWM period (T) is known, then it is easy to determine the signal frequency F , F=1/T. PWM DUTY CYCLE
• The PWM duty cycle is specified by 10 bits:
• Eight MSbs of the CCPR1L register and two additional LSbs of the CCP1CON register (DC1B1 and DC1B0). • Pulse Width = (CCPR1L,DC1B1,DC1B0) * Tosc * TMR2 Prescale Value PWM RESOLUTION • An PWM signal is a pulse sequence with varying duty cycle. • For one specified frequency (number of pulses per second), there is a limited number of duty cycle combinations. This number represents a resolution measured by bits. • For Eg; A 10- bit resolution will result in 1024 discrete duty cycles, whereas an 8-bit resolution will result in 256 discrete duty cycles etc. C program #include<pic.h> void main() { TRISC = 0x00; T2CON=0x01; PR2=0xF9; CCP1CON=0x0F; CCPR1L=0xC8; CCP1X=0; CCP1Y=0; TMR2ON=1; while(1) {} }