这80k的速度意味着什么?
程序是这样的:void setup() {
pinMode(12, OUTPUT);
}
void loop() {
digitalWrite(12, HIGH);
digitalWrite(12, LOW);
}
测出来的频率是80k不到,这个值意味着什么?
本帖最后由 ofourme 于 2015-4-13 16:14 编辑
差不多吧。16m频率的话,算出来是每个函数平均执行100条指令。差不多这个量级了。 ofourme 发表于 2015-4-13 16:12 static/image/common/back.gif
差不多吧。16m频率的话,算出来是每个函数平均执行100条指令。差不多这个量级了。
谢谢您的回复!
那请问中断是不是也只能每秒处理80k个信号?
想做一个5M的逻辑分析仪是不是永远办不到?
attachInterrupt(pbIn,stateChange,FALLING); 本帖最后由 ofourme 于 2015-4-13 18:04 编辑
公孙林 发表于 2015-4-13 16:52 static/image/common/back.gif
谢谢您的回复!
那请问中断是不是也只能每秒处理80k个信号?
想做一个5M的逻辑分析仪是不是永远办不到? ...
5M的话,中断函数的出入栈时间都不够。不要用Arduino库函数,挖掘一下AVR芯片的潜力,应该是可以超过80K的。 公孙林 发表于 2015-4-13 16:52 static/image/common/back.gif
谢谢您的回复!
那请问中断是不是也只能每秒处理80k个信号?
想做一个5M的逻辑分析仪是不是永远办不到? ...
(1)改用 Arduino Due, CPU clock 是 84MHz, 不是 UNO 的 16MHz
(2)直接改变 pin 对应的 Port, See:
http://www.billporter.info/2010/08/18/ready-set-oscillate-the-fastest-way-to-change-arduino-pins/
也可以偷看 digitalWrite 的源代码
在你 Arduino IDE 目录下
hardware\arduino\cores\arduino\wiring_digital.c
它里面浪费了一些时间做检查的事情,
而且进出函数又浪费了一些时间
如果你自己写一个 for loop 就可以省下该些 overhead
都有很专业嘛 程序连延迟都没有? ofourme 发表于 2015-4-13 18:02 static/image/common/back.gif
5M的话,中断函数的出入栈时间都不够。不要用Arduino库函数,挖掘一下AVR芯片的潜力,应该是可以超过80 ...
谢谢回答,您说的方法我可怕能力有限。有时间研究下。 xuqin3 发表于 2015-4-13 22:15 static/image/common/back.gif
都有很专业嘛
坛子里高手很多的 suoma 发表于 2015-4-14 08:50 static/image/common/back.gif
程序连延迟都没有?
就是让它疯狂的跑啊
页:
[1]