• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

Tiny85 i/o输出时间求教!如何输出缩短时间,求大神!!

piaopaole 2015-03-21 浏览量:4238
小弟用Tiny85 的i/o引脚,希望输出一个占空比可调的方波,期望高电平的脉冲时间尽量的小,就是置高置低的过程,然后无线循环。用的是内部的1M时钟,现在发现输出的时间特别的长,然后本人就丧心病狂的反复置高置地,不延时,程序如下:
void setup() {
// initialize digital pin 13 as an output.
pinMode(1, OUTPUT);
}

// the loop function runs over and over again forever
void loop() {
digitalWrite(1, HIGH); // turn the LED on (HIGH is the voltage level)
digitalWrite(1, LOW); // turn the LED off by making the voltage LOW
}
其中arduino版本是1.0.6

但是端口1的波形如下,置高的时间将近用了60us,正常来说1MHz的时钟,时钟周期是1us,为什么就单纯的置高置低就这么长时间呢,后来我用arduino 8MHz的内部晶振,发现还是这样,求各位大神帮帮忙,如何配置才能够缩短置高的时间,小弟感激不尽啊!!!

Tiny85 i/o输出时间求教!如何输出缩短时间,求大神!!

0 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
最佳答案
  • 这个时间不是这样算的,digitalWrite()本身就是一个函数,里面包含多条语句,执行效率当然慢,这是用库函数的通病。
    • 发布于 2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

其他答案 数量:8
  • 很好的一个问题!

    我看了一眼手册关于PWM部分的原理图。支持两个定时器的控制。但没细看啊,好像不支持交错输出,但也完全没必要手动反转啊!

    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 哦!我看了一眼LM3S和STM32的库函数,通过改变宏,应该可以屏蔽一些信息反馈功能是吧?你是这个意思是吧。同时我还感觉,主要还是应该直接应用pwm,而且我看过PIC,可以调到竞争频率以下的pwm。ATtiny,好像没有那个直接控制(交错),但也许可以实现吧。不断关注此贴,如果楼主需要,我可以出手试试!
    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 对了,驴哥,你说过支持我的!我们合作出贴啊!比如这样的问题,我们可以互补的!是不,亲!我加你QQ了吗?
    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是这个意思,楼主错误地认为在1M晶振下,执行digitalWrite(1, HIGH);这条语句只需要1us。对于单时钟/机器周期的MCU,在1M晶振下,1个机器周期1us,1个指令周期包含1~4个机器周期,digitalWrite()是一个函数,函数内有多个语句,执行起来当然不可能只需要1us。直接应用PWM当然可以,但是楼主现在玩的是Arduino。
    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

  • Arduino

    上回好像谁和我说过了,刚才我也上网看了,外国人的板子,而且论坛也有在出售!

    这东西是不像树莓派之类的呢?

    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 不是,开发起来比较方便,适合DIY,很多初中生、高中生都玩得很好。
    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

  • 哦!如果可以话,申请论坛给个板子试试。这个东西好像挺不错。
    • 发布于2015-03-21
    • 举报
    • 评论 0
    • 0
    • 0

相关问题

问题达人换一批

Tiny85 i/o输出时间求教!如何输出缩短时间,求大神!!