目的:用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,半个周期
}
|