智能车制作
标题:
关于复位问题
[打印本页]
作者:
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 <hidef.h> /* common defines and macros */<BR>#include <mc9s12dg128.h> /* derivative information */<BR>#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"</P><P> </P><P>void Init(void);<BR>void Init_INT_Timer(void); /* INT_Timer0 initiate */ <BR>void Init_PWMout(void); /* initiate PWM output */ <BR>int PWMout(unsigned int signal); /* output PWM */ <BR>void CarMain(void); /* SmartCar main function */ </P><P><BR>void main(void)<BR>{<BR>Init(); /*初始化*/<BR>DDRA = 0xff; /*应该有改进 要求发光光频闪*/<BR>DDRB = 0x01; <BR>PORTA = 0xff;<BR>DDRH=0x00; <BR>CarMain(); <BR>EnableInterrupts; <BR>}</P><P> </P><P>void Init(void) <BR>{<BR> CLKSEL=0x00; //时钟选择寄存器 关闭锁相环 <BR> PLLCTL=0xE1; //PLL控制寄存器 <BR> REFDV=3;<BR> SYNR=7; //bus clock=16MHz*(SYNR+1)/(REFDV+1)=32MHz<BR> while(0==CRGFLG_LOCK); //等待锁相环时钟达到预期值<BR> CLKSEL=0x80; //开启锁相环<BR> FCLKDIV=0x49;<BR> ECLKDIV=0x49; //FLASH&EEPROM工作频率<BR> Init_PWMout(); // PWM初始化函数<BR> Init_INT_Timer(); //输入捕捉函数</P><P>}</P><P>void Init_PWMout(void)<BR>{<BR> PWME=0x00; // 关闭PWM<BR> PWMCTL_CON01=1; // 将PEM1与PWM2连为一个16位PWM<BR> PWMPRCLK=0x34; // 设定时钟A频率为2MHz时钟B频率为4MHz<BR> PWMSCLA=100; // 时钟SA=10KHz<BR> PWMSCLB=1; // 时钟SB=2MHz<BR> PWMCLK=0x0C; // PWM0与PWM1选择时钟A,PWM2与PWM3选择时钟SB<BR> PWMPOL=0xFF; // 所有PWM选择高级性方式开始工作<BR> PWMCAE=0x00; // 所有PWM选择左对齐方式工作<BR> PWMPER0=0x9C;<BR> PWMPER1=0x40; // 0x9C40 = 40000, 设置PWM1的周期为0.02s=20ms<BR> PWME_PWME1=1; // 开启PWM01<BR> PWMPER2=100;<BR> PWMPER3=100; // 设置电机驱动的频率为10KHz <BR> PWMDTY2=50;<BR> PWMDTY3=50; // 设置电机驱动输出信号占控比为50%<BR> PWME_PWME2=1;<BR> PWME_PWME3=1; //开启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<8;i++) <BR>{ <BR>SignalBit<i> = signal & 0xFE; <BR>if(SignalBit<i>==0xFE) <BR>{<BR>b=i;<BR>break;<BR>}<BR>signal >>= 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> //左3光电管 舵机1.20<BR>if(b==1) {PWMDTY0=0x0F;PWMDTY1=0xAA;} //右4光电管 舵机1.95<BR> //左4光电管 舵机1.05</P><P>for(i=0;i<8;i++) <BR>{ <BR>SignalBit<i> = signal & 0xFE; <BR>a += SignalBit<i>; <BR>signal >>= 1;<BR>}<BR>return(a);<BR>}</P><P> </P><P>void CarMain(void)<BR>{<BR>int i=0,a=0;<BR>static unsigned char signal; </P><P>signal=PORTA;<BR>for(;i>=4;) <BR>{<BR>i==PWMout(signal);<BR>}<BR>PWMDTY1=0x00;<BR>}</P><P>先谢谢了!!</P><P> </P>
作者:
auto
时间:
2008-5-3 07:08
标题:
Re:关于复位问题
你至少得PROJECT传上来的,
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2