打印
[PIC®/AVR®/dsPIC®产品]

感觉这样算出的频率不正确

[复制链接]
943|22
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
liuzaiy|  楼主 | 2022-4-11 23:08 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
本帖最后由 pzsh 于 2022-4-20 10:36 编辑

在调好正弦波(0-5v)频率,能保证200个AD数据中完全出现一个周期,用定时器算出了,200次A/D检测和存数组的时间T,一次检测时间为T/200。,根据数组出现最大值和最小值的位置相差的绝对值add, 则可算出正弦波的半个周期的时间为add*T/200,感觉这样算出的频率不正确

使用特权

评论回复
沙发
stly| | 2022-4-11 23:10 | 只看该作者
还有什么现象?能再详细描述下吗?

使用特权

评论回复
板凳
liuzaiy|  楼主 | 2022-4-11 23:14 | 只看该作者
测试过定时器Timer0和跑表的计时不一致,请问是定时器设置的不对还
          是怎样?

使用特权

评论回复
地板
juventus9554| | 2022-4-11 23:17 | 只看该作者
思路有问题?

使用特权

评论回复
5
liuzaiy|  楼主 | 2022-4-11 23:19 | 只看该作者
查看过AD检测的200组数据,波形规律正常

使用特权

评论回复
6
llljh| | 2022-4-11 23:21 | 只看该作者
楼主程序可以公开吗?贴程序看下吧,这么说看不出什么原因

使用特权

评论回复
7
liuzaiy|  楼主 | 2022-4-11 23:23 | 只看该作者

{        cout_num0 = 0;               //定时变量
        OPTION_REG =  0;           //4M,不分频,一次100us
        OPTION_REGbits.PSA = 1;
        OPTION_REGbits.PS = 0;
        INTCONbits.TMR0IF = 0;
        INTCONbits.TMR0IE = 1;
        INTCONbits.PEIE = 1;
        INTCONbits.GIE = 1;
        TMR0 = 0xAA;       //计时开始,跑表开始
        while(number<=200)
        {
            ADCON0bits.GO_nDONE = 1;
            while(ADCON0bits.GO_nDONE);  //
            adc_value = ADRESH;
            adc_value <<=8;
            adc_value| =ADRESL;
            adc_sort[number++] = adc_value;
            NOP();
        }   NOP(); //此时count_num0 = 280, TMR0 = 0xC6,时间T = 280*100+(0xC6-0xaa)/(0xff-0xaa)*100 = 28024 us ; 跑表为21794us,不知道该以哪个为标准?
........
}

void interrupt ISR(void)
{
    if(INTCONbits.TMR0IF== 1)
    {
        TMR0=0xAA;  //
        TMR0IF = 0;
        count_num0++;     
    }
}

使用特权

评论回复
8
jiaxw| | 2022-4-11 23:25 | 只看该作者
直接整成矩形波,测周期不就简单多了?

使用特权

评论回复
9
liuzaiy|  楼主 | 2022-4-11 23:28 | 只看该作者
没有这个条件

使用特权

评论回复
10
renyaq| | 2022-4-11 23:30 | 只看该作者
PIC有几个新的单片机内置ZCD过零点检测单元, 直接就可以测交流信号的过零点的说.

使用特权

评论回复
11
jiajs| | 2022-4-11 23:33 | 只看该作者
很多芯片都自带比较器,不难实现

使用特权

评论回复
12
chuxh| | 2022-4-11 23:35 | 只看该作者
以实际为准比较好

使用特权

评论回复
13
liuzaiy|  楼主 | 2022-4-11 23:37 | 只看该作者
配置字中使能了4*pLL功能,导致实际频率为16M。

使用特权

评论回复
14
heweibig| | 2022-4-11 23:40 | 只看该作者
定时器配置时钟弄错了?

使用特权

评论回复
15
liuzaiy|  楼主 | 2022-4-11 23:43 | 只看该作者
知道怎么回事了,多谢大家

使用特权

评论回复
16
豌豆爹| | 2022-4-12 16:08 | 只看该作者
来看看大家的讨论讨个思路

使用特权

评论回复
17
pzsh| | 2022-4-20 10:36 | 只看该作者
我觉得楼上10楼建议用ZCD的方法非常棒!

使用特权

评论回复
18
tpgf| | 2022-5-4 10:10 | 只看该作者
实测一下是多少啊

使用特权

评论回复
19
drer| | 2022-5-4 10:23 | 只看该作者
以实际为准进行更改

使用特权

评论回复
20
tfqi| | 2022-5-4 10:31 | 只看该作者
时钟源是多大的啊

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

735

主题

7546

帖子

2

粉丝