MICROCHIP AN984 Technical data

AN984
使用 dsPIC30F MCU 控制交流感应电机
作者:
Steve Bowling Microchip Technology
引言
此应用笔记说明了如何使用 dsPIC30F MCU 来控制交流 感应电机 (AC Induction MotorACIM)。本文中的讨 论基于 dsPICDEM™ MC 电机控制开发系统,但是您仍 可选择使用自己的硬件。 dsPICDEM MC 电机控制开发 系统带有电气隔离设备并且具有故障保护功能。有了这 些功能,就可以安全地开发电机控制应用程序并避免软 件错误对硬件造成损害。

推荐使用的硬件

®
• MPLAB
(部件号:DV164005
• dsPICDEM MC1 电机控制开发板 (部件号:DM300020
• dsPICDEM MC1H 3 相高压电源模块 (部件号:DM300021
• 3 相 ACIM 高压电机 (208/460V)
(部件号:AC300021
如果您喜欢,也可使用自己的 3 相或单相 ACIM。推荐 的功率范围为 1/6 1/2 HP
ICD 2 在线调试器和器件编程器

背景知识

ACIM 具有简单的转子构造并且不使用电刷。由于这些 原因, ACIM 比直流电机更耐久。唯一需要保养的机械 组件只有转子轴承。该转子就是一个由磁性叠片构成的 钢笼,因此耐热性要好得多。 ACIM 的耐久性使它成为 了一种极具吸引力的选择。
ACIM 的变速控制从概念上说非常简单。必须改变驱动 电压的频率和幅值以改变电机速度。早期的 ACIM 驱动 电路采用 SCR 器件,连接方式如图 1 所示。通过在适 当的时间开通每个 SCR,可以在电机各相上产生非常近 似的正弦电压。由于有六种不同的方法可以使 SCR 器 件导通从而产生电机电流,这种类型的电路通常被称为
“六步”驱动电路。但是,六步驱动电路的高次谐波成
分会产生高热量,而且在低频时性能不佳。
从六步驱动时代至今,半导体技术已有了巨大的进步。 SCR 器件现在被 MOSFET IGBT 器件取代,后面这 两种器件能以最小的功率损耗在相对较高的频率下导通 和关断。可以使用 PWM 信号控制这些器件以产生连续 变化的驱动电压和电流。

其他参考文档

以下应用笔记提供了有用的背景信息:
,“
AN887 DS00887
AN889
Motors Using PIC16F7X7 Microcontrollers
DS00889
AN900,“Controlling 3-Phase AC Induction
Motors Using the PIC18F4431
AN908
量控制》
2005 Microchip Technology Inc. DS00984A_CN 1
AC Induction Motor Fundamentals
,“
VF Control of 3-Phase Induction
DS00900
,《使用
dsPIC30F
DS00908A_CN
实现交流感应电机的矢
AN984

1 SCR 逆变器电路

交流
电源
SCR X6
3
ACIM
+

单相 ACIM 与三相 ACIM 的比较

“电容起动”电机。
ACIM 中,电容运转电机是进行变速控制的最佳选择。
DS00984A_CN 第 2 页  2005 Microchip Technology Inc.
AN984

逆变电路

变速 ACIM 应用需要逆变电路来完成两个功能。首先, 输入的主交流电需要经过整形和滤波以产生直流母线电 压。其次,直流母线电压必须再转换为为电机供电的交 流电流。图 2 中的电路可用来控制三相电机。

2 三相逆变器电路

交流主
供电电压
®
MCU 上电机控制 PWM
+
IGBT X6
3
ACIM

3 PWM 框图

PWM 发生器
dsPIC® PWM 外设
死区延迟
死区延迟
驱动器
驱动器
V
BUS(总线电压)
负载
2005 Microchip Technology Inc. DS00984A_CN 3
AN984

可供单相电机选用的逆变器电路

4:用3 相逆变器驱动分相电机

交流主
供电电压

5:用H 桥逆变器驱动分相电机

+
分相电机也可以用 H 桥逆变器驱动,如图 5 所示。此 方案需要一个运转电容,但是省去了两个逆变器开关器 件。此电路的缺点在于电机的旋转方向是由电路中电容 的位置决定的。H 桥逆变器电路还可以用来驱动具有单 个绕组的罩极电机。
驱动分相电机或罩极电机的另一个方法是使用带 H 桥逆 变器的倍压电路,如图 6 所示。在此电路中,开关器件 上会有更高的直流母线电压。
副绕组 主绕组
公共端
交流主 供电电压

6 用倍压器电路驱动分相电机

交流主 供电电压
运转电容
+
+
+
主绕组
公共端
副绕组 主绕组
公共端
DS00984A_CN 4 2005 Microchip Technology Inc.
AN984

产生正弦波

表中点的数量

“阶梯”效应。阶梯效应将引起电机电流失真,从而导
假定为典型的 ACIM 选定了 16 kHz PWM 载波信号, 并且最大调制频率为 60 Hz

公式 1

表中值的个数 = f
PWM/fMODMAX
= 16,000/60
= 267

正弦表指针

公式 2

调制频率分辨率 = f
= 0.244 Hz/

公式 3

f
/0.244 = 60/0.244
MOD
= 246
如果每次 PWM 中断时,将正弦表指针加上该值 246,那 么我们将会得到 60 Hz 的调制频率。
PWM
/216
对于此例,含有 256 个值的正弦表已经足够了。实际 上,此应用笔记提供的代码使用的是含有 64 个值的表, 而且能够提供良好的结果。
2005 Microchip Technology Inc. DS00984A_CN 5
AN984

如何产生带有相位偏移的多个正弦输出

我们想要产生具有不同相位的多个输出来驱动 ACIM。 通过将指针变量加上固定的偏移值可以为某个特定的输 出确定相位偏移。

三相输出

单相输出

如果希望使用 H 桥逆变器驱动一相电机绕组,那么可以0 度相位偏移调制桥的一边,用 180 度偏移调制桥的 另一边。如果使用 16 位正弦表指针,偏移值 0x8000 将 提供 180 度偏移。可能需要 90 度偏移来驱动分相电机 的副绕组。在这种情况下,可以使用正弦指针偏移值 0x4000

正弦表指针的获取

为了获得索引值以从表中查找正弦数据,将 16 位正弦指 针右移以丢弃在 “正弦表指针”部分中描述的 “小数” 位。如果使用含有 256 个值的表,则只需将指针的高 8 位用作查找表的索引。

正弦表中查找值的换算

一旦从表获得查找值之后,就会将这些值乘以比例值以 确定调制输出的实际幅值。“PWM 调制”部分提供了有 关换算的更多详情。
DS00984A_CN 6 2005 Microchip Technology Inc.
AN984

ACIM 转差与转矩

为了说明转差,假定用 60 Hz 的交流输入电压为两极 ACIM 供电。如果转子跟随输入电压的频率同步旋转, 则转子将以 60 转每秒 (即 3600 RPM)的速度旋转。 然而由于转差,转子的转速略微低于同步速度
3600 RPM。通常在电机规格中注明转差。同步速度为 3600 RPM 的两极电机可能将 3450 RPM 指定为标称电
机速度。

7 ACIM 转矩与转差关系曲线

T
起动转矩
制动区域
电动机 区域
失速转矩
工作点
同步速度
RPM
发电机 区域
1.5 1.0 0.5 0 -0.5 -1.0
转差
2005 Microchip Technology Inc. DS00984A_CN 7
AN984
压—频关系曲线

8 变频工作模式下的转矩曲线

转矩
5
0V/1
5
Hz
100V/30 Hz
Hz
5
V/4
50
1
0V/60 Hz
0
2

9 VF 曲线示例

120
100
80
伏特 RMS
60
40
20
提升 区域
低频截止
20 40 60
频率 (Hz
高幅值
固定 V/F 区域
极限
速度
DS00984A_CN 8 2005 Microchip Technology Inc.
AN984

软件操作

ADC 采样以及 VF 曲线计算

AN7 连接的电位计设置驱动频率。将 10 ADC 结 果右移两位,然后写入 Frequency 变量。频率分辨率 为 0.244 Hz/ 位,因此电位计最高可将驱动频率调节到 62 Hz
Amplitude 变量中。 Frequency Amplitude 变量决定了产生正弦波的
输入参数。Amplitude 的值是有限的,所以在运行
PWM 调制程序过程中将不会发生过调制。

PWM 调制

正弦查找表

使用电子表格计算正弦波数据表的值。表中的数据是 16 位有符号整型格式的,其中 0x7FFF 表示 +0.999 0x8000 表示 -1.0。如果需要可以预先将该数据换算为最 大 PWM 占空比以免去Modulation函数中的一步乘法 运算。
2005 Microchip Technology Inc. DS00984A_CN 9
AN984

系统设置

应用笔记的这一部分将说明如何将电机与 dsPICDEM 电 机控制开发系统相接。以下讨论假定您拥有本文档 “推 荐使用的硬件”部分列出的硬件。

dsPICDEM MC 板设置

需要连接演示板上的 VR1。通过借用 CAN RS-485 端口上 LK8 LK9 上的跳线,将跳线置于仿真头 J6上, 连接 VR1 AN12

如何将 3 相交流感应电机连接到电源模块

注意: 请始终保持电机机座接地以避免触电的危
险。
将三根电源线从电机连接到电源模块右边的 RY B 端。除非需要特定的旋转方向,电源线连接到哪个电源 端没有关系。确保将电机机座的地线连接到电源模块右 侧的接地端。

如何将分相交流感应电机连接到电源模块

一旦确定了每根线的功能,就请为它们贴上 “主” 、
“副”和 “公共”的标签。分相电机被设计为通过电容
与副绕组串联的方式驱动,如图 5 所示。电容为副绕组 电流加入了一个相移,因而可通过单相电压源建立旋转 磁通。电容规格由电机制造商提供。若使用了电容,就 可将电机连接到电源模块,如图 5 所示。如果需要,分 相电机也可以在没有副绕组电容的情况下由电源模块驱 动。此配置的连接详情如图 4 所示。
DS00984A_CN 10 2005 Microchip Technology Inc.
AN984

连接步骤

1. 将交流电源线连接到电源模块左侧的端子。需要
一根一端有交流电源插头而另一端剥开的线缆。 按以下方式连接。确保连接可靠。
- 将绿线 (地线)连接到接地端
- 将白线连接到 N (零线)端
- 将黑线连接到 L (相线)端
注意: 您可能有一根带有绿线、蓝线和棕线的交
流电源线。如果是这样,将绿线连接到接 地端、蓝线连接到 N 端、棕线连接到 L 端。
2. dsPICDEM MC1 演示板插入电源模块。该板
和电源模块使用 37 引脚的 D 型连接器相连。在 该板和电源模块之间不应该使用任何线缆。
3. 为演示板加上 9 V 的直流电源。
4. 现在,为 HV 电源模块插上交流电源线。通过电
源模块顶部的通风孔朝里看, 在 PCB 的右侧靠 近输出端的地方,有一个红色的 LED,表明直流 母线上是否有高压。如果需要改变与该模块的连 接,请断开电源并等待此 LED 熄灭。
5. 编译应用笔记源代码文件 acim_vhz.s,并对
dsPIC 器件进行编程。可以使用 MPLAB ICD 2
在线调试器对该器件编程。将 ICD 2 通信线缆连 接到 dsPICDEM MC1 板左侧的连接器 J4。确 保 在器件编程期间,板上的开关 S2 是置于“ICD” 位置的。
6. 在运行源代码前,确保将 VR1 VR2 调节为最
小设置。

输入电压的注意事项

Frequency变量除以 2,这样做可以将频率范围限制在 31 Hz 以内,从而将电机速度范围缩小一半。在此速度
范围内,电机将产生其对应大小的转矩。
2005 Microchip Technology Inc. DS00984A_CN 11
AN984
试验
试验 1
1. 调节 VR1 25% 50% 之间,将 VF 曲线斜率 设置为相对较低的值。
2. 尝试使用 VR2 改变电机的速度。您可能会注意到 电机速度的改变比较缓慢。
3. 现在,尝试更改 VR1 的值,从而改变电机的速 度。您应该发现当 VF 曲线斜率增大时,电机速 度的变化要快得多。
试验 2
在此试验中,您将观察当频率保持恒定而改变幅值时, 电机转矩如何改变。
1. 通过将 VR2 设置为一个很低的值 (低于 25%) 来起动电机。这样做会将调制频率设置为相对较 低的值,以低速运行电机。
2. 开始时将 VR1 设置为零,然后缓慢地增大设置 值,同时用手握住电机转轴使之停止不动。 应该 感觉到电机的转矩随着 VR1 的增大而增大。
结论
机的矢量控制》
,《使用
DS00908A_CN)。
dsPIC30F
实现交流感应电
DS00984A_CN 12 2005 Microchip Technology Inc.
AN984

源代码清单

软件许可协议
Microchip Technology Incorporated (“公司”)随附提供的软件旨在提供给您 (该公司的客户)使用,且仅限于在该公司制造的产 品上使用。
该软件为公司和 / 或其供应商所有,并受适用的版权法保护。版权所有。任何违反前述限制的使用将使其受到适用法律的刑事制裁, 并且承担违背此许可条款和条件的民事责任。
该软件 “按现状”提供。不提供保证,无论是明示的、暗示的还是法定的保证。这些保证包括 (但不限于)对出于某一特定目的应 用此软件的适销性和适用性默示的保证。在任何情况下,公司都将不会对任何原因造成的特别的、偶然的或间接的损害负责。
;******************************************************************************
; * ; 文件名 : acim_vhz.s
; * ;******************************************************************************
; 注: * ; ====== *
; A/D 用以对 dsPICDEM-MC1 演示板上两个与 AN7 AN12 连接的电位计进行采样。 ; VR1 用来改变调制的 V/Hz 比值。 VR2 用来改变调制频率。 通过用两个电位计进行试验, ; 可以找到一个最佳的 V/Hz 比值来驱动电机。
; * ; * ;******************************************************************************
.equ __30F6010, 1 .include "C:\pic30_tools\support\inc\p30f6010.inc"
.global__reset
;..............................................................................
; 配置位:
;..............................................................................
config __FOSC, CSW_FSCM_OFF & XT_PLL4 ; 关闭时钟切换和
; 故障保护时钟监视并 ; 使用 XT 振荡器和 4 倍频 PLL 作为 ; 系统时钟
config __FWDT, WDT_OFF ; 关闭看门狗定时器
config __FBORPOR, PBOR_ON & BORV_27 & PWRT_16 & MCLR_EN
; 设置欠压复位电压
config __FGS, CODE_PROT_OFF ; 对一般代码段
;..............................................................................
; 近数据存储器 (RAM 的低 8KB)中的未初始化变量
;..............................................................................
; 并将上电延迟定时器设置为 16ms
; 将代码保护设置为关闭
.section .nbss, "b"
; 在每个 PWM 周期将此变量加到 16 位的 ; 正弦波数值表指针。对于 16 KHz PWM 调制,数值 246 将提供
Frequency:.space 2
2005 Microchip Technology Inc. DS00984A_CN 13
;60 Hz 的调制频率
; 此变量用来设置调制幅值并换算 ; 从正弦波数值表获取的值。有效值的范围为 0 32767
AN984
Amplitude:.space 2
; 此变量是正弦波数值表的指针。在每次 PWM 中断时,
Phase: .space 2
;..............................................................................
; 存储在程序空间中的常数
;..............................................................................
SineTable: .hword 0,3212,6393,9512,12539,15446,18204,20787,23170,25329 .hword 27245,28898,30273,31356,32137,32609,32767,32609,32137,31356,30273,28898 .hword 27245,25329,23170,20787,18204,15446,12539,9512,6393,3212,0,-3212,-6393 .hword -9512,-12539,-15446,-18204,-20787,-23170,-25329,-27245,-28898,-30273 .hword -31356,-32137,-32609,-32767,-32609,-32137,-31356,-30273,-28898,-27245 .hword -25329,-23170,-20787,-18204,-15446,-12539,-9512,-6393,-3212
;..............................................................................
; 此应用程序中的常数
;..............................................................................
; 它递增一次,递增数值是 Frequency 变量的值。
.section .sine_table, "x" .align256
; 这是一个含有 64 个值的正弦波表,覆盖了正弦函数的 360 度。 ; 使用 Microsoft Excel 计算这些值并将它们粘贴到此程序中。
; 此常量用来将正弦查找值换算到 PWM 占空比的有效范围内。占空比的范围取决于写入 PTPER 的值。
; 对于此应用程序,我们将设置 PTPER = 230,使占空比介于 0 460 之间。正弦表数据是有符号的,
; 我们用 230 乘以表中数据,然后将乘积加上固定的偏移值从而将查找数据换算为正值
.equ PWM_Scaling, 230
; 正弦波表的指针是 16 位的。把 0x5555 加给 ; 指针将提供 120 度的偏移,而加上 0xAAAA 将提供 240 ; 度的偏移。这些偏移用来获取 PWM 输出的相位 2 和相位 3 的查找值。
.equ Offset_120, 0x5555
;..............................................................................
; 程序存储器中的代码部分
;..............................................................................
.text ; 代码部分的开始 __reset:
MOV #__SP_init, W15 ; 初始化堆栈指针 MOV #__SPLIM_init, W0 ; 初始化堆栈指针限制寄存器
MOV W0, SPLIM
;-----------------------------------------------------------------------------­; 初始化变量
;------------------------------------------------------------------------------
NOP ; 在初始化 SPLIM 之后,加一条 NOP
CALL _wreg_init ; 调用 _wreg_init 子程序
; 可以选用 RCALL 代替 CALL
call Setup ; 调用程序以设置 I/O PWM
clr Frequency clr Amplitude
DS00984A_CN 14  2005 Microchip Technology Inc.
AN984
;-----------------------------------------------------------------------------­; 主循环代码
; 在主循环中查询 PWM 中断标志 ;------------------------------------------------------------------------------
Loop: btss IFS2,#PWMIF ; 查询 PWM 中断标志
bra CheckADC ; 如果置 1,则继续
call Modulation ; 调用正弦波调制程序 bclr IFS2, #PWMIF ; 清零 PWM 中断标志
CheckADC:
btss IFS0,#ADIF bra Loop call ReadADC bra Loop
;-----------------------------------------------------------------------------­; ADC 处理子程序
;-----------------------------------------------------------------------------­ReadADC:
push.d W0 push.d W4
mov ADCBUF0,W0 ; ADC 结果读入 W0 mov ADCBUF1,W1 ; W1
asr W0,#2,W4 ; 右移 2 位以得到 mov W4,Frequency ; 调制频率。
sl W1,#5,W4 ; AN7 AN12 的值左移以得到 sl W0,#5,W5 ; 1.15 格式的小数数据。 mpy W4*W5,A ; 将频率与 V/Hz 的商相乘得到 sac A,W0 ; 调制幅值。将结果存储在 W0 中。 mov #28000,W1 ; 限制调制幅值以避免 cp W1,W0 ; PWM 调制中由死区引起的 bra GE,NoLimit ; 失真。
mov W1,W0
NoLimit:
mov W0,Amplitude pop.d W4
pop.d W0 return ;------------------------------------------------------------------------------
; PWM 正弦波调制子程序 ;------------------------------------------------------------------------------
Modulation:
push.d W0 ; 保存工作寄存器
push.d W2
push.d W4
push.d W6
push.d W8
push.d W10
; 下面的三条指令初始化 TBLPAG 和指针寄存器
; 从而可使用读表操作来访问程序存储器中的正弦波数据。
mov #tblpage(SineTable),W0
mov W0,TBLPAG
2005 Microchip Technology Inc. DS00984A_CN 15
AN984
mov #tbloffset(SineTable),W0
; 下面的指令块装载正弦波调制程序中使用的各种常数和变量。
mov Phase,W1 ; 装载正弦波表指针 mov #Offset_120,W4 ; 这是 120 度偏移的值 mov Amplitude,W6 ; 装载幅值换算系数 mov #PWM_Scaling,W7 ; 装载 PWM 换算值 mov Frequency,W8 ; 装载将在每次中断时与表指针相加的 Frequency 常数。
; 这是指针调节代码。将 Frequency 值加给正弦表指针以使指针在正弦表中前移。 ; 然后,为此指针加上相应的偏移值以得到相位 2 和相位 3 的指针。 ; 注意:如果需要不同的相位偏移,可以在这里使用其他常数值。 ; 加上 0x4000 将得到 90 度偏移,加上 0x8000 ; 提供 180 度偏移。 在此将 0x5555 装入 W4 以提供 120 度偏移。
add W8,W1,W1 ; Frequency 值加给正弦指针 add W1,W4,W2 ; 加上 120 度偏移值以得到相位 2 的指针 add W2,W4,W3 ; 再加上 120 度偏移以得到相位 3 的指针
; 该正弦表有 64 个值,所以将指针右移 ; 以得到一个 6 位的指针值。
lsr W1,#10,W9 ; 将相位 1 的指针右移以得到高 6 sl W9,#1,W9 ; 左移一位转换为字节地址 lsr W2,#10,W10 ; 将相位 2 的指针右移以得到高 6 sl W10,#1,W10 ; 左移一位转换为字节地址 lsr W3,#10,W11 ; 将相位 3 的指针右移以得到高 6 sl W11,#1,W11 ; 左移一位转换为字节地址
; 现在,将每个相位的指针与基表指针相加以获得查找值的绝对表地址。 ; 然后将查找值换算为正确的幅值和在有效的占空比范围之内。 ; 下面的指令块为相位 1 计算占空比。为相位 2 和相位 3 计算占空比的代码与此相同。
add W0,W9,W9 ; 形成相位 1 的表地址 tblrdl [W9],W5 ; 读相位 1 的查找值 mpy W5*W6,A ; 乘以幅值换算系数 sac A,W5 ; 存储经过换算的结果 mpy W5*W7,A ; 乘以 PWM 换算系数 sac A,W8 ; 存储经过换算的结果 add W7,W8,W8 ; 加上 PWM 换算系数以产生 50% 的偏移 mov W8,PDC1 ; PWM 占空比
; 下面的代码块为相位 2 计算占空比。
add W0,W10,W10 ; 形成相位 2 的表地址 tblrdl [W10],W5 ; 读相位 2 的查找值 mpy W5*W6,A ; 乘以幅值换算系数 sac A,W5 ; 存储经过换算的结果 mpy W5*W7,A ; 乘以 PWM 换算系数 sac A,W8 ; 存储经过换算的结果 add W7,W8,W8 ; 加上 PWM 换算系数以产生 50% 的偏移 mov W8,PDC2 ; PWM 占空比
; 下面的代码块为相位 3 计算占空比。
add W0,W11,W11 ; 形成相位 3 的表地址 tblrdl [W11],W5 ; 读相位 3 的查找值
DS00984A_CN 16  2005 Microchip Technology Inc.
AN984
mpy W5*W6,A ; 乘以幅值换算系数
sac A,W5 ; 存储经过换算的结果
mpy W5*W7,A ; 乘以 PWM 换算系数
sac A,W8 ; 存储经过换算的结果
add W7,W8,W8 ; 加上 PWM 换算系数以产生 50% 的偏移
mov W8,PDC3 ; PWM 占空比
; 现在,保存经过调节的正弦波表指针从而能
; 在此代码的下一次迭代中使用它。
mov W1,Phase
pop.d W10 ; 恢复工作寄存器
pop.d W8
pop.d W6
pop.d W4
pop.d W2
pop.d W0
return ; 从子程序返回
;-----------------------------------------------------------------------------­; PWM ADC 的设置代码
;-------------------------------------------------------------------------------------
Setup:
; 在使能 PWM 之前需要做的第一件事是配置 I/O 并复位电源模块。
; 该控制板有一个缓冲 PWM 控制线的驱动器 IC
; RD11 端口上的有效低电平使能该缓冲器。
; 此电源模块有一条与端口 RE9 相连的高电平有效复位线路。
clr PORTD
clr PORTE
mov #0xF7FF,W0 ; 设置 RD11 输出驱动 PWM 缓冲器
mov W0,TRISD ; 使能。
mov #0xFDFF,W0;
mov W0,TRISE ; 设置 RE9 输出复位电源模块
; 现在,通过驱动复位线并保持几个微秒来确保电源模块复位。
bset PORTE,#9
repeat #39
nop
bclr PORTE,#9
; 设置 ADC
mov #0x0404,W0 ; 扫描输入
mov W0,ADCON2 ; 每次中断进行 2 次采样 / 转换
mov #0x0003,W0;
mov W0,ADCON3 ; Tad 2 Tcy
clr ADCHS ;
clr ADPCFG ; 将所有 A/D 引脚设置为模拟模式
clr ADCSSL ;
bset ADCSSL,#7 ; 使能对 AN7 的扫描
bset ADCSSL,#12 ; 使能对 AN12 的扫描
mov #0x8066,W0 ; 使能 A/DPWM 触发和自动采样
mov W0,ADCON1 ;
bclr IFS0,#ADIF ; 清零 A/D 中断标志位
2005 Microchip Technology Inc. DS00984A_CN 17
AN984
; 现在设置 PWM 寄存器
mov #0x0077,W0 ; 互补模式,使能 #1#2 #3 mov W0,PWMCON1 ; 三对 PWM 输出 mov #0x000F,W0 ; 器件运行速度为 7.38 MIPS 时,将产生 2μs 的死区
mov W0,DTCON1 mov #PWM_Scaling, W0 ; 器件运行速度为 7.38 MIPS 时,为 16KHz PWM 设置周期
mov W0,PTPER mov #0x0001,W0 ;
mov W0,SEVTCMP ; ADC 设置为以特殊事件触发启动 mov #0x0F00,W0 ; 将特殊事件后分频比设置为 1:16
mov W0,PWMCON2 ; mov #0x8002,W0 ; 使能 PWM 时基,中心对齐模式
mov W0,PTCON
return ; Setup 子程序返回
;..............................................................................
; 子程序:将 W 寄存器初始化为 0x0000
;..............................................................................
_wreg_init:
CLR W0 MOV W0, W14 REPEAT #12 MOV W0, [++W14] CLR W14 RETURN
;-------- 所有代码部分结束 ---------------------------------------------
.end ; 此文件中程序代码的结尾
DS00984A_CN 18 2005 Microchip Technology Inc.
请注意以下有关 Microchip 器件代码保护功能的要点:
•Microchip的产品均达到 Microchip 数据手册中所述的技术指标。
•Microchip确信:在正常使用的情况下, Microchip 系列产品是当今市场上同类产品中最安全的产品之一。
目前,仍存在着恶意、甚至是非法破坏代码保护功能的行为。就我们所知,所有这些行为都不是以 Microchip 数据手册中规定的操 作规范来使用 Microchip 产品的。这样做的人极可能侵犯了知识产权。
•Microchip愿与那些注重代码完整性的客户合作。
•Microchip或任何其他半导体厂商均无法保证其代码的安全性。代码保护并不意味着我们保证产品是 “牢不可破”的。
代码保护功能处于持续发展中。 Microchip 承诺将不断改进产品的代码保护功能。任何试图破坏 Microchip 代码保护功能的行为均可视 为违反了《数字器件千年版权法案 (Digital Millennium Copyright Act)》。如果这种行为导致他人在未经授权的情况下,能访问您的软
件或其他受版权保护的成果,您有权依据该法案提起诉讼,从而制止这种行为。
提供本文档的中文版本仅为了便于理解。Microchip Technology Inc. 及其分公司和相关公司、各级主管与员工及
事务代理机构对译文中可能存在的任何差错不承担任何责任。 建议参考 Microchip Technology Inc. 的英文原版文档。
本出版物中所述的器件应用信息及其他类似内容仅为您提供便 利,它们可能由更新之信息所替代。确保应用符合技术规范,
是您自身应负的责任。Microchip 对这些信息不作任何明示或 暗示、书面或口头、法定或其他形式的声明或担保,包括但不
限于针对其使用情况、质量、性能、适销性或特定用途的适用 性的声明或担保。 Microchip 对因这些信息及使用这些信息而
引起的后果不承担任何责任。未经 Microchip 书面批准,不得 将 Microchip 的产品用作生命维持系统中的关键组件。在 Microchip 知识产权保护下,不得暗中或以其他方式转让任何
许可证。
商标
Microchip 的名称和徽标组合、 Microchip 徽标、 Accuron dsPIC、 K
EELOQ、 microID、 MPLAB、 PIC、 PICmicro、
PICSTARTPRO MATEPowerSmartrfPIC SmartShunt 均为 Microchip Technology Inc. 在美国和其他国
家或地区的注册商标。
AmpLabFilterLabMigratable MemoryMXDEV MXLABPICMASTERSEEVALSmartSensor The Embedded Control Solutions Company 均为 Microchip Technology Inc. 在美国的注册商标。
Analog-for-the-Digital AgeApplication Maestro dsPICDEMdsPICDEM.netdsPICworksECAN ECONOMONITORFanSenseFlexROMfuzzyLAB In-Circuit Serial Programming、 ICSP、 ICEPIC、 Linear
Active Thermistor、 MPASMMPLIBMPLINKMPSIM PICkitPICDEMPICDEM.netPICLABPICtail
PowerCalPowerInfoPowerMatePowerToolrfLAB rfPICDEMSelect ModeSmart SerialSmartTelTo ta l
Endurance WiperLock 均为 Microchip Technology Inc.在
美国和其他国家或地区的商标。 SQTP Microchip Technology Inc. 在美国的服务标记。
在此提及的所有其他商标均为各持有公司所有。 © 2005, Microchip Technology Inc. 版权所有。
Microchip
州 月通过了 单片机、 存储器和模拟产品方面的质量体系流程均符合 此外,
ISO 9001:2000
位于美国亚利桑那州
Mountain View
ISO/TS-16949:2002 KEELOQ
Microchip
的全球总部、设计中心和晶圆生产厂均于
®
跳码器件、串行
在开发系统的设计和生产方面的质量体系也已通过了
认证。
Chandler和Tem pe
质量体系认证。公司在
EEPROM
及位于加利福尼亚
2003年10
®
PICmicro
、单片机外设、非易失性
ISO/TS-16949:2002
8
2005 Microchip Technology Inc. DS00984A_CN 19
全球销售及服务网点
美洲
公司总部 Corporate Office
2355 West Chandler Blvd. Chandler, AZ 85224-6199 Tel: 1-480-792-7200 Fax: 1-480-792-7277
技术支持:
http://support.microchip.com
网址:www.microchip.com 亚特兰大 Atlanta
Alpharetta, GA Tel: 1-770-640-0034 Fax: 1-770-640-0307
波士顿 Boston
Westborough, MA Tel: 1-774-760-0087 Fax: 1-774-760-0088
芝加哥 Chicago
Itasca, IL Tel: 1-630-285-0071 Fax: 1-630-285-0075
达拉斯 Dallas
Addison, TX Tel: 1-972-818-7423 Fax: 1-972-818-2924
底特律 Detroit
Farmington Hills, MI Tel: 1-248-538-2250 Fax: 1-248-538-2260
科科莫 Kokomo
Kokomo, IN Tel: 1-765-864-8360 Fax: 1-765-864-8387
洛杉矶 Los Angeles
Mission Viejo, CA Tel: 1-949-462-9523 Fax: 1-949-462-9608
圣何塞 San Jose
Mountain View, CA Tel: 1-650-215-1444 Fax: 1-650-961-0286
加拿大多伦多 Tor ont o
Mississauga, Ontario, Canada Tel: 1-905-673-0699 Fax: 1-905-673-6509
亚太地区
中国 - 北京
Tel: 86-10-8528-2100 Fax: 86-10-8528-2104
中国 - 成都
Tel: 86-28-8676-6200 Fax: 86-28-8676-6599
中国 - 福州
Tel: 86-591-8750-3506 Fax: 86-591-8750-3521
中国 - 香港特别行政区
Tel: 852-2401-1200 Fax: 852-2401-3431
中国 - 上海
Tel: 86-21-5407-5533 Fax: 86-21-5407-5066
中国 - 沈阳
Tel: 86-24-2334-2829 Fax: 86-24-2334-2393
中国 - 深圳
Tel: 86-755-8203-2660 Fax: 86-755-8203-1760
中国 - 顺德
Tel: 86-757-2839-5507 Fax: 86-757-2839-5571
中国 - 青岛
Tel: 86-532-8502-7355 Fax: 86-532-8502-7205
中国 - 武汉
Tel: 86-27-5980-5330 Fax: 86-27-5980-5118
台湾地区 - 高雄
Tel: 886-7-536-4818 Fax: 886-7-536-4803
台湾地区 - 台北
Tel: 886-2-2500-6610 Fax: 886-2-2508-0102
台湾地区 - 新竹
Tel: 886-3-572-9526 Fax: 886-3-572-6459
亚太地区
澳大利亚 Australia - Sydney
Tel: 61-2-9868-6733 Fax: 61-2-9868-6755
印度 India - Bangalore
Tel: 91-80-2229-0061 Fax: 91-80-2229-0062
印度 India - New Delhi
Tel: 91-11-5160-8631 Fax: 91-11-5160-8632
日本 Japan - Kanagawa
Tel: 81-45-471- 6166 Fax: 81-45-471-6122
韩国 Korea - Seoul
Tel: 82-2-554-7200 Fax: 82-2-558-5932
82-2-558-5934
马来西亚 Malaysia - Penang
Tel:011-604-646-8870 Fax:011-604-646-5086
菲律宾 Philippines - Manila
Tel: 011-632-634-9065 Fax: 011-632-634-9069
新加坡 Singapore
Tel: 65-6334-8870 Fax: 65-6334-8850
欧洲
奥地利 Austria - Weis
Tel: 43-7242-2244-399 Fax: 43-7242-2244-393
丹麦 Denmark - Ballerup
Tel: 45-4450-2828 Fax: 45-4485-2829
法国 France - Massy
Tel: 33-1-69-53-63-20 Fax: 33-1-69-30-90-79
德国 Germany - Ismaning
Tel: 49-89-627-144-0 Fax: 49-89-627-144-44
意大利 Italy - Milan
Tel: 39-0331-742611 Fax: 39-0331-466781
荷兰 Netherlands - Drunen
Tel: 31-416-690399 Fax: 31-416-690340
英国 England - Berkshire
Tel: 44-118-921-5869 Fax: 44-118-921-5820
06/08/05
DS00984A_CN 20  2005 Microchip Technology Inc.
Loading...