Ian11122840 发表于 2011-4-2 15:47:42

有没有谁知道,MK的四轴,AD采样速率是多少?

我在看MK的程序和cnmusic的注释,他说四轴在2ms内即时耦合,在0.5s内长期耦合。

但是在2ms的程序里,就用了很多积分参数(IntegralNick、MeanAccNick之类的),纳闷这些积分参数,是每2ms采样一次,0.5s内长期耦合中求出来的,还是2ms之内就已经做了积分了?

如果是2ms内已经做了多次积分了,那积分次数又是多少呢?谢谢!~

yuxuanqq 发表于 2011-4-4 21:49:23

这个好说,回复【楼主位】Ian11122840 船儿舟
-----------------------------------------------------------------------

这个好说,你看程序里analog.c里面写得很清楚,没次调用ADC_Enable(),就会调用一次数据采集工作,使用中断时切换通道。

切换了0-17个通道,也就是18个。俯仰、滚转各四次(其他的自己看)。

每次ADC_Enable()之后很快会完成上述这个工作的,因为ADC很快,至少比2ms快多拉。

然后再最后一个状态,会关闭这种自动采集。

那什么时候再采集呢,你搜一下ADC_Enable()在哪里用了就知道啦,在Mean()里用了!Mean()在哪里用了?在MotorControl()里用了,还是第一个调用的程序呢!

那MotorControl()多长时间运行一次?
看这里:主函数中:

        // begin of main loop
        while (1)
        {
                if(UpdateMotor && ADReady)      // control interval
                {
                        UpdateMotor = 0; // reset Flag, is enabled every 2 ms by ISR of timer0

                        //J4HIGH;
                        MotorControl();
                        //J4LOW;

                           。。。。。。
所以,MotorControl()的调用频率受UpdateMotor、 ADReady两个控制变量控。

ADReady不管他,因为他很快就会结束。

UpdateMotor变量是受硬件的定时器控制,固定时间置一的。在这里:

timer0的中断服务程序:

ISR(TIMER0_OVF_vect)    // 9.765 kHz
{
        static uint8_t cnt_1ms = 1,cnt = 0;
        uint8_t Beeper_On = 0;

#ifdef USE_NAVICTRL
        if(SendSPI) SendSPI--; // if SendSPI is 0, the transmit of a byte via SPI bus to and from The Navicontrol is done
#endif

#ifdef USE_RC_SPEKTRUM
        if(SpektrumTimer) SpektrumTimer--;
#endif

        if(!cnt--) // every 10th run (9.765kHz/10 = 976Hz)
        {
                cnt = 9;
                cnt_1ms++;
                cnt_1ms %= 2;
                if(!cnt_1ms) UpdateMotor = 1; // every 2nd run (976Hz/2 = 488 Hz)
                CountMilliseconds++; // increment millisecond counter
        }
      。。。。。。。。。。。。

看到488Hz啦吧,呵呵,大约是2ms多一点啦~~

yuxuanqq 发表于 2011-4-4 21:53:17

回复【楼主位】Ian11122840 船儿舟
我在看mk的程序和cnmusic的注释,他说四轴在2ms内即时耦合,在0.5s内长期耦合。
但是在2ms的程序里,就用了很多积分参数(integralnick、meanaccnick之类的),纳闷这些积分参数,是每2ms采样一次,0.5s内长期耦合中求出来的,还是2ms之内就已经做了积分了?
如果是2ms内已经做了多次积分了,那积分次数又是多少呢?谢谢!~
-----------------------------------------------------------------------

至于IntegralNick、MeanAccNick之类的变量,没有你说的那样快的更新啦,都是在fc.c里调用的吧,呵呵,更新就是2好秒加上一次,一直更新啦。

Ian11122840 发表于 2011-4-6 08:47:24

回复【1楼】yuxuanqq
-----------------------------------------------------------------------

谢谢~~搞清楚了个比较重要的问题~感激不尽~
页: [1]
查看完整版本: 有没有谁知道,MK的四轴,AD采样速率是多少?