公孙林 发表于 2015-4-13 15:36:40

这80k的速度意味着什么?

程序是这样的:
void setup() {               
pinMode(12, OUTPUT);   
}

void loop() {
digitalWrite(12, HIGH);
digitalWrite(12, LOW);
}

测出来的频率是80k不到,这个值意味着什么?

ofourme 发表于 2015-4-13 16:12:12

本帖最后由 ofourme 于 2015-4-13 16:14 编辑

差不多吧。16m频率的话,算出来是每个函数平均执行100条指令。差不多这个量级了。

公孙林 发表于 2015-4-13 16:52:50

ofourme 发表于 2015-4-13 16:12 static/image/common/back.gif
差不多吧。16m频率的话,算出来是每个函数平均执行100条指令。差不多这个量级了。

谢谢您的回复!
那请问中断是不是也只能每秒处理80k个信号?
想做一个5M的逻辑分析仪是不是永远办不到?


attachInterrupt(pbIn,stateChange,FALLING);

ofourme 发表于 2015-4-13 18:02:14

本帖最后由 ofourme 于 2015-4-13 18:04 编辑

公孙林 发表于 2015-4-13 16:52 static/image/common/back.gif
谢谢您的回复!
那请问中断是不是也只能每秒处理80k个信号?
想做一个5M的逻辑分析仪是不是永远办不到? ...

5M的话,中断函数的出入栈时间都不够。不要用Arduino库函数,挖掘一下AVR芯片的潜力,应该是可以超过80K的。

tsaiwn 发表于 2015-4-13 18:53:28

公孙林 发表于 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

xuqin3 发表于 2015-4-13 22:15:36

都有很专业嘛

suoma 发表于 2015-4-14 08:50:32

程序连延迟都没有?

公孙林 发表于 2015-4-14 08:57:44

ofourme 发表于 2015-4-13 18:02 static/image/common/back.gif
5M的话,中断函数的出入栈时间都不够。不要用Arduino库函数,挖掘一下AVR芯片的潜力,应该是可以超过80 ...

谢谢回答,您说的方法我可怕能力有限。有时间研究下。

公孙林 发表于 2015-4-14 09:00:40

xuqin3 发表于 2015-4-13 22:15 static/image/common/back.gif
都有很专业嘛

坛子里高手很多的

公孙林 发表于 2015-4-14 09:01:02

suoma 发表于 2015-4-14 08:50 static/image/common/back.gif
程序连延迟都没有?

就是让它疯狂的跑啊
页: [1]
查看完整版本: 这80k的速度意味着什么?