78K0 uPD78010x Subseries Low Cost DC

To our customers,
Old Company Name in Catalogs and Other Documents
On April 1st, 2010, NEC Electronics Corporation merged with Renesas Technology
Corporation, and Renesas Electronics Corporation took over all the business of both
companies. Therefore, although the old company name remains in this document, it is a valid
Renesas Electronics document. We appreciate your understanding.
Renesas Electronics website: http://www.renesas.com
April 1st, 2010
Renesas Electronics Corporation
Issued by: Renesas Electronics Corporation (http://www.renesas.com)
Send any inquiries to http://www.renesas.com/inquiry.
Notice
1.
2.
3.
4.
5.
6.
7.
All information included in this document is current as of the date this document is issued. Such information, however, is
subject to change without any prior notice. Before purchasing or using any Renesas Electronics products listed herein, please
confirm the latest product information with a Renesas Electronics sales office. Also, please pay regular and careful attention to
additional and different information to be disclosed by Renesas Electronics such as that disclosed through our website.
Renesas Electronics does not assume any liability for infringement of patents, copyrights, or other intellectual property rights
of third parties by or arising from the use of Renesas Electronics products or technical information described in this document.
No license, express, implied or otherwise, is granted hereby under any patents, copyrights or other intellectual property rights
of Renesas Electronics or others.
You should not alter, modify, copy, or otherwise misappropriate any Renesas Electronics product, whether in whole or in part.
Descriptions of circuits, software and other related information in this document are provided only to illustrate the operation of
semiconductor products and application examples. You are fully responsible for the incorporation of these circuits, software,
and information in the design of your equipment. Renesas Electronics assumes no responsibility for any losses incurred by
you or third parties arising from the use of these circuits, software, or information.
When exporting the products or technology described in this document, you should comply with the applicable export control
laws and regulations and follow the procedures required by such laws and regulations. You should not use Renesas
Electronics products or the technology described in this document for any purpose relating to military applications or use by
the military, including but not limited to the development of weapons of mass destruction. Renesas Electronics products and
technology may not be used for or incorporated into any products or systems whose manufacture, use, or sale is prohibited
under any applicable domestic or foreign laws or regulations.
Renesas Electronics has used reasonable care in preparing the information included in this document, but Renesas Electronics
does not warrant that such information is error free. Renesas Electronics assumes no liability whatsoever for any damages
incurred by you resulting from errors in or omissions from the information included herein.
Renesas Electronics products are classified according to the following three quality grades: “Standard”, “High Quality”, and
“Specific”. The recommended applications for each Renesas Electronics product depends on the product’s quality grade, as
indicated below. You must check the quality grade of each Renesas Electronics product before using it in a particular
application. You may not use any Renesas Electronics product for any application categorized as “Specific” without the prior
written consent of Renesas Electronics. Further, you may not use any Renesas Electronics product for any application for
which it is not intended without the prior written consent of Renesas Electronics. Renesas Electronics shall not be in any way
liable for any damages or losses incurred by you or third parties arising from the use of any Renesas Electronics product for an
application categorized as “Specific” or for which the product is not intended where you have failed to obtain the prior written
consent of Renesas Electronics. The quality grade of each Renesas Electronics product is “Standard” unless otherwise
expressly specified in a Renesas Electronics data sheets or data books, etc.
“Standard”:
8.
9.
10.
11.
12.
Computers; office equipment; communications equipment; test and measurement equipment; audio and visual
equipment; home electronic appliances; machine tools; personal electronic equipment; and industrial robots.
“High Quality”: Transportation equipment (automobiles, trains, ships, etc.); traffic control systems; anti-disaster systems; anticrime systems; safety equipment; and medical equipment not specifically designed for life support.
“Specific”:
Aircraft; aerospace equipment; submersible repeaters; nuclear reactor control systems; medical equipment or
systems for life support (e.g. artificial life support devices or systems), surgical implantations, or healthcare
intervention (e.g. excision, etc.), and any other applications or purposes that pose a direct threat to human life.
You should use the Renesas Electronics products described in this document within the range specified by Renesas Electronics,
especially with respect to the maximum rating, operating supply voltage range, movement power voltage range, heat radiation
characteristics, installation and other product characteristics. Renesas Electronics shall have no liability for malfunctions or
damages arising out of the use of Renesas Electronics products beyond such specified ranges.
Although Renesas Electronics endeavors to improve the quality and reliability of its products, semiconductor products have
specific characteristics such as the occurrence of failure at a certain rate and malfunctions under certain use conditions. Further,
Renesas Electronics products are not subject to radiation resistance design. Please be sure to implement safety measures to
guard them against the possibility of physical injury, and injury or damage caused by fire in the event of the failure of a
Renesas Electronics product, such as safety design for hardware and software including but not limited to redundancy, fire
control and malfunction prevention, appropriate treatment for aging degradation or any other appropriate measures. Because
the evaluation of microcomputer software alone is very difficult, please evaluate the safety of the final products or system
manufactured by you.
Please contact a Renesas Electronics sales office for details as to environmental matters such as the environmental
compatibility of each Renesas Electronics product. Please use Renesas Electronics products in compliance with all applicable
laws and regulations that regulate the inclusion or use of controlled substances, including without limitation, the EU RoHS
Directive. Renesas Electronics assumes no liability for damages or losses occurring as a result of your noncompliance with
applicable laws and regulations.
This document may not be reproduced or duplicated, in any form, in whole or in part, without prior written consent of Renesas
Electronics.
Please contact a Renesas Electronics sales office if you have any questions regarding the information contained in this
document or Renesas Electronics products, or if you have any other inquiries.
(Note 1) “Renesas Electronics” as used in this document means Renesas Electronics Corporation and also includes its majorityowned subsidiaries.
(Note 2) “Renesas Electronics product(s)” means any product developed or manufactured by or for Renesas Electronics.
Application Note
78K0
µPD78010x Subseries
Low Cost DC-Motor Control
using NEC 8-bit Single-Chip Microcontrollers
Document No. U17482EE1V0AN00
Date Published April 2005
 NEC Corporation 2005
Printed in Germany
NOTES FOR CMOS DEVICES
1
PRECAUTION AGAINST ESD FOR SEMICONDUCTORS
Note:
Strong electric field, when exposed to a MOS device, can cause destruction of the gate oxide and
ultimately degrade the device operation. Steps must be taken to stop generation of static electricity
as much as possible, and quickly dissipate it once, when it has occurred. Environmental control
must be adequate. When it is dry, humidifier should be used. It is recommended to avoid using
insulators that easily build static electricity. Semiconductor devices must be stored and transported
in an anti-static container, static shielding bag or conductive material. All test and measurement
tools including work bench and floor should be grounded. The operator should be grounded using
wrist strap. Semiconductor devices must not be touched with bare hands. Similar precautions need
to be taken for PW boards with semiconductor devices on it.
2
HANDLING OF UNUSED INPUT PINS FOR CMOS
Note:
No connection for CMOS device inputs can be cause of malfunction. If no connection is provided
to the input pins, it is possible that an internal input level may be generated due to noise, etc., hence
causing malfunction. CMOS devices behave differently than Bipolar or NMOS devices. Input levels
of CMOS devices must be fixed high or low by using a pull-up or pull-down circuitry. Each unused
pin should be connected to V DD or GND with a resistor, if it is considered to have a possibility of
being an output pin. All handling related to the unused pins must be judged device by device and
related specifications governing the devices.
3
STATUS BEFORE INITIALIZATION OF MOS DEVICES
Note:
Power-on does not necessarily define initial status of MOS device. Production process of MOS
does not define the initial operation status of the device. Immediately after the power source is
turned ON, the devices with reset function have not yet been initialized. Hence, power-on does
not guarantee out-pin levels, I/O settings or contents of registers. Device is not initialized until the
reset signal is received. Reset operation must be executed immediately after power-on for devices
having reset function.
All other product, brand, or trade names used in this publication are the trademarks
or registered trademarks of their respective trademark owners.
Product specifications are subject to change without notice. To ensure that you have the latest
product data, please contact your local NEC Electronics sales office.
2
Application Note U17482EE1V0AN00
• The information in this document is current as of April, 2005. The information is subject to change
without notice. For actual design-in, refer to the latest publications of NEC Electronics data sheets or
data books, etc., for the most up-to-date specifications of NEC Electronics products. Not all
products and/or types are available in every country. Please check with an NEC Electronics sales
representative for availability and additional information.
• No part of this document may be copied or reproduced in any form or by any means without the prior
written consent of NEC Electronics. NEC Electronics assumes no responsibility for any errors that may
appear in this document.
• NEC Electronics does not assume any liability for infringement of patents, copyrights or other intellectual
property rights of third parties by or arising from the use of NEC Electronics products listed in this document
or any other liability arising from the use of such products. No license, express, implied or otherwise, is
granted under any patents, copyrights or other intellectual property rights of NEC Electronics or others.
• Descriptions of circuits, software and other related information in this document are provided for illustrative
purposes in semiconductor product operation and application examples. The incorporation of these
circuits, software and information in the design of a customer's equipment shall be done under the full
responsibility of the customer. NEC Electronics assumes no responsibility for any losses incurred by
customers or third parties arising from the use of these circuits, software and information.
• While NEC Electronics endeavors to enhance the quality, reliability and safety of NEC Electronics products,
customers agree and acknowledge that the possibility of defects thereof cannot be eliminated entirely. To
minimize risks of damage to property or injury (including death) to persons arising from defects in NEC
Electronics products, customers must incorporate sufficient safety measures in their design, such as
redundancy, fire-containment and anti-failure features.
• NEC Electronics products are classified into the following three quality grades: "Standard", "Special" and
"Specific".
The "Specific" quality grade applies only to NEC Electronics products developed based on a customerdesignated "quality assurance program" for a specific application. The recommended applications of an NEC
Electronics product depend on its quality grade, as indicated below. Customers must check the quality grade of
each NEC Electronics product before using it in a particular application.
"Standard": Computers, office equipment, communications equipment, test and measurement equipment, audio
and visual equipment, home electronic appliances, machine tools, personal electronic equipment
and industrial robots.
"Special": Transportation equipment (automobiles, trains, ships, etc.), traffic control systems, anti-disaster
systems, anti-crime systems, safety equipment and medical equipment (not specifically designed
for life support).
"Specific": Aircraft, aerospace equipment, submersible repeaters, nuclear reactor control systems, life
support systems and medical equipment for life support, etc.
The quality grade of NEC Electronics products is "Standard" unless otherwise expressly specified in NEC
Electronics data sheets or data books, etc. If customers wish to use NEC Electronics products in applications
not intended by NEC Electronics, they must contact an NEC Electronics sales representative in advance to
determine NEC Electronics' willingness to support a given application.
(Note)
(1) "NEC Electronics" as used in this statement means NEC Electronics Corporation and also includes its
majority-owned subsidiaries.
(2) "NEC Electronics products" means any product developed or manufactured by or for NEC Electronics (as
defined above).
M8E 02. 11-1
Application Note U17482EE1V0AN00
3
Regional Information
Some information contained in this document may vary from country to country. Before using any NEC
product in your application, please contact the NEC office in your country to obtain a list of authorized
representatives and distributors. They will verify:
•
Device availability
•
Ordering information
•
Product release schedule
•
Availability of related technical literature
•
Development environment specifications (for example, specifications for third-party tools and
components, host computers, power plugs, AC supply voltages, and so forth)
•
Network requirements
In addition, trademarks, registered trademarks, export restrictions, and other legal issues may also vary
from country to country.
NEC Electronics America Inc.
Santa Clara, California
Tel: 408-588-6000
800-366-9782
Fax: 408-588-6130
800-729-9288
NEC Electronics (Europe) GmbH
Duesseldorf, Germany
Tel: 0211-65 03 1101
Fax: 0211-65 03 1327
Sucursal en España
Madrid, Spain
Tel: 091- 504 27 87
Fax: 091- 504 28 60
Succursale Française
Vélizy-Villacoublay, France
Tel: 01-30-67 58 00
Fax: 01-30-67 58 99
4
Filiale Italiana
Milano, Italy
Tel: 02-66 75 41
Fax: 02-66 75 42 99
NEC Electronics Hong Kong Ltd.
Hong Kong
Tel: 2886-9318
Fax: 2886-9022/9044
Branch The Netherlands
Eindhoven, The Netherlands
Tel: 040-244 58 45
Fax: 040-244 45 80
NEC Electronics Hong Kong Ltd.
Seoul Branch
Seoul, Korea
Tel: 02-528-0303
Fax: 02-528-4411
Branch Sweden
Taeby, Sweden
Tel: 08-63 80 820
Fax: 08-63 80 388
United Kingdom Branch
Milton Keynes, UK
Tel: 01908-691-133
Fax: 01908-670-290
NEC Electronics Singapore Pte. Ltd.
Singapore
Tel: 65-6253-8311
Fax: 65-6250-3583
NEC Electronics Taiwan Ltd.
Taipei, Taiwan
Tel: 02-2719-2377
Fax: 02-2719-5951
Application Note U17482EE1V0AN00
Table of Contents
Chapter 1
1.1
1.2
Chapter 2
2.1
2.2
Chapter 3
3.1
3.2
Chapter 4
4.1
4.2
4.3
4.4
4.5
Chapter 5
Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 9
µPD780103 Overview . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 10
DC-Motors . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
DC Motor Basics . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 11
DC Motor Control Requirements . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 12
System Concept . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
System Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 13
System Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 14
Hardware Configuration. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
Schematic . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15
µPD780103 Configuration . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17
Peripherals and I/O Usage . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 18
8-bit Hn Timer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19
A/D Converter . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21
Software Process Descriptions. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
5.1
5.2
5.3
5.4
5.5
Introduction . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23
Initialization . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24
Main . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
AD_convert (ISR). . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Ramp . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.5.1 CMP_reg. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
5.6 turn_left or turn_right . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25
Chapter 6
Conclusion . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 26
Chapter 7
Software Flow Charts. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27
Chapter 8
Program Listing . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37
Application Note U17482EE1V0AN00
5
List of Figures
Figure 2-1:
Figure 2-2:
Figure 3-1:
Figure 3-2:
Figure 4-1:
Figure 4-2:
Figure 4-3:
Figure 4-4:
Figure 5-1:
Figure 7-1:
Figure 7-2:
Figure 7-3:
Figure 7-4:
Figure 7-5:
Figure 7-6:
Figure 7-7:
Figure 7-8:
Figure 7-9:
Figure 7-10:
Figure 7-11:
6
DC Motor - Operation .................................................................................................. 11
H-bridge....................................................................................................................... 12
Basic System Configuration ........................................................................................ 13
System Configuration with µPD780103 Peripherals.................................................... 14
Schematic Diagram ..................................................................................................... 16
Block Diagram of 8-bit H0 Timer ................................................................................. 19
Block Diagram of 8-bit H1 Timer ................................................................................. 20
Block Diagram of A/D Converter ................................................................................. 21
Initialization Process.................................................................................................... 24
Main Program Flowchart ............................................................................................. 27
CPU Clock Initialization ............................................................................................... 28
Hardware Initialization ................................................................................................. 29
Main Endless Loop ...................................................................................................... 29
AD_convert (ISR) ........................................................................................................ 30
Left_turn() .................................................................................................................... 31
Right_turn().................................................................................................................. 32
Ramp()......................................................................................................................... 33
CMP_reg() ................................................................................................................... 34
Disable all Interrupts.................................................................................................... 35
Enable all Interrupts..................................................................................................... 35
Application Note U17482EE1V0AN00
List of Tables
Table 1-1:
Table 4-1:
Functional Outline........................................................................................................... 10
I/O Configuration ............................................................................................................ 18
Application Note U17482EE1V0AN00
7
8
Application Note U17482EE1V0AN00
Chapter 1 Overview
1.1 Introduction
This application note describes a low-cost motor control application using an NEC µPD780103 microcontroller.
It covers the issues involved in driving and controlling a DC motor and is intended to help users to
understand the dedicated motor control peripherals of the µPD780103 Subseries. The published software and hardware configurations are meant to serve as examples only and are not intended for mass
production.
Application Note U17482EE1V0AN00
9
Chapter 1
Overview
1.2 µPD780103 Overview
Table 1-1:
Functional Outline
Item
Internal memory
Function
ROM
24 kbytes
High-speed RAM
768 bytes
Memory space
64 kbytes
X1 input clock (oscillation frequency)
Ceramic/crystal/external clock oscillation
10 MHz (VDD = 4.0 to 5.5 V)
8.38 MHz (VDD = 3.3 to 5.5 V)
5
MHz (VDD = 2.7 to 5.5 V)
Ring OSC clock (oscillation frequency)
On-chip ring oscillation (240 kHz (typ.))
General-purpose registers
8 bits × 32 registers (8 bits × 8 registers × 4 banks)
Minimum instruction execution time
0.2 µs/0.4 µs/0.8 µs/1.6 µs/3.2 µs
(X1 input clock: @ fXP = 10 MHz operation)
8.3 µs/16.6 µs/33.2 µs/66.4 µs/132.8 µs (TYP.)
(Ring OSC clock: @ fR = 240 kHz (typ.) operation)
Instruction set
•
•
•
•
I/O ports
Total
CMOS I/O
CMOS input
CMOS output
Timers
•
•
•
•
Timer outputs
16-bit operation
Multiply/divide (8 bits × 8 bits, 16 bits ÷ 8 bits)
Bit manipulate (set, reset, test, and Boolean operation)
BCD adjust, etc.
22
17
4
1
16-bit timer/event counter: 1 channel
8 -bit timer/event counter: 1 channel
8 -bit timer:
2 channels
Watchdog timer:
1 channel
4 (PWM: 3)
A/D converter
10-bit resolution × 4 channels
Serial interface
•
•
Vectored
interrupt sources
Internal
12
External
6
UART mode supporting LIN bus:
3-wire serial I/O mode/UART mode
Reset
•
•
•
•
•
Supply voltage
VDD = 2.7 to 5.5 V
Ambient operating temperature
TA = -40 to +85 °C
Package
30-pin plastic SSOP (7.62 mm (300))
Reset using RESET pin
Internal reset by watchdog timer
Internal reset by clock monitor
Internal reset by power-on-clear
Internal reset by low-voltage detector
Note: * - Select either of these alternate-functions pins.
10
1 channel
*:
Application Note U17482EE1V0AN00
1 channel
Chapter 2
DC-Motors
2.1 DC Motor Basics
DC motors are rotating electric machines designed to operate from source of direct voltage. They are
inexpensive, easy to drive, and readily available in all shapes and sizes. As such, they are used widely
in the industrial, automotive and consumer markets, e.g., for windshield wipers and fans.
A brushed DC motor is the simplest of all motor types, and typically consists a stator, rotor (armature), car-
bon brushes and commutator.
Figure 2-1:
DC Motor - Operation
Rotor
Torque
Coil
S
S
N
Current
Core
- Brush
N
Stator
+ Brush
Current
Current
-
Current
+
Commutator
Battery
The stator of a brushed DC motor consists of two or more permanent magnets generating a stationary
magnetic field that surrounds the rotor.
The rotor (armature) of a DC motor has coils of wire wrapped around its core. These coils are connected to small copper surface, called commutators, mounted on the rotor shaft. The rotor coils are
energized by passing current through the carbon brushes that slide over the commutator segments.
The energized rotor coils produce a magnetic field. The opposite polarities of the rotor and stator field
attract each other and the rotor starts to turn.
When the rotor and stator fields are aligned, the brushes move across the commutator segments and
energize the next rotor winding.
The speed and torque of the motor depends on the strength of the magnetic field generated by the
energized windings of the motor. The strength of the magnetic field depends on the strength of the current. Since speed is directly proportional to armature voltage and inversely proportional to the magnetic
flux produced by the poles, adjusting the armature voltage and/or the field current changes the motor
speed. In this application note speed control is based on generating and varying a PWM signal.
Application Note U17482EE1V0AN00
11
Chapter 2
DC-Motors
2.2 DC Motor Control Requirements
A popular circuit for driving DC motors is the H-bridge where four power switches, e.g., field effect transistors (MOSFET), are configured in an H pattern.
The H-bridge is used to change the sense of rotation, allowing a DC motor to run forward or backward
with a single supply.
The motor speed is influenced by varying the duty cycle of the PWM signal. Varying the duty cycle
changes the average DC voltage that is used to drive the power MOSFETs.
Figure 2-2 shows the basic principle.
Figure 2-2:
H-bridge
H-bridge (forward)
H-bridge (backward)
PWM
T1
PWM
T2
T1
I T2
I T1
IM
M
M
IM
T3
DC
I T3
T2
T3
DC
I T4
T4
T4
The H-bridge consists of two of high-side (T1, T2) and of two low-side (T3, T4) transistors. To drive the
motor in the forward direction, one high-side transistor (T2) is controlled with PWM, and one low-side
transistor (T3) is controlled by DC (soft chopping). T1 and T4 are turned off.
If the PWM pulse is high, T2 is open, and the current flows through T2, over the motor and through T3
to ground (Fig. 2-2a). If the PWM pulse is low, T2 is turned off, and the motor is slowed down. Changing
the duty cycle changes the motor speed.
To drive the motor in the reverse direction, T1 is controlled with PWM, and T4 is controlled by DC. T2
and T3 are turned off. The current flows in reverse direction and the motor turns in the opposite direction (Fig. 2-2b).
12
Application Note U17482EE1V0AN00
Chapter 3 System Concept
3.1 System Design
Figure 3-1 shows the basic block diagram for the DC motor control.
Figure 3-1:
INPUT:
Speed value
Direction
Basic System Configuration
µPD780103
Motor Driver
DC Motor
The µPD780103 evaluates the input signal for sense of rotation and motor speed. The µPD780103
uses this information to generate the appropriate control signals for the motor driver.
Application Note U17482EE1V0AN00
13
Chapter 3
System Concept
3.2 System Configuration
Figure 3-2 shows the system configuration and the µPD780103 peripherals used for the DC motor control.
Figure 3-2:
System Configuration with µPD780103 Peripherals
I/O Port 00
8-bit H0 Timer
Bit 2
P15
Motor Driver
High side
Direction
Bit 3
8-bit H1 Timer
P16
Low side
I/O Port 03
Speed reference
value
10-bit A/D Converter
ANI0/P20
Bit 0
Bit 1
µPD780103
DC Motor
Bit 2 and bit 3 of port 00 are used to scan the switch position that defines the sense of rotation of the
motor. The H0 or H1 timers are activated to generate a PWM signal.
The set voltage on the potentiometer is proportional to the desired motor speed. This voltage is converted by the 10 bit A/D converter and then normalized to 8 bits. The normalized A/D value defines the
duty cycle of the PWM signal that is generated by the H0 or H1 timer. Bit 0 and bit 1 of port 03 are used
to control the low-side driver.
The function of each of the peripherals is described in the next chapter.
14
Application Note U17482EE1V0AN00
Chapter 4 Hardware Configuration
4.1 Schematic
The DC motor in this application has a rated speed of 3000 rpm @ 24 V.
The diagram shows the DC motor control design using a µPD780103 microcontroller and NEC's
NP88N004 CHE PowerMOSFET.
Application Note U17482EE1V0AN00
15
Application Note U17482EE1V0AN00
+
5V
+
56n
5V
50K
1K2
1K2
P1 (Speed reference)
5V
RESET
S2
Direction
B1
15K
+
12p
1 0 M Hz
12p
5V
X2
X1
P130
P03
AVSS
P20 / ANI0
P02
VCC
+
P30
P31
P16
P15
5V
VSS
IC (VPP)
P23 / ANI3
P22 / ANI2
P21 / ANI1
P01
P00
P17
P14
P13
P12
P11
P10
P120
P33
P32
µPD780103
RESET
AVREF
+
S1
10k
10k
10k
10k
10k
10k
10k
10k
10k
10k
10k
2K2
560p
560p
15 V
GND
VS
CS
VB
OUT
15 V
15 V
VS
VCC
+
GND
CS
OUT
IN2
GND
OUT2
MIC 4427
IN1 OUT1
Err
IN
VCC VB
+
Err
IN
VCC
+
1N 4148
IA R 2 1 2 5
1N 4148
IA R 2 1 2 5
24 V
1n
100n
100n
47µ
100n
47µ
1n
1µ
100n
1N4148
10R
100n
100n
1N4148
10R
10R
10R
BZ X 79C 15
47µ
N P88N04 CH E
BZX 79C15
100n
R033
N P88N04 C HE
+
10R
10R
BZX 79C15
NP 88N 04 C H E
100n
BZX 79C15
BYW 96E PH
16
BYW 96E PH
R033
M
M
Figure 4-1:
N P88N04 CH E
Chapter 4
Hardware Configuration
Schematic Diagram
BYW 96E PH
BYW 96E PH
Chapter 4
Hardware Configuration
4.2 µPD780103 Configuration
The µPD780103 device is a member of the high-performance 78K 8-bit microcontroller family, designed
specifically for mid-range motor control applications. The configuration of the device and the operating
environment used in this application are listed below:
• CPU
µPD780103
• Operating clock
System clock – 10 MHz
• Operating voltage
5V
• Internal ROM
24 Kbytes
• Internal RAM
768 bytes
Application Note U17482EE1V0AN00
17
Chapter 4
Hardware Configuration
4.3 Peripherals and I/O Usage
Table 4-2 shows the microcontroller’s I/O pins.
The pins used in the application and their functions are listed.
Table 4-1:
Pin number
18
Pin name
I/O Configuration
Signal name
Mode setting
Function
1
P33/INTP4
I/O
Input
Not used
2
P32/INTP3
I/O
Input
Not used
3
P31/INTP3
I/O
Output
Low-side control
4
P30/INTP1
I/O
Output
Low-side control
5
IC
VPP
6
VSS
Ground
Ground
7
VDD
VDD
VDD
8
X1
Input
Main crystal
9
X2
10
RESET
11
P03
12
Not used
Main crystal
Input
System reset
I/O
Input
Different direction
P02
I/O
Input
Different direction
13
P01/TI010/TO00
I/O
Input
Not used
14
P00/TI000
I/O
Input
Not used
15
P10/SCK10/TXD0
I/O
Input
Not used
16
P11/SI10/RXD0
I/O
Input
Not used
17
P12/SO12
I/O
Input
Not used
18
P13/TXD6
I/O
Input
Not used
19
P14/RXD6
I/O
Input
Not used
20
P15/TOH0
TOH0
Output
PWM out for high side
21
P16/TOH1/INTP5
TOH1
Output
PWM out for high side
22
P17/TI50/TO50
I/O
Input
Not used
23
P130
Output
Output
Not used
24
P23/ANI3
Input
Input
Not used
25
P22/ANI2
Input
Input
Not used
26
P21/ANI1
Input
Input
Not used
27
P20/ANI0
ANI0
Input
Speed reference
28
AVREF
5V
A/D reference
29
AVSS
0V
A/D ground
30
P120/INTP0
Input
Application Note U17482EE1V0AN00
Not used
Chapter 4
Hardware Configuration
4.4 8-bit Hn Timer
This timer is used to generate a PWM signal that controls the speed of the motor via the MOSFETS
driver and MOSFET. The PWM signal is varied by modifying the duty cycle.
Hn (n = 0, 1) has the following functions:
• Interval timer
• Square-wave output
• PWM output
The following shows the block diagram of the H0 timer.
Figure 4-2:
Block Diagram of 8-bit H0 Timer
Internal bus
8-bit timer H mode control
register 0 (TMHMD0)
TMHE0 CKS02 CKS01 CKS00 TMMD01TMMD00 TOLEV0 TOEN0
3
8-bit timer H
compare register
10 (CMP10)
8-bit timer H
compare register
00 (CMP00)
2
TOH0/P15
Decoder
Selector
fX
fX/2
fX/22
fX/26
fX/210
8-bit timer/
event counter 50
output
Selector
Match Interrupt
generator
F/F
R
Output
controller
Level
inversion
Output latch
(P15)
PM15
8-bit timer
counter H0
Clear
PWM mode signal
1
Timer H enable signal
0
INTTMH0
PWM output mode with a frequency of 9.6 kHz is selected. The duty ratio of the 9.6 kHz signal is determined by the value of the 8-bit timer CMP1n compare register.
The calculation result of the speed control algorithm can be set on the fly, i.e., the CMP1n register can
be set at any time without stopping the Hn timer, because rewriting the CMP1n register is permitted
during timer operation.
The Hn timer compare register CMP1n is used to modify the duty cycle of PWM.
Application Note U17482EE1V0AN00
19
Chapter 4
Figure 4-3:
Hardware Configuration
Block Diagram of 8-bit H1 Timer
Internal bus
8-bit timer H mode control
register 1 (TMHMD1)
TMHE1 CKS12 CKS11 CKS10 TMMD11TMMD10 TOLEV1 TOEN1
3
8-bit timer H
compare register
11 (CMP11)
8-bit timer H
compare register
01 (CMP01)
TOH1/
INTP5/
P16
2
Decoder
Selector
Match Interrupt
generator
Selector
fX
fX/22
fX/24
fX/26
fX/212
fR/27
F/F
R
Output
controller
Level
inversion
Output latch
(P16)
PM16
8-bit timer
counter H1
Clear
PWM mode signal
1
0
Timer H enable signal
INTTMH1
The H0 and H1 timers are configured identically.
20
Application Note U17482EE1V0AN00
Chapter 4
Hardware Configuration
4.5 A/D Converter
The µPD780103 has on-chip A/D converter with four input channels that converts an analog input signal into a digital value with 10-bit resolution.
Figure 4-4:
Block Diagram of A/D Converter
AVREF
ADCS bit
ANI0/P20
Sample & hold circuit
ANI2/P22
Tap selector
Voltage comparator
Selector
ANI1/P21
AVSS
ANI3/P23
Successive
approximation
register (SAR)
AVSS
INTAD
Controller
Comparator
A/D conversion result
register (ADCR)
2
ADS1
ADS0
ADCS
FR2
Analog input channel
specification register
(ADS)
FR1
FR0
ADCE
Power-fail comparison
threshold register (PFT)
PFEN PFCM
A/D converter mode
register (ADM)
Power-fail comparison
mode register (PFM)
Internal bus
In this application a potentiometer is connected between VDD (5 V), ground and channel 1 (ANI0) of the
A/D converter. The potentiometer value represents the reference value for the speed control.
The conversion process is continuous and always the last converted value is read out from the ADCR
register of the µPD780103.
The conversion time of the A/D converter is 9.6 µs.
Analog reference AVDD and analog ground of the A/D converter are connected to VDD and VSS, respectively.
Application Note U17482EE1V0AN00
21
[MEMO]
22
Application Note U17482EE1V0AN00
Chapter 5 Software Process Descriptions
5.1 Introduction
The software consists of four main sections:
<1>
<2>
<3>
<4>
Main
Control with 8-bit H0 timer
Control with 8-bit H1 timer
A/D ISR
The motor operation is controlled by the H0, H1 timers and the A/D converter interrupt service routine.
The main program consists of an initialization routine and start-up of the control process.
H0 and H1 generate the PWM signal for controlling the motor speed. The A/D converter ISR provides
the speed reference value.
The operation of each of the software components is described in the following sections.
Application Note U17482EE1V0AN00
23
Chapter 5
Software Process Descriptions
5.2 Initialization
The initialization routine is responsible for initializing the µPD780103 device after a system reset. It configures the clock settings of the device, initializes the peripherals used for the motor control application
and enables the appropriate interrupts. The initialization has two parts as shown in Figure 5-1. The first
part initializes and sets the processor clock of the device and the second part initializes the peripherals
and their operating modes.
Figure 5-1:
Initialization Process
Initialization
Enable interrupts
Set processor
Configure
peripherals
Set port
Define
operating mode
The initialization contains the following sections:
<1>
<2>
<3>
<4>
<5>
24
System clock setting
8-bit H0 timer
8-bit H1 timer
A/D converter
I/O port setting
Application Note U17482EE1V0AN00
Chapter 5
Software Process Descriptions
5.3 Main
The main program provides the framework within which the subroutines execute the various tasks of
the motor control application.
The main program starts by invoking the global initialization subroutines CPU_ClockTo_X1 and
hdw_init.
The endless loop of the main program consists of the PWM generation, direction control and speed stabilization.
5.4 AD_convert (ISR)
The reference speed is given by a potentiometer.
The A/D converter continuously converts its input value. Approx. every 9.6 µs a new reference speed
value is provided to the ADCR register for further calculations.
The ISR normalizes the A/D converter's 10-bit result to 8 bits. The ISR also calculates the difference
between the old and new value of ADCR register. Both values are passed to appropriate routines for
further handling.
5.5 Ramp
This routine performs a soft start-up of the DC motor and soft variance of the motor speed.
After determining of the speed value, the PWM register of the Hn timer is set to minimum speed. Hn
generates the PWM signal for controlling the motor speed.
PWM generation of Hn is enabled and the PWM register, containing the minimum speed value, is incremented to increase the motor speed until the reference speed is reached.
Remark:
n = 0, 1
5.5.1 CMP_reg
This routine is invoked from within the ramp routine.
For a soft start-up or soft speed change, each change in the PWM duty cycle is followed by a delay.
This routine also determines which timer register must be set to the actual value.
5.6 turn_left or turn_right
This is the main control program and consists of the two routines turn_left() and turn_right() that provide
the following functions:
(a)
(b)
(c)
(d)
Set the PWM frequency
Initialize the port that controls the low-side driver
Invoke the ramp function
Determine the direction
Application Note U17482EE1V0AN00
25
Chapter 6 Conclusion
This application example provides a basic DC motor control system suitable for implementation using
NEC’s 78K0 8-bit microcontroller family.
Memory requirements for this example:
• 78K0 – µPD780103
Code:
Data:
24 kbytes available, 1869 bytes used
768 bytes available, 136 bytes used
The 78K0 microcontroller used in this application provides further resources for additional user functions or/and adaptations of the control algorithm.
26
Application Note U17482EE1V0AN00
Chapter 7
Software Flow Charts
Figure 7-1:
Main Program Flowchart
Main
Initialise CPU clock
Initialise Hardware
Disable all interrupts
A/D conversion started
A/D conversion
complete?
No
Yes
Read result A/D value
with 10-bit resolution
Convert the value
to 8-bit
Enable all interrupts
Endless loop
Application Note U17482EE1V0AN00
27
Chapter 7
Figure 7-2:
Software Flow Charts
CPU Clock Initialization
CPU_clock_to_X
Set oscillation
stabilization time
Ring oscillator
stopped?
No
Yes
Set CPU speed
Select X1 as input
clock
X1 is selected?
No
Yes
Select Ring oscillator
mode
Stop Watchdog
Timer
28
Application Note U17482EE1V0AN00
Chapter 7
Software Flow Charts
Figure 7-3:
Hardware Initialization
hdv_init
Initialise I/O Ports
Initialise H0 timer
Initialise H1 timer
Initialise A/D converter
Figure 7-4:
Main Endless Loop
Main Endless
Clear P0
Direction left?
Yes
No
Direction right?
No
left turn()
Clear P0
Yes
right turn()
Clear P0
old_AD = 0
Application Note U17482EE1V0AN00
29
Chapter 7
Software Flow Charts
Figure 7-5:
AD_convert (ISR)
INTAD Interrupt
AD_convert
Read result_AD value
with 10-bit resolution
Convert the value to
8-bit
result_AD
>=
Yes
result_AD = max_duty
No
result_AD <
old_AD?
Yes
delta_ramp =
result_AD - old_AD
Yes
delta_ramp =
old_AD - result_AD
No
result_AD >
old_AD?
No
End
30
Application Note U17482EE1V0AN00
Chapter 7
Software Flow Charts
Figure 7-6:
Left_turn()
left_turn()
Stop H1 timer
Set P3_bit.no1 low
result_AD >
max_delta?
Yes
Disable interrupt
delta_ramp =
result_AD
old_AD = 0
Enable interrupt
ramp()
No
Set P3_bit.no0 high
Set PWM frequency
Direction
left?
Yes
No
result_AD
> 1?
Yes
Disable interrupts
No
result_AD >
max_duty?
Yes
result_AD =
max_duty
No
delta_ramp >
max_delta?
ramp()
Yes
ramp()
No
result_AD >
max_duty?
Yes
result_AD =
max_duty
No
CMP10 =
result_AD
CMP10 = old_AD
H0 timer
OFF?
Yes
Start H0 timer
No
Enable interrupts
Stop H0 timer
End
Application Note U17482EE1V0AN00
31
Chapter 7
Software Flow Charts
Figure 7-7:
Right_turn()
Disable interrupt
old_AD = 0
right_turn()
Stop H0 timer
Set P3_bit.no1 high
result_AD >
max_delta?
Yes
delta_ramp =
result_AD
Enable interrupt
ramp()
No
Set P3_bit.no0 low
Set PWM frequency
Direction
right?
Yes
No
result_AD
> 1?
Yes
Disable interrupts
No
result_AD >
max_duty?
Yes
result_AD =
max_duty
No
delta_ramp >
max_delta?
ramp()
No
result_AD >
max_duty?
Yes
result_AD =
max_duty
No
CMP11 =
result_AD
CMP11 = old_AD
H1 timer
OFF?
Yes
Start H1 timer
No
Enable interrupts
Stop H1 timer
End
32
Application Note U17482EE1V0AN00
Yes
ramp()
Chapter 7
Software Flow Charts
Figure 7-8:
Ramp()
ramp()
Direction
left?
Yes
H0 timer
OFF?
No
Yes
Stop H1 timer
No
Start H0 timer
Yes
Start H1 timer
Yes
H0 timer
OFF?
Direction
right?
No
No
Stop H0 timer
result_AD >
old_AD?
Yes
No
Yes
result_AD <
old_AD?
delta_ramp >
max_delta?
Yes
result_AD =
old_AD
No
No
result_AD =
old_AD
Yes
delta_ramp >
max_delta?
No
Yes
delta_ramp - -
delta_ramp
>0 ?
delta_ramp
>0 ?
No
No
old_AD =
result_AD
old_AD =
result_AD
Yes
delta_ramp - -
result_AD - -
result_AD - -
CMP_reg()
CMP_reg()
End
Application Note U17482EE1V0AN00
33
Chapter 7
Software Flow Charts
Figure 7-9:
CMP_reg()
CMP_reg()
count loop <
Yes
No
Direction
left?
count_loop++
No operation
Yes
CMP10 =
No
Direction
right?
Yes
CMP11 =
No
delta_ramp =
End
34
Application Note U17482EE1V0AN00
Chapter 7
Software Flow Charts
Figure 7-10:
Disable all Interrupts
DI()
Disable
No operation
No operation
End
Figure 7-11:
Enable all Interrupts
EI()
Enable
No operation
No operation
End
Application Note U17482EE1V0AN00
35
[MEMO]
36
Application Note U17482EE1V0AN00
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= declar.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: global declaration
*/
/***********************************************************************/
volatile unsigned short result_AD, delta_ramp;
unsigned short old_AD;
unsigned short count_loop;
/***********************************************************************/
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= declar.h
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: global declaration and definition
*/
/***********************************************************************/
#ifndef __DECLAR_H__
#define __DECLAR_H__
#define
#define
#define
#define
max_duty 235
PWM_FQ
255
max_delta 10
delay_val 3500
//
//
//
//
define
define
define
define
maximum of duty cycle
PWM frequency
maximum of delta
maximum of delay time value
extern volatile unsigned short result_AD, delta_ramp;
extern unsigned short old_AD;
extern unsigned short count_loop;
#endif
//__DECLAR_H__
/***********************************************************************/
Application Note U17482EE1V0AN00
37
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= init.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: Module initializes the UPD780103 Hardware
*/
/***********************************************************************/
/***********************************************************************/
/* include
*/
/***********************************************************************/
#include ’io780103.h’
#include <intrinsics.h>
/***********************************************************************/
/* pragma
*/
/***********************************************************************/
#pragma language = extended
/***********************************************************************/
/* type definitions (function prototypes)
*/
/***********************************************************************/
void CPU_ClockTo_X1(void);
// Select CPU clock
void hdw_init (void);
// Hardware initialization
/***********************************************************************/
void CPU_ClockTo_X1(void)
{
OSTS = 0x02;
//
//
//
//
6.55ms@10MHz wait after STOP
mode release (RESET value)
-----|||
Osc. stabilization time
-----010 - 2^13/fx
while (!OSTC_bit.no3) {__no_operation();}
// wait until ring oscillator stopped
PCC = 0x00;
// Use high speed mode fCPU=10MHz
MCM = 0x01;
// ------|1 - X1 input clock
MOC = 0x00;
// 0 -------- X1 input clock oscillating
while (!MCM_bit.no1)
{
MOC = 0x00;
MCM = 0x01;
}
RCM = 0x01;
WDTM = 0x77;
}
38
// Ring oscillator stopped
// 01110111 watchdog timer stopped
// end of vSwitchCPUClockToX1()
Application Note U17482EE1V0AN00
Chapter 8
Program Listing
/***********************************************************************/
void hdw_init (void)
{
/***********************************************************************/
/*************
setting port mode register, port register
************/
PM0=0xFF;
PM1=0x9F;
PM3=0xFC;
//1111 1111 P02,P03,P00,P01 as input
//1001 1111 P15, P16 as output
//1111 1100 P30, P31 as output for low side
P0=0x00;
P1=0x00;
P3=0x00;
//0000 0000 P02,P03,P00,P01 to input low level
//0000 0000 P15,P16 to output latch
//0000 0000 P30-P33 to output latch
/***********************************************************************/
__enable_interrupt();
/***********************************************************************/
/*************************
TMHMD0=0x29;
TMHMD1=0x19;
Timer H0, H1 setting
******************/
//0010 1001 f=2,5M;PWM mode;stopped;output enabled
//0001 1001 f=2,5M;PWM mode;stopped;output enabled
/***********************************************************************/
/******************
A/D Converter setting
************************/
ADS=0x00;
//00000000 ANI0 as input
ADM=0x31;
//00110001 operation with 9.6µs and with
//AVref (stopped)
ADMK=0;
//interrupt for AD-conversion enabled
/***********************************************************************/
}
//end of hdw_init()
Application Note U17482EE1V0AN00
39
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= main.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: Main function
*/
/***********************************************************************/
/***********************************************************************/
/* type definitions (function prototypes)
*/
/***********************************************************************/
void CPU_ClockTo_X1(void);
// Select CPU clock
void hdw_init (void);
// Hardware initialization
void left_turn(void);
// Motorcontrol with H0 timer
void right_turn(void);
// Motorcontrol with H1 timer
void ramp(void);
// ramp function
void DI(void);
// disable interrupts
void EI(void);
// enable interrupts
/***********************************************************************/
// pragma
/***********************************************************************/
#pragma language = extended
/***********************************************************************/
// include
/***********************************************************************/
#include ’io780103.h’
#include ’declar.h’
#include <intrinsics.h>
/***********************************************************************/
void main(void)
{
CPU_ClockTo_X1();
hdw_init ();
DI();
// disable interrupts
ADCS=1;
while(!ADIF){}
result_AD=(ADCR>>8)-0.5;
//
//
//
//
EI();
// enable interrupts
40
start conversion
wait for conversion
Convert the 10 bit Result register
to 8 bit and to integer
Application Note U17482EE1V0AN00
Chapter 8
while (1)
{
P0=0x00;
}
}
Program Listing
// start endless loop
// Clear P0
if (P0_bit.no2 == 1)
{
left_turn();
P0=0x00;
}
// turn left
if (P0_bit.no3 == 1)
{
right_turn();
P0=0x00;
}
// turn right
old_AD=0;
// new initialisation of old value of ADC
// Clear P0
// end of
// Clear P0
// end of
if (P0_bit.no2 == 1)
if (P0_bit.no3 == 1)
// end of while(1)
// end of main
Application Note U17482EE1V0AN00
41
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= interr.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: interrupt vector
*/
/***********************************************************************/
/***********************************************************************/
// include
/***********************************************************************/
#include ’io780103.h’
#include <intrinsics.h>
#include <declar.h>
/***********************************************************************/
#pragma vector = INTAD_vect
__interrupt void AD_convert(void)
{
result_AD=(ADCR>>8)-0.5;
if(result_AD>=max_duty)
{
result_AD=max_duty;
}
//set limit of duty cycle
if(result_AD < old_AD)
{
delta_ramp = old_AD - result_AD;
}
else if(result_AD > old_AD)
{
delta_ramp = result_AD - old_AD;
}
}
42
//end of AD_convert()
Application Note U17482EE1V0AN00
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= ramp.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany*/
/***********************************************************************/
/* Description: ramp function
*/
/***********************************************************************/
/***********************************************************************/
/* type definitions (function prototypes)
*/
/***********************************************************************/
void ramp(void);
// ramp function
void CMP_reg(void);
// determine the CMP-register
/***********************************************************************/
// pragma
/***********************************************************************/
#pragma language = extended
/***********************************************************************/
// include
/***********************************************************************/
#include ’io780103.h’
#include ’declar.h’
#include <intrinsics.h>
/***********************************************************************/
void ramp(void)
{
if((P0_bit.no2 == 1)&&(!TMHE0))
{
TMHE1=0;
//stop H1
TMHE0=1;
//start H0
}
else if ((P0_bit.no3 == 1)&&(!TMHE1))
{
TMHE0=0;
//stop H0
TMHE1=1;
//start H1
}
if(result_AD > old_AD)
{
if(delta_ramp > max_delta)
{
result_AD = old_AD;
for (delta_ramp; delta_ramp > 0; delta_ramp--)
{
result_AD++;
CMP_reg();
}
//end of for delta_ramp
Application Note U17482EE1V0AN00
43
Chapter 8
}
Program Listing
//end if(delta_ramp > max_delta)
old_AD = result_AD;
}
//end of if(result_AD > old_AD)
/***********************************************************************/
else if(result_AD < old_AD)
{
if(delta_ramp > max_delta)
{
result_AD = old_AD;
for (delta_ramp; delta_ramp > 0; delta_ramp--)
{
result_AD--;
CMP_reg();
}
//end of for delta_ramp
}
//end of if(delta_ramp > max_delta)
old_AD = result_AD;
}
//end of if(result_AD < old_AD)
/***********************************************************************/
}
//end of function ramp()
/***********************************************************************/
/***********************************************************************/
void CMP_reg(void)
{
for(count_loop=0;count_loop<delay_val;count_loop++)//time delay
{
__no_operation();
}
}
44
if(P0_bit.no2 == 1)
{
CMP10 = result_AD;
}
else if (P0_bit.no3 == 1)
{
CMP11=result_AD;
}
else
{
delta_ramp=1;//break of for-loop
}
// end of function CMP_reg()
Application Note U17482EE1V0AN00
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= control.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: Motor control with H0 and H1 timers
*/
/***********************************************************************/
/***********************************************************************/
// include
/***********************************************************************/
#include ’io780103.h’
#include ’declar.h’
#include <intrinsics.h>
/***********************************************************************/
/***********************************************************************/
/* type definitions (function prototypes)
*/
/***********************************************************************/
void left_turn(void);
// Motorcontrol with H0 timer
void right_turn(void);
// Motorcontrol with H1 timer
void ramp(void);
// ramp function
void DI(void);
// disable interrupts
void EI(void);
// enable interrupts
/***********************************************************************/
/*******************
void left_turn (void)
{
Motorcontrol with H0 timer
TMHE1=0;
P3_bit.no1 = 0;
P3_bit.no0 = 1;
CMP00=PWM_FQ;
//
//
//
//
if(result_AD>max_delta)
{
DI();
******************/
stop H1
Low Side of H1 OFF
Low Side of H0 ON
Set PWM frequency for H0 = 9.6 kHz
// disable interrupts
old_AD=0;
delta_ramp = result_AD;
ramp();
EI();
// enable interrupts
}
Application Note U17482EE1V0AN00
45
Chapter 8
Program Listing
while ((P0_bit.no2 == 1)&&(result_AD >=1))
{
DI();
// disable interrupts
if(result_AD>=max_duty)
{
result_AD = max_duty; // set limit of duty cycle
if(delta_ramp > max_delta)
{
ramp();
}
}
else
{
ramp();
} // end of else
if(result_AD>=max_duty)
{
result_AD = max_duty;
CMP10 = result_AD;
}
else
{
CMP10 = old_AD;
}
if (!TMHE0)
{
TMHE0=1;
}
EI();
// set limit of duty cycle
// start H0
// enable interrupts
}//End of while
TMHE0=0;
// stop H0
}// end of left_turn()
46
Application Note U17482EE1V0AN00
Chapter 8
Program Listing
/***********************************************************************/
/*****************
Motorcontrol with H1 timer
********************/
void right_turn(void)
{
TMHE0=0;
P3_bit.no1 = 1;
P3_bit.no0 = 0;
CMP01=PWM_FQ;
//
//
//
//
if(result_AD>max_delta)
{
DI();
stop H0
Low Side of H1 ON
Low Side of H0 OFF
Set PWM frequency for H0 = 9.6 kHz
// disable interrupts
old_AD=0;
delta_ramp = result_AD;
ramp();
EI();
// enable interrupts
}
while ((P0_bit.no3 == 1)&&(result_AD >=1))
{
DI();
// disable interrupts
if(result_AD>=max_duty)
{
result_AD=max_duty;
// set limit of duty cycle
if(delta_ramp > max_delta)
{
ramp();
}
}
else
{
ramp();
}
// end of else
if(result_AD>=max_duty)
{
result_AD = max_duty;
CMP11 = result_AD;
}
else
{
CMP11 = old_AD;
}
if (!TMHE1)
{
TMHE1=1;
}
// set limit of duty cycle
// start H1
Application Note U17482EE1V0AN00
47
Chapter 8
EI();
Program Listing
// enable interrupts
}//end of while
TMHE1=0;
}
//stop H1
// end of right_turn()
/***********************************************************************/
48
Application Note U17482EE1V0AN00
Chapter 8
Program Listing
/***********************************************************************/
/* PROJECT
= Motor control
*/
/* MODULE
= d_e_inter.c
*/
/* VERSION
= V0.1
*/
/* DATE
= 18.02.2005
*/
/* LAST CHANGE =
*/
/*
*/
/* NEC Electronics (Europe) GmbH
*/
/* Technical Product Support
*/
/* Customer Engineering Support
*/
/* D-40472 Düsseldorf, Germany
*/
/***********************************************************************/
/* Description: Disable or enable interrupts
*/
/***********************************************************************/
/***********************************************************************/
/* type definitions (function prototypes)
*/
/***********************************************************************/
void DI(void);
void EI(void);
/***********************************************************************/
/***********************************************************************/
// include
/***********************************************************************/
#include <intrinsics.h>
/***********************************************************************/
void DI(void)
{
__disable_interrupt();
__no_operation();
__no_operation();
}
/***********************************************************************/
void EI(void)
{
__enable_interrupt();
__no_operation();
__no_operation();
}
/***********************************************************************/
Application Note U17482EE1V0AN00
49
[MEMO]
50
Application Note U17482EE1V0AN00
Facsimile Message
From:
Name
Company
Tel.
Although NEC has taken all possible steps
to ensure that the documentation supplied
to our customers is complete, bug free
and up-to-date, we readily accept that
errors may occur. Despite all the care and
precautions we've taken, you may
encounter problems in the documentation.
Please complete this form whenever
you'd like to report errors or suggest
improvements to us.
FAX
Address
Thank you for your kind support.
North America
Hong Kong, Philippines, Oceania
NEC Electronics America Inc.
NEC Electronics Hong Kong Ltd.
Corporate Communications Dept. Fax: +852-2886-9022/9044
Fax: 1-800-729-9288
1-408-588-6130
Korea
Europe
NEC Electronics Hong Kong Ltd.
NEC Electronics (Europe) GmbH
Seoul Branch
Market Communication Dept.
Fax: 02-528-4411
Fax: +49(0)-211-6503-1344
Asian Nations except Philippines
NEC Electronics Singapore Pte. Ltd.
Fax: +65-6250-3583
Japan
NEC Semiconductor Technical Hotline
Fax: +81- 44-435-9608
Taiwan
NEC Electronics Taiwan Ltd.
Fax: 02-2719-5951
I would like to report the following error/make the following suggestion:
Document title:
Document number:
Page number:
If possible, please fax the referenced page or drawing.
Document Rating
Excellent
Good
Acceptable
Poor
Clarity
Technical Accuracy
Organization
CS 99.1
[MEMO]