Вы находитесь на странице: 1из 8

Electrical and Computer Engineering

PSoC Creator Tutorial: Design Example with PWM and Interrupt


By Prawat Nagvajara

I. Introduction
This tutorial introduces PSoC Creator design and consists of:
1. Creating a system comprising PWM, clock, Interrupt (interrupt service routine interface), digital
output port and LCD display.
2. Output pins assignment for PSoC 3 Dev. Kit CY8CKIT-030
3. Software - main.c
4. Programming the CY8CKIT-030
Design Example: An egg timer (a culinary term) is a device used for timing when T0 seconds has elapsed.
This tutorial demonstrates its use for blinking LED with a 1-s on/off period. The design uses PWM
terminal count interrupt to provide 200 ms interval interrupts. The interrupt service subroutine counts
the number of times interrupt happens and sets a time-expired flag when the count corresponds to 1 s.
II. Creating System
1. File -> New Project. Name the project egg_timer.

2. Workspace Explorer pane consists of the Project egg_timer TopDesign.cysch (schematic),


egg_timer.cydwr (hardaware), Header Files, Source Files: main.c and later the Generated_Source after

the system is built. On the top bar above the Workspace pace comprises buttons for build, compile,
program the device and debug.
3. The steps in this section build the system below. Open TopDesign.cysch in the Workspace.

3.1 In the Component Catalog pane drag and drop


PWM in Digital/Functions
Clock in System
Logic Low 0 in Digital/Logic
Interrupt [v1.7-] in System
Digital Output Pins in Ports and Pins
Character LCD [v1.90] in Display
3.2 Double click on each component and edit names according to the screenshot above.
3.3 Connect wires according to the screenshot using wiring tool the second button from the top of the
TopDesign.cysch pane.
3.4 Clock parameters: Double click on the clock and set these parameters

3.5 PWM parameters: Double click on the component and set these parameters

3.6 PWM Advanced parameters

3.7 Interrupt parameters

3.8 Digital Output Port parameters

3.9 LCD parameters

3.10 Click the build button.


4. Main dot C: Open and edit main.c
4.1 Include header files and declare variables

4.2 Interrupt Service Routine (isr) code


Before discussing the isr code, reader should know a method for declaring the address for an isr
program. An excerpt from the ISR component datasheet on the function ISR_SetVector shows
void ISR_SetVector(cyisraddress address) Description:

Parameters:
Return Value:
Side Effects:

Changes the ISR vector for the interrupt. Use this


function to change the ISR vector to the address
of a different interrupt service routine. Note that
calling ISR_Start() overrides any effect this
method would have had. To set the vector before
the component has been started, use
ISR_StartEx() instead.
address: Address of the ISR to set in the interrupt
vector table
void
Disable the interrupt before calling this function
and re-enable it after.

The main program (see void main() below) calls this function PWM_isr_SetVector(my_PWM_TC_isr;
which declares an address name my_PWM_TC_isr (PWM Terminal Count interrupt service routine) for
the isr code. The isr code begins with CY_ISR with the address.

Upon an interrupt from the PWM terminal count, if Time_Expired flag not set increment count. If count
reaches Max_Count set the flag and reset the count. LCD is used for debugging. Clear any pending on
PWM interrupt flag. Read status register of the PWM to clear the register. (From the PWM datasheet
The status register is a clear-on-read register so the interrupt source is held until the
PWM_ReadStatusRegister() function is called.)
4.3 void main()
4.3.1 Between global interrupt disable and enable, start and initialize all the peripherals. The address for
the interrupt service routine declared to be PWM_TC_isr. Disable the isr component initially.

4.3.2 Testing the Egg Timer by driving the digital output port (to be connected to an LED) high and low
with 1 sec period, that is, the isr sets the Time_Expired flag once count = Max_Count.

5. Open egg_time.cydwr. Edit the pins for my_LCD to P2[6:0] and Digital_Out_LED to P6[3]

6. Hit the Build button


III Program Device and Verification
1. Connect the USB JTAG to computer
2. Program the PSoC3
3. Verify for correctness.

Вам также может понравиться