想法2 电调程序问题十分严重...

  运转的程序总算是写出来了.几个月的时间过去了.

  问题肯定是有的.通常也不容易找到原因.

  这次他的问题表现在:不能运转.我的意思就是完全不能动.

  仿真了一下.发现程序一直在 模拟比较器A 那里跑来跑去.

 

 void PhaseA_ACD_INIT()
{
  cli();
  SFIOR |= (1<<ACME);                 //打开多工输入
  ACSR = 0B00001010;                   //打开ACD中断 比较器下降沿产生中断
  ADCSRA &= ~(1<<ADEN);               //关闭ADC
  ADMUX = 0B00000001;                  //MUX2:0 = 001 ADC1作输入
  DDRA &= ~(1<<PA0);                  //定义对应管脚为输入
  //DDRB &= ~(1<<PB2);
  NONCE_PHASE = 1;
  sei();
}
//

 

  本来原文中, ADMUX = 0B00000001;  是定义为 MUX2:0=000 后来改成了001,为什么呢?

  如果是000的话,那么在定义 PhaseA 的模拟比较器的时候,只打开了 PhaseA 的模拟比较器端口,但是,当A比较完毕的时候,我们应当进入B比较才是..所以后面改成了 001 .意思就是从 PhaseB 端比较.

 

  但是问题又来了..

 

ISR(ANA_COMP_vect)
{
  cli();
  if(NONCE_PHASE > 3)
    {NONCE_PHASE = 1;}
   
  switch(NONCE_PHASE)
  {
    case 1:                              // 1 = PHASE_A  打开定时器计延迟时间  
      {
        TCCR2 = 0B00000110;                 //普通定时方式,256分频,总定时4毫秒
        PhaseB_ACD_INIT();
      }break;
    case 2:                              // 2 = PHASE_B  关闭定时器,读出定时器数值
      {
        MITTLE_DELAY = TCNT2;               //读出计时
        PhaseC_ACD_INIT();
      }break;
    case 3:                              // 3 = PHASE_C  重定义 TIMER2 作PWM输出
      {
        TIMER2_PWM_INIT();
        PhaseA_ACD_INIT();
      }break;
   
    NONCE_PHASE = NONCE_PHASE+1;
  }
  sei();
}
//

 

  如上文,我在模拟比较器的 ISR 里面做了设置,计划是:每次进入中断,都将其换到下一相位.所以按照这个想法,模拟比较器的设定应该是正确的.但是为什么在 MUX2:0=000 的时候他完全没反应,而在 MUX2:0=001 的时候他又出现了一些轻微的跳动呢? 这么说来,就是 MUX2:0=001 的时候,他启动了 PWM 那一部分.但是没有完整地走下去.可能是只有一个相位出现了 PWM.

 

  其次还有问题就是,电机的反向电动势很大..几伏是很正常的..显然,我接在ADC0:2上的三个小LED烧了.那个单片机能承受吗?虽然说是模拟比较器,但是有些时候还是没有定义的..某群有人说安全承受为VCC...而且,在管脚和LED连接上一定要加电阻..还说起码 1K ,因为LED只要10mA..说不单只是影响LED,还会影响单片机..这话必须得信啊..

  这次留下的貌似全部都是疑问啊..看来只能有待解决来结尾了..

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值