智能车制作

标题: 关于复位问题 [打印本页]

作者: jiren    时间: 2008-5-1 19:04
标题: 关于复位问题
我刚把程序写到芯片的时候调试是正确的,但当我重新启动开关后(开关启动后整个系统供电,关掉后整个系统没有供电),我写到芯片里的程序不能执行,这是为什么呢?谢谢了
作者: auto    时间: 2008-5-1 20:04
标题: Re:关于复位问题
你写个小的LED程序测试一下,试试,有可能是程序的问题,还有就是程序是否超出了芯片允许的范围,如PLL等!
作者: jiren    时间: 2008-5-2 05:13
标题: Re:关于复位问题
康桥人,谢谢你了,我试试。去过你的博客,还看了挺多你给别人解答的问题。大家都很感谢你的哦!!
作者: jiren    时间: 2008-5-2 06:25
标题: 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>
作者: auto    时间: 2008-5-3 07:08
标题: Re:关于复位问题
你至少得PROJECT传上来的,




欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2