江湖救急。求助求助!!!-Arduino中文社区 - Powered by Discuz!

Arduino中文社区

 找回密码
 立即注册

QQ登录

只需一步,快速开始

查看: 2478|回复: 2

[未解决] 江湖救急。求助求助!!!

[复制链接]
发表于 2021-6-21 19:15 | 显示全部楼层 |阅读模式
大佬们,本人新手上路,现在要写一个程序遇到了问题问题是这样的我要一个循环40多次的脉冲,高低电平持续时间都是10微秒
于是我写了个循环体
  1. for(int i = 0;i < 43;i++){
  2.     digitalWrite(VHVL,HIGH);
  3.     delayMicroseconds(10);
  4.     digitalWrite(VHVL,LOW);
  5.     delayMicroseconds(10);
  6.   }
复制代码
但是示波器上检测不到这个电平的变换???!!!但是去掉for循环示波器又检测的到变化!!!所以我要的功能自然也没实现。。。
但是,当我用一下的代码---即用delay代替delayMicroseconds后示波器可以看到电平的变化,我想问问前辈,为什么会这样,如何解决??
  1. for(int i = 0;i < 43;i++){
  2.     digitalWrite(VHVL,HIGH);
  3.     delay(1);
  4.     digitalWrite(VHVL,LOW);
  5.     delay(1);
  6.   }
复制代码
谢谢大家。
发表于 2021-6-22 07:15 | 显示全部楼层
delayMicroseconds s确实有点问题

推荐你参考 https://www.lab-z.com/oscard2/ 这个文章

早晨我用 leonardo 的板子实验了一下,下面的代码,D9 Pin

void setup() {
  pinMode(9, OUTPUT);
}

void loop() {
  PORTB = B100000;

  //for (long zdelay=0;zdelay<231; zdelay++) {
    __asm__("nop\n\t");
  //}

  PORTB = B000000;

  // for (long zdelay=0;zdelay<231; zdelay++) {
    __asm__("nop\n\t");
  //}
}


结果如下:
20131011225859.png

发表于 2021-6-22 23:29 | 显示全部楼层
你需要提示一下使用的晶片/開發板及時脈

我使用 ATtiny13A 的經驗是開發板有個
Micros enabled/disabled 可選擇是否使用
micro second 的機能(用了編譯結果會比較大,
大概是因為只有 1kb的空間,能省則省)
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|Archiver|手机版|Arduino中文社区

GMT+8, 2024-11-29 04:31 , Processed in 0.077180 second(s), 18 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表