完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
你好,
我已经用下面的代码来生成一个频率为1kHz的正弦波。但是我得到的频率是35赫兹。有人能告诉我我哪里错了吗?我如何用GCC编译器使用正弦函数。如果不支持,还有别的选择吗? 包含和lt; 定义π3.14159265 虚主(){浮点频率=10000;浮点SAMPLE PARYSLY=50000;int VaR=0;int i=0;vdAc811x启动();{(i=50000)i=0;var=255*(0.5×(正弦(2×π*频率*i/sPrPayPrEx秒))+0.5);i++;vdAc811StValk(var);CyDelayUs(20);} 以上来自于百度翻译 以下为原文 Hello, I have used the following code to generate a sinewave for freqiency 1 kHz.. But the frequency o/p that I'm getting is 35 Hz. Can anyone suggest me where I'm goin wrong? Also how do I use sine function with GCC compiler. If not supported, what's the other alternative ? #include #include #define PI 3.14159265 void main() { float frequency = 10000.0; float sample_per_seconds = 50000.0; int var=0; int i=0; VDAC8_1_Start(); for(;;) { if(i==50000) i = 0; var = 255*(0.5 *(sin(2*PI*frequency*i/sample_per_seconds))+0.5); i++; VDAC8_1_SetValue(var); CyDelayUs(20); } } |
|
相关推荐
4个回答
|
|
因为你在循环中做了很多计算,所以它的运行速度可能比你慢很多(尤其是Sin()调用可能很慢)。实际上,推荐的方式是使用DMA传输。过去有一个申请说明,但现在正在审查中。但是你可以看看这个应用笔记:HTTP://www. CyPress?RID=37793(示例α3)和这个博客文章:HTTP://wwwyCypress?RID=39390以得到一个想法。
以上来自于百度翻译 以下为原文 Since you do a lot of calculation inside of your loop, it might be just run much more slowly than you (esp. the sin() call might be slow). Actually, the recommended way is to use a DMA transfer. There used to be a application note about this, but its under review right now. But you can look at this app note: http://www.cypress.com/?rID=37793 (example #3) and this blog post: http://www.cypress.com/?rID=39390 to get an idea. |
|
|
|
一个字,WaveDAC8!
更重要的是:用WaveDAC8PSoC创建者组件制作波形 它仍然是一个概念组件,但我已经使用它,它做的工作相当好,更不用说极易使用。 以上来自于百度翻译 以下为原文 One word,WaveDAC8! Heres more on that: Making Waves with the WaveDAC8 PSoC Creator Component Its still a concept component,but I've used it and it does the job quite well,not to mention the extreme ease of use. |
|
|
|
是的,正如在WaveDAC8之前发布的是一个很好的正弦波模块。
我有另一个主题在你的代码上:你写 I=(i=50000)i=0; 虽然在这个简短的节目中,这将不会出错,但我坚持写作。 如果(i & gt;=50000)i=0; 即使是IIS 50001,不管它的原因是什么,它都能正常工作。 萨维克丁 鲍勃 以上来自于百度翻译 以下为原文 Yes, as posted before WaveDAC8 is a pretty good module for sine-waves. I have another subject on your code: You write if (i==50000) i=0; Although it is obvois in this short program that this will work error-free I wouls insist in writing if(i >= 50000) i= 0; which would work correctly even when i is 50001 whatever the reason for this might be. Save coding Bob |
|
|
|
1。将PSoC CPU时钟设置为48毫安,或者像你的芯片所能支持的那样高。
2。删除延迟环路 三。这是最快的程序。 4。如果你不建议使用Wave8,FLUTIT点使用大量的指令。然后,您应该看看是否可以使用表来生成输出或使用近似公式。 以上来自于百度翻译 以下为原文 1. Set the Psoc CPU clock to 48mh or as high as your chip can support. 2. remove the delay loop 3. This is the fastest you can do with your program. 4. flaoting point use a lot of instruction, if you are not goint to use wave8 as suggest. Then you should see if you can use a table to generate the output or use approxiamtion formula. |
|
|
|
只有小组成员才能发言,加入小组>>
752个成员聚集在这个小组
加入小组2075 浏览 1 评论
1829 浏览 1 评论
3645 浏览 1 评论
请问可以直接使用来自FX2LP固件的端点向主机FIFO写入数据吗?
1766 浏览 6 评论
1517 浏览 1 评论
CY8C4025LQI在程序中调用函数,通过示波器观察SCL引脚波形,无法将pin0.4(SCL)下拉是什么原因导致?
516浏览 2评论
CYUSB3065焊接到USB3.0 TYPE-B口的焊接触点就无法使用是什么原因导致的?
370浏览 2评论
CX3连接Camera修改分辨率之后,播放器无法播出camera的画面怎么解决?
413浏览 2评论
360浏览 2评论
使用stm32+cyw43438 wifi驱动whd,WHD驱动固件加载失败的原因?
868浏览 2评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-11-29 09:04 , Processed in 0.963967 second(s), Total 83, Slave 66 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号