智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 5077|回复: 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;//清中断标志位
}

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
269
贡献
33
兑换币
2
注册时间
2011-8-30
在线时间
35 小时
2#
 楼主| 发表于 2012-3-5 22:55:30 | 只看该作者
嗯,大家给力哈
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
269
贡献
33
兑换币
2
注册时间
2011-8-30
在线时间
35 小时
3#
 楼主| 发表于 2012-3-6 09:01:44 | 只看该作者
大家给激光送180k的信号是用调制管还是PWM啊,我看好多人的比赛程序,在他们PWM初始化是没看到用那个口生成180k啊,难道都是用调制管啊?我相信还是有很多人用单片机调制的,能不能附上你们分时点亮的程序啊
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
372
QQ
威望
269
贡献
33
兑换币
2
注册时间
2011-8-30
在线时间
35 小时
4#
 楼主| 发表于 2012-3-6 11:57:37 | 只看该作者
自己顶啊
回复 支持 反对

使用道具 举报

1

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1042
QQ
威望
580
贡献
202
兑换币
16
注册时间
2011-10-21
在线时间
130 小时
5#
发表于 2012-3-14 14:09:19 | 只看该作者
同求。同问。顶。
回复 支持 反对

使用道具 举报

1

主题

57

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1042
QQ
威望
580
贡献
202
兑换币
16
注册时间
2011-10-21
在线时间
130 小时
6#
发表于 2012-3-14 14:09:38 | 只看该作者
+顶
回复 支持 反对

使用道具 举报

8

主题

98

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1722
威望
886
贡献
566
兑换币
153
注册时间
2012-3-12
在线时间
135 小时
7#
发表于 2012-3-14 22:23:16 | 只看该作者
你加个延时试试~?
回复 支持 反对

使用道具 举报

0

主题

21

帖子

0

精华

高级会员

Rank: 4

积分
592
威望
395
贡献
107
兑换币
47
注册时间
2011-7-28
在线时间
45 小时
8#
发表于 2012-3-19 10:09:26 | 只看该作者
你的接收激光的程序是什么?
回复 支持 反对

使用道具 举报

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...这个不是间隔点亮,而是点亮一个不灭,接着点亮下一个...
回复 支持 反对

使用道具 举报

3

主题

8

帖子

0

精华

中级会员

Rank: 3Rank: 3

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

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-10-2 23:27 , Processed in 0.064959 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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