单片机时序图中1个plc上升沿和下降沿或者下降沿需要延时多久呢

怎么更改avr单片机上升沿捕获或者下降沿捕获_avr吧_百度贴吧
&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&签到排名:今日本吧第个签到,本吧因你更精彩,明天继续来努力!
本吧签到人数:0成为超级会员,使用一键签到本月漏签0次!成为超级会员,赠送8张补签卡连续签到:天&&累计签到:天超级会员单次开通12个月以上,赠送连续签到卡3张
关注:4,272贴子:
怎么更改avr单片机上升沿捕获或者下降沿捕获收藏
我用avr studio+win avr编程,测量一个高电平的时间,下面是我的程序,测出来都是一个周期,大家帮我看看怎么改下 #define
1000000UL //1M晶振#include &avr/io.h&#include &avr/interrupt.h&#include &util/delay.h&#define INT8U
unsigned char#define INT16U
unsigned int//共阴数码管0-9的数字编码,最后一位为黑屏const INT8U SEG_CODE[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};//分解后的待显示数位INT8U Display_Buffer[] = {0,0,0,0};//连续两次捕获计数变量INT16U CAPj=0;INT16U CAPi=0;//-----------------------------------------------------------------// 数码管显示频率//-----------------------------------------------------------------void Show_FRQ_ON_DSY(){ INT8U i=0;for(i=0;i&4;i++){PORTA=0x00;PORTB=~_BV(i);PORTA=SEG_CODE[Display_Buffer[i]];if(i==0) PORTA|=0x80;_delay_ms(2);}}
//------------------------------------------------------------------// 主程序//------------------------------------------------------------------int main() { INT8U LastKey=0xFF;DDRA=0xFF;DDRB=0xFF;DDRC=0x00;PORTC=0xFF;DDRD=0x00;PORTD=0xFF;TCCR1B=_BV(ICNC1);//开启捕获,下降沿触发sei();while(1){TIMSK=0x20;TCCR1B|=0x01;Show_FRQ_ON_DSY();}}//------------------------------------------------------------------// T1输入捕获中断子程序//------------------------------------------------------------------ISR (TIMER1_CAPT_vect){INT8U if(CAPi==0)
//接收到下降沿 {
CAPi=ICR1;
TCCR1B|=_BV(ICNC1)|_BV(ICES1);改为上升沿触发 } else
//接收到上升沿 {
CAPj=ICR1-CAPi;
TIMSK=0x00;
TCCR1B&=0xFC;
for(i=3;i!=0xFF;i--)
Display_Buffer[i]=CAPj%10;
TCNT1=CAPj=CAPi=0; } }
登录百度帐号推荐应用
为兴趣而生,贴吧更懂你。或欢迎来到EDA中国!
|||, 欢迎您回来! &|EDA中国新版上线了!欢迎来拍!!!当前位置: > > 如何看懂时序图?发布时间:
15:50:24 &&&&来源: EDA中国操作时序永远使用是任何一片IC芯片的最主要的内容。一个芯片的所有使用细节都会在它的官方器件手册上包含。大家要慢慢学会看时序图,要知道操作一个器件的精华便蕴藏在其中,看懂看准了时序,你操控这个芯片就是非常容易的事了。1602的时序是我见过的一个最简单的时序:1、注意时间轴,如果没有标明(其实大部分也都是不标明的),那么从左往右的方向为时间正向轴,即时间在增长。2、上图框出并注明了看懂此图的一些常识:(1).时序图最左边一般是某一根引脚的标识,表示此行图线体现该引脚的变化,上图分别标明了RS、R/W、E、DB0~DB7四类引脚的时序变化。(2).有线交叉状的部分,表示电平在变化,如上所标注。(3).应该比较容易理解,如上图右上角所示,两条平行线分别对应高低电平,也正好吻合(2)中电平变化的说法。(4).上图下,密封的菱形部分,注意要密封,表示数据有效,Valid Data这个词也显示了这点。3、需要十分严重注意的是,时序图里各个引脚的电平变化,基于的时间轴是一致的。一定要严格按照时间轴的增长方向来精确地观察时序图。要让器件严格的遵守时序图的变化。在类似于18B20这样的单总线器件对此要求尤为严格。4、以上几点,并不是LCD1602的时序图所特有的,绝大部分的时序图都遵循着这样的一般规则,所以大家要慢慢的习惯于这样的规则。也许你还注意到了上面有许多关于时间的标注,这也是个十分重要的信息,这些时间的标注表明了某些状态所要维持的最短或最长时间。因为器件的工作速度也是有限的,一般都跟不上主控芯片的速度,所以它们直接之间要有时序配合。话说现在各种处理器的主频也是疯狂增长,日后搞不好出现个双核单片机也不一定就是梦话。下面是时序参数表:大家要懂得估计主控芯片的指令时间,可以在官方数据手册上查到MCU的一些级别参数。比如我们现在用AVR M16做为主控芯片,外部12MHz晶振,指令周期就是一个时钟周期为(1/12MHz)us,所以至少确定了它执行一条指令的时间是us级别的。我们看到,以上给的时间参数全部是ns级别的,所以即便我们在程序里不加延时程序,也应该可以很好的配合LCD1602的时序要求了。怎么看这个表呢?很简单,我们在时序图里可以找到TR1,对应时序参数表,可以查到这个是E上升沿/下降沿时间,最大值为25ns,表示E引脚上的电平变化,必须在最大为25ns之内的时间完成。大家看是不是这个意思?现在我来解读我对这个时序图的理解:当要写命令字节的时候,时间由左往右,RS变为低电平,R/W变为低电平,注意看是RS的状态先变化完成。然后这时,DB0~DB7上数据进入有效阶段,接着E引脚有一个整脉冲的跳变,接着要维持时间最小值为tpw=400ns的E脉冲宽度。然后E引脚负跳变,RS电平变化,R/W电平变化。这样便是一个完整的LCD1602写命令的时序。
2 上一篇 : 下一篇 : 相关阅读 :· · · · · 相关资源 :· · · · · 最新热文最新视频热文排行榜热门资源获取帮助咨询电话:021-QQ客服:QQ群:您现在所在的是:
单片机论坛
→ 浏览主题:
* 帖子主题:
guanyumou 版主
文章数:4809
年度积分:1112
历史总积分:8980
注册时间:
2017春节活动(三)
51单片机中如何检测一个数字量输入的上升沿或者下降沿信号?
比如我把P2.0作为一个数字量输入,接一个按钮!怎么检测这个按钮的上升沿或者下降沿呢?
基于各种组态软件\触摸屏\PLC\单片机\变频器MODBUS RTU串口通信编程服务,需要请直接
联系!腾讯扣扣
文章数:2692
年度积分:462
历史总积分:6814
注册时间:
先保存上次的状态,检测本次状态,如果不同,就是沿,然后保存本次状态.一般地,沿应该是有时效的,也许是在主程序循环里,也许用定时器.
发站内信,发站内信,发站内信.一对一解答.
need money.
;约吗?
精通Schneider Modicon PLC(Quantum,Premium,Compact,984),
精通Siemens PLC(冗余和安全,400,300,200,S5), PCS, WINCC, Portal.
精通GE PLC(PAC RX3i, 原/现FANUC 90-30), IFIX, CIMPLICITY.
精通Rockwell AB DCS, PLC(冗余和安全,Controllogix,Compactlogix,PLC-5), FactoryTalk View.
精通Honeywell DCS(C200), FSC(PKS TPS).
精通组态王.VB,C,PHP,SQL,WEB开发,APP开发(android),PROTEL软件硬件单片机.
guanyumou 版主
文章数:4809
年度积分:1112
历史总积分:8980
注册时间:
2017春节活动(三)
不太明白!还请指教!
基于各种组态软件\触摸屏\PLC\单片机\变频器MODBUS RTU串口通信编程服务,需要请直接
联系!腾讯扣扣
文章数:28
年度积分:50
历史总积分:636
注册时间:
如检测上升沿:JB &P2.0, &AA & &意思是P2.0脚是1跳转AA处。
文章数:246
年度积分:78
历史总积分:1721
注册时间:
不明白LZ的意思,是用示波器去检测按键脉冲,还是用单片机去检测(也叫输入)。
天道酬勤!
tigermu 版主
文章数:11086
年度积分:638
历史总积分:24277
注册时间:
2016论坛优秀版主
2016国庆活动(一)
2015论坛优秀版主
西门子logo体验(三)
英威腾PLC体验(三)
2015春节活动
2014论坛优秀版主
2013论坛优秀版主
2012论坛优秀版主
2010年度论坛贡献奖
中断或者定时查询。记录初始状态,然后不断比较,发现不同,延时消抖,确认。
tigermu. & 无声无息
guanyumou 版主
文章数:4809
年度积分:1112
历史总积分:8980
注册时间:
2017春节活动(三)
不用中断!!
基于各种组态软件\触摸屏\PLC\单片机\变频器MODBUS RTU串口通信编程服务,需要请直接
联系!腾讯扣扣
文章数:19
年度积分:50
历史总积分:408
注册时间:
按照你的要求写的程序,你可以参考一下:
#define NOEDGE
(0)
#define UPEDGE
(1)
#define DOWNEDGE
& & & & & & & &(2)
#define HIGH
(1)
#define LOW
unsigned char OldState,aEdge=NOEDGE;
void main(void)
{
OldState=K
&switch(OldState&0x01){
& case HIGH:
if(Key==LOW)
&{aEdge=DOWNEDGE; OldState=K}
& case LOW:
if(Key==HIGH)
&{aEdge=UPEDGE; OldState=K}
& default: &aEdge=NOEDGE;
if(aEdge==UPEDGE)
& //上升沿处理的代码
& aEdge=NOEDGE; //此行保证一个沿只处理一次
else if(aEdge==DOWNEDGE)
& //下降沿处理的代码
& aEdge=NOEDGE; //此行保证一个沿只处理一次
guanyumou 版主
文章数:4809
年度积分:1112
历史总积分:8980
注册时间:
2017春节活动(三)
以下是引用hDragon在 9:45:34的发言:
按照你的要求写的程序,你可以参考一下:
#define&NOEDGE&&(0)
#define&UPEDGE&&(1)
#define&DOWNEDGE&&&&&&&&&&&&&&&&&(2)
#define&HIGH&&(1)
#define&LOW&&(0)
sbit&Key&&&=P2^0;
unsigned&char&OldState,aEdge=NOEDGE;
void&main(void)
&OldState=K
&while(1){
&&switch(OldState&0x01){
&&&case&HIGH:
&&&&if(Key==LOW)&
&&&&&{aEdge=DOWNEDGE;&OldState=K}
&&&case&LOW:
&&&&if(Key==HIGH)&
&&&&&{aEdge=UPEDGE;&OldState=K}
&&&default:&&aEdge=NOEDGE;
&if(aEdge==UPEDGE)
&&&//上升沿处理的代码
&&&aEdge=NOEDGE;&//此行保证一个沿只处理一次
&else&if(aEdge==DOWNEDGE)
&&&//下降沿处理的代码
&&&aEdge=NOEDGE;&//此行保证一个沿只处理一次
有参考价值
工控学堂推荐视频:只需一步,快速开始
扫一扫,访问微社区
后使用快捷导航没有帐号?
查看: 942|回复: 14
I2C的Data是在时钟上升沿采样还是下降沿采样?
主题帖子积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
EDA365欢迎您!
才可以下载或查看,没有帐号?
I2C在SCL高电平期间,SDA电平不能发生变化,在SCL低电平期间,SDA电平可以发生变化。2 G8 C5 E+ ?- e1 a$ V
那么问题来了,I2C的Data是在SCL的上升沿采样锁存传输还是在SCL的高电平期间传输?
从I2C的建立时间和保持时间来看,应该是上升沿采样锁存。
各位大侠请给点答案啊$ x9 Y/ }. e2 ^: v/ z' H" @
(75.08 KB, 下载次数: 0)
16:39 上传
主题帖子积分
二级会员(20), 积分 146, 距离下一级还需 54 积分
二级会员(20), 积分 146, 距离下一级还需 54 积分
数据在建立时间后 保持时间前采样
主题帖子积分
五级会员(50), 积分 3030, 距离下一级还需 3970 积分
五级会员(50), 积分 3030, 距离下一级还需 3970 积分
你这不是自问自答吗。
我不确定啊,所以征求各位大侠答案&
主题帖子积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
3 ?& I5 E; t% g4 E1 n/ z: y
你这不是自问自答吗。1 }: }; @$ n$ {2 p
我不确定啊,所以征求各位大侠答案% u+ O. {&&p# w7 R1 |
主题帖子积分
四级会员(40), 积分 1172, 距离下一级还需 1828 积分
四级会员(40), 积分 1172, 距离下一级还需 1828 积分
I2C通常应该在时钟的高电平而不是上升沿或者下降沿读取数据,IC抽样判决的时候只要求在时钟上升沿阶段SDA要能够稳定的保持一段时间。
I2C要求SDA在SCL为高电平不能跳变,是因为SCL为高电平时,会触发I2C的起始条件和停止条件。&
那请问数据的建立时间和保持时间是怎么回事?为什么I2C的SDA建立时间是在SCL的上升沿计算?&
主题帖子积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
&&@/ d2 m% \6 V! K0 T& H- F( H) V
I2C通常应该在时钟的高电平而不是上升沿或者下降沿读取数据,IC抽样判决的时候只要求在时钟上升沿阶段SDA要 ...) c8 j&&g$ o# x8 j
那请问数据的建立时间和保持时间是怎么回事?为什么I2C的SDA建立时间是在SCL的上升沿计算?
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。保持时间是指触发器的时钟信号上升沿到来以后,数据也必须保持一段时间,数据保持不变以便能够稳定读取。
采样是在SCL高电平时采样,所以在数据&
主题帖子积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
6 V* g$ k- a&&x/ w8 \: R" P
I2C通常应该在时钟的高电平而不是上升沿或者下降沿读取数据,IC抽样判决的时候只要求在时钟上升沿阶段SDA要 ...% s( ~0 [# q$ S, V
I2C要求SDA在SCL为高电平不能跳变,是因为SCL为高电平时,会触发I2C的起始条件和停止条件。- x$ Q&&d3 X) Q) P! B( p! G
主题帖子积分
三级会员(30), 积分 529, 距离下一级还需 471 积分
三级会员(30), 积分 529, 距离下一级还需 471 积分
那请问数据的建立时间和保持时间是怎么回事?为什么I2C的SDA建立时间是在SCL的上升沿计算?0 i& l8 p: p" x3 j
建立时间是指触发器的时钟信号上升沿到来以前,数据稳定不变的时间。保持时间是指触发器的时钟信号上升沿到来以后,数据也必须保持一段时间,数据保持不变以便能够稳定读取。' L5 D) j6 c* m6 ~1 T
采样是在SCL高电平时采样,所以在数据转换之后到上升沿(10%)这段时间就为建立时间。7 S7 f" Z, c6 y" b
但是I2C的保持时间好像和以往的定义不同,是在SCL下降沿之后到数据变换之前的时间,这点不是很好理解。
, ?& N, n2 \6 T9 V' k( k3 `( H
" k&&P2 z$ l) l, V/ Q7 v
主题帖子积分
三级会员(30), 积分 453, 距离下一级还需 547 积分
三级会员(30), 积分 453, 距离下一级还需 547 积分
SCL高电平之后采样,而不是边沿采样
有文献可以考证吗?&
主题帖子积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
四级会员(40), 积分 2976, 距离下一级还需 24 积分
SCL高电平之后采样,而不是边沿采样2 @8 @/ j* |' I+ h" x
有文献可以考证吗?
主题帖子积分
二级会员(20), 积分 165, 距离下一级还需 35 积分
二级会员(20), 积分 165, 距离下一级还需 35 积分
SCL的上升沿采样锁存
推荐内容 /1
Designcon 2017 paper 182篇,SI-list首发!啥也别说,按需下载吧!
Powered by}

我要回帖

更多关于 plc上升沿和下降沿 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信