智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 2447|回复: 4
打印 上一主题 下一主题

关于复位问题

[复制链接]

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
127
威望
175
贡献
22
兑换币
0
注册时间
2008-5-1
在线时间
0 小时
跳转到指定楼层
1#
发表于 2008-5-1 19:04:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我刚把程序写到芯片的时候调试是正确的,但当我重新启动开关后(开关启动后整个系统供电,关掉后整个系统没有供电),我写到芯片里的程序不能执行,这是为什么呢?谢谢了

0

主题

248

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2327
威望
2305
贡献
22
兑换币
0
注册时间
2008-1-6
在线时间
0 小时
2#
发表于 2008-5-1 20:04:47 | 只看该作者

Re:关于复位问题

你写个小的LED程序测试一下,试试,有可能是程序的问题,还有就是程序是否超出了芯片允许的范围,如PLL等!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
127
威望
175
贡献
22
兑换币
0
注册时间
2008-5-1
在线时间
0 小时
3#
 楼主| 发表于 2008-5-2 05:13:14 | 只看该作者

Re:关于复位问题

康桥人,谢谢你了,我试试。去过你的博客,还看了挺多你给别人解答的问题。大家都很感谢你的哦!!
回复 支持 反对

使用道具 举报

0

主题

3

帖子

0

精华

注册会员

Rank: 2

积分
127
威望
175
贡献
22
兑换币
0
注册时间
2008-5-1
在线时间
0 小时
4#
 楼主| 发表于 2008-5-2 06:25:58 | 只看该作者

Re:关于复位问题

<>我试过了。我用的是秘书处提供的套件DG128,上边就有一排B端口控制的小灯。我遍了个程序测试,再次打开开关是可以运行程序的。检查了程序也没检查出哪里设置超出芯片允许范围的。我的程序如下(只是一个让舵机跟随黑线转的调试程序:</P><P>#include &lt;hidef.h&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* common defines and macros */<BR>#include &lt;mc9s12dg128.h&gt;&nbsp;&nbsp;&nbsp;&nbsp; /* derivative information */<BR>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"</P><P>&nbsp;</P><P>void Init(void);<BR>void Init_INT_Timer(void);&nbsp;&nbsp;&nbsp;&nbsp; /* INT_Timer0 initiate */ <BR>void Init_PWMout(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* initiate PWM output */ <BR>int PWMout(unsigned int signal);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* output PWM */ <BR>void CarMain(void);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /* SmartCar main function */ </P><P><BR>void main(void)<BR>{<BR>Init();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*初始化*/<BR>DDRA = 0xff;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; /*应该有改进 要求发光光频闪*/<BR>DDRB = 0x01;&nbsp; <BR>PORTA = 0xff;<BR>DDRH=0x00; <BR>CarMain(); <BR>EnableInterrupts; <BR>}</P><P>&nbsp;</P><P>void Init(void) <BR>{<BR>&nbsp;&nbsp; CLKSEL=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //时钟选择寄存器 关闭锁相环&nbsp;&nbsp;<BR>&nbsp;&nbsp; PLLCTL=0xE1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //PLL控制寄存器&nbsp;&nbsp;&nbsp;&nbsp; <BR>&nbsp;&nbsp; REFDV=3;<BR>&nbsp;&nbsp; SYNR=7;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //bus clock=16MHz*(SYNR+1)/(REFDV+1)=32MHz<BR>&nbsp;&nbsp; while(0==CRGFLG_LOCK); //等待锁相环时钟达到预期值<BR>&nbsp;&nbsp; CLKSEL=0x80;&nbsp;&nbsp;&nbsp; //开启锁相环<BR>&nbsp;&nbsp; FCLKDIV=0x49;<BR>&nbsp;&nbsp; ECLKDIV=0x49;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //FLASH&amp;EEPROM工作频率<BR>&nbsp;&nbsp; Init_PWMout();&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // PWM初始化函数<BR>&nbsp;&nbsp; Init_INT_Timer();&nbsp;&nbsp;&nbsp;&nbsp; //输入捕捉函数</P><P>}</P><P>void Init_PWMout(void)<BR>{<BR>&nbsp;&nbsp; PWME=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 关闭PWM<BR>&nbsp;&nbsp; PWMCTL_CON01=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 将PEM1与PWM2连为一个16位PWM<BR>&nbsp;&nbsp; PWMPRCLK=0x34;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 设定时钟A频率为2MHz时钟B频率为4MHz<BR>&nbsp;&nbsp; PWMSCLA=100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 时钟SA=10KHz<BR>&nbsp;&nbsp; PWMSCLB=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 时钟SB=2MHz<BR>&nbsp;&nbsp; PWMCLK=0x0C;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // PWM0与PWM1选择时钟A,PWM2与PWM3选择时钟SB<BR>&nbsp;&nbsp; PWMPOL=0xFF;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 所有PWM选择高级性方式开始工作<BR>&nbsp;&nbsp; PWMCAE=0x00;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 所有PWM选择左对齐方式工作<BR>&nbsp;&nbsp; PWMPER0=0x9C;<BR>&nbsp;&nbsp; PWMPER1=0x40;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 0x9C40 = 40000, 设置PWM1的周期为0.02s=20ms<BR>&nbsp;&nbsp; PWME_PWME1=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 开启PWM01<BR>&nbsp;&nbsp; PWMPER2=100;<BR>&nbsp;&nbsp; PWMPER3=100;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 设置电机驱动的频率为10KHz <BR>&nbsp;&nbsp; PWMDTY2=50;<BR>&nbsp;&nbsp; PWMDTY3=50;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // 设置电机驱动输出信号占控比为50%<BR>&nbsp;&nbsp; PWME_PWME2=1;<BR>&nbsp;&nbsp; PWME_PWME3=1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //开启PWM2与PWM3 <BR>}</P><P>void Init_INT_Timer(void) <BR>{ <BR>TSCR2 =0x07; /* 128Hz at 16M bus clok */ <BR>/* 128Hz * 2/3 at 24m bus clock */ <BR>/* in fact it is a little more than it. */ <BR>TIOS |=0x01; /* I/O select */ <BR>TIE |=0x01; /* Interrupt Enable */ <BR>TSCR1|=0x80; /* TSCR1_TEN=1 //Timer Enable */ <BR>} </P><P>int PWMout(unsigned int signal)<BR>{<BR>int i,a,b;<BR>unsigned char SignalBit[8]; <BR>for(i=0;i&lt;8;i++) <BR>{ <BR>SignalBit<i> = signal &amp; 0xFE; <BR>if(SignalBit<i>==0xFE) <BR>{<BR>b=i;<BR>break;<BR>}<BR>signal &gt;&gt;= 1;<BR>}</P><P>if(b==5) {PWMDTY0=0x0B;PWMDTY1=0xB8;} //中央光电管 舵机1.50<BR>if(b==4) {PWMDTY0=0x0C;PWMDTY1=0x1C;} //右1光电管 舵机1.55<BR>if(b==6) {PWMDTY0=0x0B;PWMDTY1=0x54;} //左1光电管 舵机1.45<BR>if(b==3) {PWMDTY0=0x0C;PWMDTY1=0xE4;} //右2光电管 舵机1.65<BR>if(b==7) {PWMDTY0=0x0A;PWMDTY1=0x8C;} //左2光电管 舵机1.35<BR>if(b==2) {PWMDTY0=0x0E;PWMDTY1=0x10;} //右3光电管 舵机1.80<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //左3光电管 舵机1.20<BR>if(b==1) {PWMDTY0=0x0F;PWMDTY1=0xAA;} //右4光电管 舵机1.95<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; //左4光电管 舵机1.05</P><P>for(i=0;i&lt;8;i++) <BR>{ <BR>SignalBit<i> = signal &amp; 0xFE; <BR>a += SignalBit<i>; <BR>signal &gt;&gt;= 1;<BR>}<BR>return(a);<BR>}</P><P>&nbsp;</P><P>void CarMain(void)<BR>{<BR>int i=0,a=0;<BR>static unsigned char signal; </P><P>signal=PORTA;<BR>for(;i&gt;=4;) <BR>{<BR>i==PWMout(signal);<BR>}<BR>PWMDTY1=0x00;<BR>}</P><P>先谢谢了!!</P><P>&nbsp;</P>
回复 支持 反对

使用道具 举报

0

主题

248

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2327
威望
2305
贡献
22
兑换币
0
注册时间
2008-1-6
在线时间
0 小时
5#
发表于 2008-5-3 07:08:00 | 只看该作者

Re:关于复位问题

你至少得PROJECT传上来的,
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-27 23:27 , Processed in 0.426127 second(s), 35 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表