有童鞋使用下面的代码,测试Arduino端口的切换高低电平的最快速度。
代码如下:- int led = 6;
- void setup() {
- pinMode(led, OUTPUT);
- }
- void loop() {
- digitalWrite(led, HIGH);
- digitalWrite(led, LOW);
- }
复制代码
正常的低电平都是5us左右,但是每隔一段时间,都会出现一段10us左右的低电平,很是怪异。
后来发现,是没有禁用中断引起的。只要使用下面的代码,禁用中断,就不会出现那异灵的10us低电平了。
- int led = 6;
- void setup() {
- noInterrupts();
- pinMode(led, OUTPUT);
- }
- void loop() {
- digitalWrite(led, HIGH);
- digitalWrite(led, LOW);
- }
复制代码 禁用中断后的波形。。就没有那异灵的10us了~
但是为什么不禁用中断,会每隔一定时间,出现一个异灵的10us,求解释。 |