调试如下各个模块光电管AD转换舵机占空比PWM驱动电机霍尔元件测速Word文档格式.docx
- 文档编号:18438325
- 上传时间:2022-12-16
- 格式:DOCX
- 页数:18
- 大小:24.29KB
调试如下各个模块光电管AD转换舵机占空比PWM驱动电机霍尔元件测速Word文档格式.docx
《调试如下各个模块光电管AD转换舵机占空比PWM驱动电机霍尔元件测速Word文档格式.docx》由会员分享,可在线阅读,更多相关《调试如下各个模块光电管AD转换舵机占空比PWM驱动电机霍尔元件测速Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
}
0x7ff;
;
busclk:
24MHz--1ms
for(j="
j<
j++);
>
=12500)
15.
PORTB=0X00;
k=1;
Delay(1000);
16.
17.
if(PWMDTY23<
=5500)
18.
k=0;
19.
20.
21.}
22.
23.
24.//-------------------------------------------------
25.void
TimerOverflow(void)
26.{
27.
char
i=1,j=0x80;
28.
while((i!
=0)&
&
(j!
=0))
29.
30.
PORTB=~(i|j);
=1;
31.
j>
32.
33.
Pwmduoji();
34.
35.
36.}
37.
38.
39.//
i=PWMDTY2;
40.//
j;
41.//
j=i%100;
42.//
switch(j)
43.
//
case
0:
{PORTB=0X1F;
Delay(2000);
break;
44.
1:
PORTB=0X0FE;
45.
2:
PORTB=0X0FD;
46.
3:
PORTB=0X0FB;
47.
4:
PORTB=0X0F7;
48.
5:
PORTB=0X0EF;
49.
6:
PORTB=0X0DF;
50.
7:
PORTB=0X0BF;
51.
8:
PORTB=0X7F;
52.
9:
PORTB=0X3F;
53.
54.
55.
56.
57.
58.//-----------------------------------------------------
59.void
setbusclock(void)
60.{
61.
CLKSEL=0X00;
//disengage
PLL
to
system
62.
PLLCTL_PLLON=1;
//turn
on
63.
SYNR=2;
64.
REFDV=1;
//pllclock=2*osc*(1+SYNR)/(1+REFDV)=48MHz;
65.
_asm(nop);
//BUS
CLOCK=24M
66.
67.
while(!
(CRGFLG_LOCK==1));
//when
pll
is
steady
then
use
it;
68.
CLKSEL_PLLSEL
//engage
system;
69.}
70.//-----------------------------------------------------
71.
72.
73.
74.
75.void
Timerch0Init(void)
76.{
77.
TSCR2_PR
=0x04;
//prescale
factor
16,
bus
clock/16=24Mhz/16=1500000
78.
TIOS
=0x01;
//0
channel
output
compare
79.
TC0
=0x3A98;
//channel
0
holding
register
0x3A98*(1/1500000)=10ms
80.
TCTL2
=0x02;
//output
low
level
81.
TSCR1_TFFCA=1;
if
set,
TFLG1
can
be
cleared
auto,
manual
clear
useless
82.
TIE=0x81;
//Timer0
Interrupt
enable
83.
TSCR1_TEN
=
1;
//Timer
84.
85.
//TCTL3
0X80;
//IOC7
下降沿捕捉脉冲
edg7a
deg7b
86.
PACTL
0x40;
使能
0事件
0下降沿
16位累加器IOC7
87.
PACNT
0X0000;
88.}
89.
90.//-----------------------------------------------------
91.//-----------------------------------------------------
92.
93.void
Pwminitial(void)
94.{
95.
PWME=0X00;
96.
PWMPOL=0X0B;
//通道0,1,3输出波形开始极性为1
waveform
which
high
first
then
when
the
duty
counter
reached
97.
PWMCAE=0x00;
//左对齐输出模式
left
align
98.
PWMCLK=0X0B;
//PWM时钟源为SA,SB
SAClock
SA
clock
source
for
PWM
PWMPRCLK=0X14;
//时钟A
16分频
Clock
A
24MHz/16=1.5MHz
99.
//时钟B
2分频
B
12MHz
100.
PWMSCLA=250;
//时钟SA为1.5MHz/250/2
1.5MHz/250/2=3KHz
101.
PWMSCLB=1;
//时钟SB为12MHz/1/2
SB
12MHz/1/2=6MHz
102.
103.
PWMCTL=0X20;
104.
PWMPER0=3;
//设定输出周期=通道时钟周期3KHz/3=1khz
105.
PWMPER1=30;
//设定输出周期=通道时钟周期3KHz/30=100hz
106.
PWMPER23=60000;
//设定输出周期=通道时钟周期6MHz/60000=100Hz
107.
108.
PWMDTY0=1;
//占空比初始为0
Duty
50%,and
waveform'
s
frequent
16
109.
PWMDTY1=16;
110.
PWMDTY23=9000;
111.
112.
PWME=0X0B;
//通道0,1,3使能
pwm
113.
114.}
115.
116.void
ADCInit()
117.{
118.
ATD0CTL1=0x0F;
//8位精度
119.
ATD0CTL2=0x40;
//快速清零//AD模块上电,
快速清零,
无等待模式,
禁止外部触发,
中断禁止
120.
ATD0CTL3=0xA0;
//右对齐
NO
FIFO,FREEZE继续//
每个序列4次转换,
No
FIFO,
Freeze模式下继续转换
121.
ATD0CTL4=0x07;
//4周期
8位精度,
2个时钟,
ATDClock=[BusClock*0.5]/[PRS+1]
PRS=7,
divider=8
122.
ATD0CTL5=0x20;
//连续,单通道//右对齐无符号,单通道采样,通道0
123.
ATD0DIEN=0x00;
禁止数字输入
124.}
125.
126.
127.void
main(void)
128.{
129.DisableInterrupts;
130.
131.setbusclock();
132.Timerch0Init();
133.Pwminitial();
134.ADCInit();
135.DDRB=0XFF;
136.PORTB=0X0F0;
137.
138.//---------------------------------------------------
139.
140.for(;
)
141.
142.
EnableInterrupts;
143.
//while(!
ATD0STAT2_CCF0);
//等待转换结束
144.
//PORTB
(byte)ATD0DR0;
//在B口显示转换值
145.
//TimerOverflow();
146.
wait
forever
147.
please
make
sure
that
you
never
leave
this
function
148.}
149.
150.
151.//----------------------interrupt------------------------------
152.
153.#pragma
CODE_SEG
NON_BANKED
154.
155.//#pragma
__NEAR_SEG
156.interrupt
8
timerch0(void)
//10ms
157.{
158.
number_count=0;
159.
160.
DisableInterrupts;
161.
m=TCNT;
162.
TC0=m+0x3A98;
163.
PORTB
^=0xff
164.
165.
166.
167.
number_count
++;
168.
169.
if(
number_count==TIME_INTER)
//1秒取一次
170.
171.
172.
Get_pulse
PACNT;
173.
174.
175.
176.
177.}
龙丘MC9S12XS128多功能开发板DesignedbyChiuSirE-mail:
chiusir@软件版本:
V1.1最后更新:
2009年2月28日相关信息参考下列地址:
博客:
http:
//longqiu.21ic.org淘宝店:
------------------------------------CodeWarrior4.7Target:
MC9S12XS128Crystal:
16.000Mhzbusclock:
16.000MHzpllclock:
32.000MHz演示程序使用说明:
1.实时时钟的演示:
2.毫秒级计时输出;
3.串口输出速率:
9600bps.4.中断的使用-LongQiucomprehensivedevelopmentplatformforintelligentvehiclesV3.0DesignedbyLongQiuE-mail:
chiusir@Softwareversion:
V1.2LastUpdate:
April21,2009Informationrefertothefollowingaddress:
Blog:
//longqiu.21ic.orgTaobao:
------------------------------------CodeWarrior5.0Target:
16.000Mhz============================================Thisprocedureincludesthefollowingfeatures:
1.SetthesystemclockintheunderxxMHZbusclock2.TestingLongHillminimumsystemdevelopmentboardoverclockingperformance:
IftheLEDflashesonthenormalworkofthechipOtherwise,thatchipisnotworkingcorrectly,pleasecheckthesystemdesign3.QinghuaUniversitycanalsotesttheoverclockingboardminimumsystemperformance,LEDcount,accordingtolightcyclesystemcanreadhowmanytimes
1.**************************************************************************************
2.龙丘MC9S12XS128
多功能开发板
3.Designed
by
Chiu
Sir
4.E-mail:
chiusir@
5.软件版本:
V1.1
6.最后更新:
2009年2月28日
7.相关信息参考下列地址:
8.博客:
http:
//longqiu.21ic.org
9.淘宝店:
10.------------------------------------
11.Code
Warrior
4.7
12.Target
:
MC9S12XS128
13.Crystal:
16.000Mhz
14.busclock:
16.000MHz
15.pllclock:
32.000MHz
17.演示程序使用说明:
18.1.实时时钟的演示:
19.2.毫秒级计时输出;
20.3.串口输出速率:
9600bps.
21.4.中断的使用。
22.*****************************************************************************************/
24.#include
25.#include
26.#include
STDIO.H>
27.#pragma
29.volatile
dword
u32_time_cnt=0;
31.//====================中断函数==================================
33.#pragma
34.void
interrupt
7
RTI_ISR(void)
32.75ms
timer
overflow
++u32_time_cnt;
36.
PORTB_PB2=~PORTB_PB2;
CRGFLG|=0X80;
//Write
1
RTIF
bit
38.}
39.
40.
函
数
名:
DLY_ms(word
x)
功能描述:
毫秒级延时
43.void
DLY_ms(int
ms)
//x取值1~255;
44.{
ii,jj;
(ms<
1)
ms=1;
for(ii=0;
ii<
MS;
II++)
8x2^16="
RTICTL="
0x77;
RTI_Init(void)
frequency
RTI
of
setup
char)ch[ptr++]);
uart_putchar((unsigned
while(ch[ptr]){
ptr="
ch[])
putstr(char
SCI0DRL="
0x0d;
empty
not
waiting
keep
(SCI0SR1&
0x80))
return;
output?
CR?
?
\n?
(ch="
="
ch)
uart_putchar(unsigned
9600bps,SCI0BDL="
0x68"
16MHz,
busclk
SCI0BDL="
0x68;
8MHz,19200bps,SCI0BDL="
0x1a"
SCI0BDH="
0x00;
enable,Tx
Interrupt,RX
Full
Receive
SCI0CR2="
0x2c;
SCI_Init(void)
-----------------------------------------------------
off
LEDs
PORTB="
0xff;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 调试 如下 各个 模块 光电管 AD 转换 舵机 PWM 驱动 电机 霍尔 元件 测速