一乐电子

一乐电子百科

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

快捷登录

手机号码,快捷登录

搜索
楼主: benxiong22
收起左侧

请教关于avr内部模拟比较器的使用

[复制链接]
 楼主| 发表于 2017-4-21 15:28 来自手机 | 显示全部楼层
MOWEIWEI 发表于 2017-4-21 13:18
写程序需要delay 代码吗?
需要设计多快的响应,“尽量要快"?有这种需求吗?这个可以量化吗?每个人心中的 ...

10ms级吧。
最重要的就是这个的处理了,它不用那留给谁用呀
 楼主| 发表于 2017-4-21 15:31 来自手机 | 显示全部楼层
more 发表于 2017-4-21 14:14
第一种方案:可以考虑用数字电位器的可调端作为参考电压,这样参考电位是可调的,而且受单片机控制。
第二 ...

数字电位器和模拟电位器,都需要额外增加一个调节的部件了
 楼主| 发表于 2017-4-21 15:33 来自手机 | 显示全部楼层
MOWEIWEI 发表于 2017-4-21 13:18
写程序需要delay 代码吗?
需要设计多快的响应,“尽量要快"?有这种需求吗?这个可以量化吗?每个人心中的 ...

写程序不需要用delay吗?我用1602显示时,delay少了还乱码呢
发表于 2017-4-21 15:34 | 显示全部楼层
benxiong22 发表于 2017-4-21 12:59
其实我想了一下,假设8兆晶振,所有代码循环一遍用时还是ms级别,所以用adc采集再和基准数据比较,反应速度 ...

尽量少用delay,用状态机,计数器计数,时间不够跳过,否则执行。
发表于 2017-4-21 16:03 | 显示全部楼层
benxiong22 发表于 2017-4-21 15:33
写程序不需要用delay吗?我用1602显示时,delay少了还乱码呢

10ms,     1000/10=100hz,吗?
给个参考,也说得通俗点。就几行代码的情况下。一般8位单片机一秒可以扫过某个判断代码差不多1M 次。
不过这个扫过一个判断代码的衰减比较快。比如你加了句delay=1s这个级别的代码,,扫过的次数就变成1次之内了。
写得好。比如包括了lcd驱动。驱动了什么外设等。一两百行代码。从头到尾一秒钟执行的速度也能达到上百次的。所以大部分情况下不用中断也可以做。


1602不用delay乱码还真没碰到过,顶多刷得太快字符看上去糊了。看不清。 串口通信发得太快乱码就有。


 楼主| 发表于 2017-4-21 16:35 来自手机 | 显示全部楼层
MOWEIWEI 发表于 2017-4-21 16:03
10ms,     1000/10=100hz,吗?
给个参考,也说得通俗点。就几行代码的情况下。一般8位单片机一秒可以扫 ...

估计写完了几百行会有,有些指令是多周期指令,所以我按1000个时钟周期计算,1M下1000个周期就是1ms,所以我说这速度不用中断也可以了
 楼主| 发表于 2017-4-21 16:36 来自手机 | 显示全部楼层
benxiong22 发表于 2017-4-21 16:35
估计写完了几百行会有,有些指令是多周期指令,所以我按1000个时钟周期计算,1M下1000个周期就是1ms,所 ...

前提是不能有太多delay
 楼主| 发表于 2017-4-21 16:48 来自手机 | 显示全部楼层
本帖最后由 benxiong22 于 2017-4-21 16:54 编辑
40560335 发表于 2017-4-21 15:34
尽量少用delay,用状态机,计数器计数,时间不够跳过,否则执行。

需要等待1s时,跳过去执行后面的代码,等执行了多干个main循环后凑够1s了再执行条件内语句?这种写法倒是从来没用过,比如按键防抖delay,先检测一次按键、开启计数器、检查计数到顶与否,没到就让程序继续往下走,main走了若干个循环后直到计数到顶了再检测第二次按键?
发表于 2017-4-21 16:58 | 显示全部楼层
benxiong22 发表于 2017-4-21 16:36
前提是不能有太多delay

我不懂C语言
delay()的时候,程序是原地踏步的?
可以考虑用中断或者定时器什么的,做个“系统时间”,需要定时的地方,就用系统时间差来判断是否延时时间到,这样不会影响其它程序其它部分对时效的要求。
定时器是不是也是这种效果的?

经常接触PLC程序,每个PLC都有自己的系统时钟,用起来很好用。
arduino也有自己的系统时钟millis()

在需要处理多个事件的程序中,我觉得应该彻底避免delay()这种原地踏步的程序……

 楼主| 发表于 2017-4-21 17:15 来自手机 | 显示全部楼层
snoopy8008 发表于 2017-4-21 16:58
我不懂C语言
delay()的时候,程序是原地踏步的?
可以考虑用中断或者定时器什么的,做个“系统时间”, ...

据我所知,delay的时候cpu就是不断楼上楼下跑不停,但是一粒米都不搬运。

本版积分规则

QQ|一淘宝店|手机版|商店|电子DIY套件|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2024-5-2 16:38 , Processed in 0.047498 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

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