智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5073|回复: 16
打印 上一主题 下一主题

关于激光分时发射的疑惑。。。。

  [复制链接]

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
269
贡献
33
兑换币
2
注册时间
2011-8-30
在线时间
35 小时
跳转到指定楼层
1#
发表于 2012-3-5 22:54:13 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
我用138分时选通,用P2口输出180kHZ的信号。 然后用PIT定时0.3ms让6个激光头循环点亮,问题出现了:如果只点亮1个或挨着的2个激光头,接受管可以接收到,后面的指示灯也适时熄灭。但是如果分时点亮超过2个,接受管就接受不到信号了,郁闷啊,这个问题想了一下午,头都大了,初次做这个知识有限,还望大家多多提提想法,看看怎么回事这是?我想它P2给的180kHZ信号不停的给着,而导通信号控制导通,又不会影响180kHZ 的频率,接受管怎么就接受不到呢???

附上调试的程序,大家多讨论哈

#include <hidef.h>      /* common defines and macros */
#include <mc9s12xs128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12xs128"
     
#define uchar unsigned char
#define uint unsigned int
#define PITTIME  60//设定为0.3MS定时
void pllclk(void)//Busclock=32MHz
{
       CLKSEL=0X00;  //CLKSEL第七位置零,即选择时钟源为外部晶振OSCCLK
       PLLCTL=0xe1;   //禁止锁相环PLL,即PLLCTL_PLLON=0
       SYNR=3;//PLLCLK =2*OSCCLK*(SYNR + 1)/(REFDV + 1)
       REFDV=1;
       PLLCTL=0X60;  //打开PLL电路,即PLLCTL_PLLON=1
       asm  NOP;
       asm  NOP;
       asm  NOP;
       while((CRGFLG&0X08)==0);//时钟校正同步
       CLKSEL=0X80;   //允许锁相环时钟源PLL为系统提供时钟,即CLKSEL_PLLSEL=1
}
void initPIT(void)//定时中断初始化函数 50MS定时中断设置
{
    PITCFLMT_PITE=0; //使PIT使能关断
    PITCE_PCE0=1;//定时器通道0使能
    PITMTLD0=160-1;//8位定时器初值设定。160分频,在32MHzBusClock下,为0.2MHz。即5us.
    PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.005MS
    PITINTE_PINTE0=1;//定时器中断通道0中断使能
    PITCFLMT_PITE=1;//定时器通道0使能
}
void PWM_Init(void)
{
   PWME_PWME2=0;   //关闭7通道
   
   PWMPRCLK=0X20;   //对总线时钟进行与分频,总线为32M,分频后为8M
   
   PWMCLK_PCLK2=0;  //设B为其时钟源
   
   PWMPOL_PPOL2=1; //上升沿反转
  
   PWMCAE_CAE2=0;   //左对齐输出
   
   PWMDTY2=0x0b;  //占空比为25%
   
   PWMPER2=0X29;   //输出180KHZ的波   0x2c
   
   PWME_PWME2=1;  //7通道使能
}
void IIOO_Init(void)
{
    DDRA=0XFF;
    PORTA=0Xff;
}
//********************主函数*****************************//
void main(void)
{
   DisableInterrupts;
   pllclk();
    PWM_Init();
    initPIT();
    IIOO_Init();
     
     EnableInterrupts;
    while(1)
    {
     ;
  
    }
}   

//**************************定时中断****************************//
#pragma CODE_SEG __NEAR_SEG NON_BANKED
void interrupt 66 PIT0(void)
{
    static unsigned int count1;
   
  //  PORTA=count1;
    count1++;
   
   if(count1%6==0)
    PORTA=0X00;
   if(count1%6==1)
    PORTA=0X01;         //如果只点亮这2个激光,接受管可以接受到啊,再多就接受不到了
/*  if(count1%6==2)
    PORTA=0X02;     
   if(count1%6==3)
    PORTA=0X03;           
     if(count1%6==4)
    PORTA=0X04;
     if(count1%6==5)
    PORTA=0X05;        */
      
    if(count1==1000)
    count1=0;
     PITTF_PTF0=1;//清中断标志位
}

0

主题

2

帖子

0

精华

注册会员

Rank: 2

积分
38
威望
30
贡献
6
兑换币
7
注册时间
2013-4-25
在线时间
1 小时
毕业学校
内蒙古大学
17#
发表于 2013-8-26 21:50:33 | 只看该作者
能不能参考一下你的分时点亮的程序,我是新手,谢谢
回复 支持 反对

使用道具 举报

3

主题

93

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2644
威望
2024
贡献
466
兑换币
0
注册时间
2012-2-17
在线时间
77 小时
16#
发表于 2012-6-20 16:15:11 | 只看该作者
亦友寒 发表于 2012-6-2 16:29
采集的结果怎么看啊???

用串口读回数据啦!!
回复 支持 反对

使用道具 举报

0

主题

14

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
409
威望
248
贡献
85
兑换币
0
注册时间
2012-3-1
在线时间
38 小时
毕业学校
长春工程学院
15#
发表于 2012-6-5 20:30:09 | 只看该作者
头好大……
回复 支持 反对

使用道具 举报

7

主题

67

帖子

0

精华

高级会员

Rank: 4

积分
534
威望
319
贡献
117
兑换币
0
注册时间
2012-3-13
在线时间
49 小时
毕业学校
长沙理工小学
14#
发表于 2012-6-2 16:29:32 | 只看该作者
采集的结果怎么看啊???
回复 支持 反对

使用道具 举报

15

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
威望
436
贡献
1080
兑换币
30
注册时间
2012-3-3
在线时间
46 小时
13#
发表于 2012-3-22 20:29:37 | 只看该作者
唉。。。。
回复 支持 反对

使用道具 举报

15

主题

111

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1608
威望
436
贡献
1080
兑换币
30
注册时间
2012-3-3
在线时间
46 小时
12#
发表于 2012-3-22 20:28:41 | 只看该作者
不能帮助你啊。。
回复 支持 反对

使用道具 举报

165

主题

4119

帖子

2

精华

杰出人士

老司机【呆萌侠】

Rank: 12Rank: 12Rank: 12

积分
16871

活跃会员奖章优秀会员奖章推广达人奖章热心会员奖章论坛元老奖章论坛骨干奖章在线王奖章资源大师奖章

QQ
威望
9731
贡献
4558
兑换币
1629
注册时间
2011-7-23
在线时间
1291 小时
毕业学校
工大
11#
发表于 2012-3-21 15:54:46 | 只看该作者
飞飞小神猪219 发表于 2012-3-20 00:32
呵呵,好长时间没上网了,现在问题解决了。其实,激光高速点亮的时候,后面的指示灯就不管用了,我感觉指示 ...

是的啊= =,
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
269
贡献
33
兑换币
2
注册时间
2011-8-30
在线时间
35 小时
10#
 楼主| 发表于 2012-3-20 00:32:55 | 只看该作者
呵呵,好长时间没上网了,现在问题解决了。其实,激光高速点亮的时候,后面的指示灯就不管用了,我感觉指示灯只在调试的时候有用。采集的 时候不用管后面的指示灯,只看采集的结果就可以。
回复 支持 反对

使用道具 举报

0

主题

50

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
398
威望
292
贡献
64
兑换币
0
注册时间
2012-1-11
在线时间
21 小时
9#
发表于 2012-3-19 12:49:38 | 只看该作者
用的是K60分时,X128不熟没仔细看,但感觉PORTA那块儿,0x00-0x01-0x02...这个不是间隔点亮,而是点亮一个不灭,接着点亮下一个...
回复 支持 反对

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-2 21:24 , Processed in 0.061550 second(s), 34 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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