打印

用AT917X256的I/O引脚输出频率在20K-25K之间的方波

[复制链接]
1946|3
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
jacky_xs1|  楼主 | 2013-1-9 11:32 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
目的:用AT917X256的I/O引脚输出频率在20K-25K之间的方波,要求频率可变,而且频率不能低于20K以下(低于20K以下就会出现可闻声)。
问题如下:
如果只生成固定频率的方波,如20K或者21K,输出是没有声音的;但中间只要进行频率切换,输出时就会出现可闻声,基本代码如下。求教各位是什么原因,谢谢了!
单频点(20K)生成程序如下:  
while(1)   
{   
    pSIO->PIO_SODR |= AT91C_PIO_PA0;// output high   
    NutMicroDelay(25); //delay 25us,半个周期        
    pSIO->PIO_CODR |= AT91C_PIO_PA0;// output low      
    NutMicroDelay(25); //delay 25us,半个周期   
}

多频点(20K与21K之间切换)生成程序如下:   
while(1)   
{   
    pSIO->PIO_SODR |= AT91C_PIO_PA0;// output high   
    NutMicroDelay(25); //delay 25us,半个周期         
    pSIO->PIO_CODR |= AT91C_PIO_PA0;// output low      
    NutMicroDelay(25); //delay 25us,半个周期   

    pSIO->PIO_SODR |= AT91C_PIO_PA0;// output high   
    NutMicroDelay(24); //delay 24us,半个周期         
    pSIO->PIO_CODR |= AT91C_PIO_PA0;// output low      
    NutMicroDelay(24); //delay 24us,半个周期   
}
沙发
huangxz| | 2013-1-9 14:31 | 只看该作者
楼主有没有用谐波分析(一般示波器都有这功能)看看,
而且楼主,你这个贴发到arm论坛比较好吧,这里是讨论pic单片机的。

使用特权

评论回复
板凳
jacky_xs1|  楼主 | 2013-1-9 23:09 | 只看该作者
嗯,谢谢提醒,目前我仅仅是用AT917X256做实验,最终还是要用PIC18系列的芯片来做。关于第一个问题,我用示波器抓了波形来看,切换频率时波形显示也是正常的,但是就是有声音,回头我会把波形截图传上来。今天又弄了一下午,还是没出来,郁闷啊……

使用特权

评论回复
地板
jacky_xs1|  楼主 | 2013-1-24 08:59 | 只看该作者
已经开始用pic做实现了,结果还是一样,用I/O输出单频点20K方波无声音,多频点方波就会有声音。另外还有一种情况,使用I/O口生成单频点方波时,如果中间有停顿(就是有个较长时间的delay),则每次启动瞬间就会有声音,程序如下,请教各位,这个有办法解决么?
void main()
{
    int i=0;
    while(1)
    {
        while(i<1000)
        {
            i++;
            output_low(PIN_A0);
            delay_us(25);
            output_high(PIN_A0);
            delay_us(25);
        }
        i=0;
        output_low(PIN_A0);
        delay_ms(500);
    }
}   

使用特权

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

本版积分规则

2

主题

9

帖子

0

粉丝