kingsor120 发表于 2012-11-27 22:54:08

请教马老师状态机实际操作问题

我现在做一个DS1302,18B20,12864的时钟。
现在各个子程序已经完成,单独用都正常,想做菜单。实际中遇到点问题
就是1820设置12位的时候需要800MS延时。我按键用的你的状态机。
我的理解是中断处理按键返回状态值,假设现在按下按键,当按键程序处理完成的时候返回按键是3应该进入下级菜单调时
可1820转换温度那800MS延时会导致按键程序完成了,还在跑这800MS延时(我按键时间感觉正常不会超过800MS)
导致无法进入下级菜单,请问是我思路有问题还是什么呢,没有1820按键反应很快,加上1820后按键要按很久才有反应,我觉得应该是这800MS的问题

另外想请教我看有的人写的1820没有这个800MS延时,可我的取消延时后不能使用呢?就算设置到300MS也不行,开机显示85度。

machao 发表于 2012-11-28 18:22:35

18B20是我N年前玩过的,具体操作规程现在一下子记不清楚了,但是要延时800ms好像不应该。
一般人从低层写代码控制18B20是做不到的,网上的参考基本上不能实用,或问题多多。
如果是实际产品研发,建议你用CVAVR,它里面有操作单总线的函数,也有具体例子(见HELP)。
如果是学习,建议你先仔细学习单总线的通信操作规程,自己练习写低层,正确的操作18B20,至少把那个“延时800ms”去掉。
或许你写错了,应该是800us。
实际操作18B20一次大约1-2ms应该可以完成的,一次按键过程通常在200-300ms。

kingsor120 发表于 2012-11-28 21:42:44

感谢马老师回复,我现在是在学习AVR,用的ICC
我看1820的资料转换温度时间典型值是200MS,9位精度大概100MS,12位精度750MS,不是程序操作时间,800MS是等待温度转换完成,导致无法正常判断按键。

在请教个问题就是使用你的状态机如果程序中有长时间软件延时是否会影响按键(我的理解是会影响,不知道正确不)?现在判断应该是这800MS导致了按键工作不正常,因为把1820的程序取消后按键反应很快

布丁章鱼烧 发表于 2012-11-29 15:38:35

1、最好别用软件延时
2、按键处理别放在中断里面

kingsor120 发表于 2012-12-2 17:51:55

能不用我也不想啊
只是那个转换温度的几百MS时间不知道怎么弄

lmly 发表于 2013-5-2 16:18:18

我也遇到过楼主类似的问题,最后的解决方法是温度转换完成前关闭中断也就相当于这段时间里按键无效。
页: [1]
查看完整版本: 请教马老师状态机实际操作问题