打印

软件思想问题

[复制链接]
楼主: logokfu
手机看帖
扫描二维码
随时随地手机跟帖
21
logokfu|  楼主 | 2013-1-8 22:45 | 只看该作者 回帖奖励 |倒序浏览
lzqxs89 发表于 2013-1-8 22:32
当遇到问题,虚心向别人请教,能够提高效率!

关键是公司人少,基本没有人可请家教的。或者有些人还很保守,问个问题好像要咋滴似的。我很是看不惯。

使用特权

评论回复
22
lzqxs89| | 2013-1-8 23:58 | 只看该作者
**kfu 发表于 2013-1-8 22:45
关键是公司人少,基本没有人可请家教的。或者有些人还很保守,问个问题好像要咋滴似的。我很是看不惯。 ...

别忘了还有二姨,遇到问题,可以来这里请教。我表示这里的环境很不错哦!

使用特权

评论回复
23
dong_abc| | 2013-1-9 01:00 | 只看该作者
表示每次写代码基本都会把以前的颠覆了。现在求的是用最简单的办法最快的完成任务!

使用特权

评论回复
24
hjs1618| | 2013-1-9 08:50 | 只看该作者
楼主关注软件思想,说明是在进步了

使用特权

评论回复
25
程序匠人| | 2013-1-9 13:03 | 只看该作者
匠人觉得,关于软件思想,需要深刻领悟并灵活 体现在程序中的两个最重要的概念是:

1、状态机
2、模块化

以上两个概念都是大题目,远不是一两句话能够说清楚的,建议多看看这方面的**,然后在自己的实践过程中细细体味。


至于你所举的“AD采样数据不准”的例子,其实不属于思想的范畴,仅仅是经验问题。

一个智能系统,不管是复杂的大型计算机,还是简单的单片机。说穿了就干3件事情:
1、输入(采集)
2、处理(计算)
3、输出(控制)

ADC就是以上所说的第一步(采集)。有经验的设计者应该知道:数据采集过程中可能会有干扰和抖动(不仅仅是ADC,还有其它如通讯、开关信号等),一个鲁棒性好的系统,应该对采集到的信号做消抖、滤波等处理,去伪存真,然后再去做下一步的处理。

使用特权

评论回复
26
cbs525| | 2013-1-9 14:00 | 只看该作者
可以多看看 C语言数据结构和算法 之类的书籍
对你思维的提升有很大好处

使用特权

评论回复
27
明月小厨| | 2013-1-9 14:52 | 只看该作者
其实你说的问题不是软件编程;如ADC
1.信号源有什么特点;正好1.5V左右,还不变化;运放都省掉了;
2.你有什么最低要求;(又慢又不准是最容易的)
3.如果不是上面最容易实现的,你怎么办?至于已经到ADC端口,后续的处理一点都不难,难在前向通道;

4.你把数据采集加来进干什么?
如果只是加加减减完事也太容易了吧;

使用特权

评论回复
28
明月小厨| | 2013-1-9 14:57 | 只看该作者
ADC数据到手了,人能干什么?
如果是一个快速变化的动态环境,需要及时反馈;如自平衡电动小车;
数据到手你要分析它,然后采取措施(输出);
这里面的算法很多都是纯计算的,纯数学的问题;

使用特权

评论回复
29
明月小厨| | 2013-1-9 15:00 | 只看该作者
本帖最后由 明月小厨 于 2013-1-9 15:07 编辑

非常幸运的我们的项目很多部分并不需要如此精确如此复杂;
我们还可以应付;不然我们要回校把数学再学十遍;

使用特权

评论回复
30
明月小厨| | 2013-1-9 15:04 | 只看该作者
传感器:零点,温度飘移,时飘,非线性......补偿;
还没到ADC就已经能搞死很多人了;

使用特权

评论回复
评论
dong_abc 2013-1-9 22:26 回复TA
传感器:零点,温度飘移,时飘,非线性......补偿; 说明书里都清清楚楚的,瞄一眼基本解决问题。采集信号,你采得过人家做传感器的? 
31
明月小厨| | 2013-1-9 15:11 | 只看该作者
经常遇到这样的高手;项目开始了;
1.准备电脑,
2.编译器安装好;
3.要干什么?说吧,我用xxxxxx开始编程?
例说PWM;请给出PWM的参数,写到程序里就完成了;这个参数在哪?
例说ADC,请把电压给我送过来,我每秒转换100万次;

使用特权

评论回复
32
lubing521| | 2013-1-9 16:11 | 只看该作者
多实践,多思考,多逛坛子

使用特权

评论回复
33
ZOUWEN1| | 2013-1-9 21:43 | 只看该作者
程序设计是一个总结的过程,大家多总结,水平就上来了。

使用特权

评论回复
34
明月小厨| | 2013-1-9 22:58 | 只看该作者
我当年就搞了不短时间的传感器——非常失败,非常痛苦; 搞ADC,就是在天堂一样潇洒;

使用特权

评论回复
35
cjseng| | 2013-1-10 00:21 | 只看该作者
看来我是达不到那层次了。我通常是在冥想,想通了再下手。我一般是想这个问题人脑怎么解决,理清思路后再写程序。

使用特权

评论回复
36
shuangjf| | 2013-1-12 21:38 | 只看该作者
实践出真知!

使用特权

评论回复
37
waohp| | 2013-1-12 23:44 | 只看该作者
楼上有几位高手呀,先mark下子,以后慢慢体会。

使用特权

评论回复
38
sysdriver| | 2013-1-13 22:10 | 只看该作者
最复杂的软件,莫过于操作系统了,建议学一学操作系统的一些思想,说说我的一点想法。

(1)每个母体或IC,都有自己的资源,实现这些资源的函数要写出来,俗称底层函数,这些是必须的,你每开发一个项目都是必须的,所以有空了总结一下这些,下次开发时调用一下函数就可以了。不过我看到很多人都没有这方面的习惯,每个新的项目一来就拿上个项目的程序来修改,甚至里面有很多垃圾都不去管它。浪费空间,资源就不说了,还会带来BUG,稳定性和扩展性更得不到保障。

(2)总结出一套为这个IC服务的框架函数,俗称系统函数,比如常用的定时器肯定是要有的,写一个好的服务而不是每次都随便定义几个变量然后在主循环计数。常用的随机数函数等等,写这些服务函数成模块,只要调用函数带参数就可以实现定时功能那样。不过很多人好像不管这些,想到哪里写哪里,用到什么函数就写什么,如果是汇编语言,情况更糟。

(3)标准模块化,模块化要做到,把这个模块加到项目,调用模块函数就能实现功能,把模块移除(即.c和.h),项目中也不会受影响,调用模块的那些函数俗称API。这样的话,什么ADC,IIC,485,按键,LED之类的,都弄成模块。我接过一些项目,有些人根本没有模块,比如把他的按键扫描删掉都要费很大的力气,如果是汇编程序......模块化一定要尽可能的减少相关性。

(4)写软件一定要细心,简洁,高效,软件的规范,命名之类的,这些细节都有可能影响到系统的性能,所以平时就看看一些规范,看看开源代码,看看数据结构和算法,不要小看这些细节,它有可能给你带来效率。

(5)以上4个是跟项目无关但又是息息相关的东西,如果上面的写的很好,如果项目不是很复杂,那就根本不用考虑框架的问题。如果项目很复杂,那么就要思考这个项目该怎么进行了。是要用大循环,还是其中有小循环,系统的堆栈,资源行不行都要考虑进去,怎么实现这个流程,需要状态机吗,等等....这些实现的过程并没有书籍参考,只能靠个人多思考多总结,多做项目。

使用特权

评论回复
39
dong_abc| | 2013-1-13 23:07 | 只看该作者
不管软件还是硬件,都要做成API .

使用特权

评论回复
40
ZOUWEN1| | 2013-1-14 08:52 | 只看该作者

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则