向农 发表于 2011-3-24 22:35

我想辛昕的经历至少可以告诉现在在校的学生,尽可能多接触一点儿东西,都是用得着的。学校里老师教51那是课程设置图省事的问题,只学51是绝对错误的。楼主可以教育一下学弟学妹们。
今天才发现辛昕是如此细腻而又能将自己表达出来的人,道歉哈。
工作中的人除了钱比学校多些,其他看不出比学生好。但是人长大了,就必须出去为稻粱谋。
巨大的反差的确需要时间适应,每个人都有这样的过程。
加油啊!!!

jxb01033016 发表于 2011-3-25 10:36

回复 21楼 向农 的帖子

大学里老师号召51,是为了普及大纵化的需要,也并不是老师的错.
如果一开始就搞DSP,很多学生都在那里云里雾里,

80C51本身的意义并不大,并且以后占有的市场越来越少,
但是80C51是好的入门,
有了这个门槛,为向高的层次发展的提供了基础.

但是,大学并不是培养人才的地方,培养的都是人才的毛坯.

得在企业里磨练个3-5年,就定刑了.

luckfrog 发表于 2011-3-25 14:31

遥想当年!

k410533234 发表于 2011-3-25 21:41

向楼主学习……

辛昕 发表于 2011-3-26 12:29

简单说说,下午去图书馆安静想事情

关于那个复位的问题,我说一下:事实证明不是那个问题。
忘了是谁,反正不是我,老板或者阿彬,他们俩不知怎么试着试着把那个例程里的字和图样跑通了。
好像就是我那天下午快下班的时候,当时我还在折腾时序的问题。
后来他们一阵欢呼,我跑过去一看。真成了。
我突然像白痴一样猛问咋弄的,咋弄的。
老板说,释放总线,我当时一听基本就懂了,就是类似于以前数码管的消影。
老板之前没想到这个,是因为他以为STM32这类的高级单片机,其IO口是可以自动释放的。

然后就接着弄矩阵键盘识别了。
这个东西,在51上我早就跑通了。
无奈,直到昨天下班前我还没搞定,而我是在关电脑前想通了为什么,都怪那个该死的判断条件。
于是我忽然总结出:
对于一个程序,必须流程图先行,不然你一点一点改,乱七八糟,就像WINDOWS的漏洞越补越麻烦,所以我从来不打补丁。
而对于流程图,其实不必过于细节,像我以前的51程序那样。
对于流程,最关键的是 循环 和 条件,循环而言,就像数学归纳法,三要素,起点,终点,递归方式。
条件,哈哈,关键就是条件——我那个该死的程序就死在这里。

另外就是,其实心里挺担心,因为老板跟我说,到时候让我弄简单点的系统,我想他说的是51,弄51倒好,符合我的规划,但是,我不想因为能力不足而离开STM32.说到C语言,其实我觉得,我在语法上的了解比阿彬要好,但是,好像我的进度总是比不上他。
后来想想,也许老板的看法就是对的,我的C就是要加强。
我想,这重点不在于语法,而在于解决问题的方式。
比如我刚解决的DS18B20的初始化问题。
上周末我是那么傻呼呼的,过去我一直都这样,总是把调试放在对时间的拿捏上,直到刚才,我停下来,用上班学来的一星半点经验,哈哈,真没想到,真让我发现了问题的关键,并利用预处理的方式解决了。

所以,我觉得,我必须学会怎样找出问题的关键,在这几天老板带我们调例程的过程中,我从他身上学到了好些很有用的方法和思维方式。
比如说,发现一个地方跟你学到底的基础知识相违背,一般情况下先怀疑你的理解对错是第一反应,但是,与其在原程序上修改,还不如找一个非常简单的同类程序段验证你的怀疑,从而排除一系列怀疑,直达问题所在。

今天又有招聘会,我没去,同学说我好淡定。其实这几天我心里都在想,这的确是一家小公司,前途未明,工资不多,能否转正未知。但至少,我觉得,在这个岗位上我有很多东西可以学,我现在的能力连这个岗位都无法胜任,我还添什么乱,老老实实干一阵再说。
该吃饭了,下午到图书馆静静想点东西。
谢谢大家的关注。

辛昕 发表于 2011-3-26 12:32

原帖由 向农 于 2011-3-24 22:35 发表 https://bbs.eeworld.com.cn/images/common/back.gif
我想辛昕的经历至少可以告诉现在在校的学生,尽可能多接触一点儿东西,都是用得着的。学校里老师教51那是课程设置图省事的问题,只学51是绝对错误的。楼主可以教育一下学弟学妹们。
今天才发现辛昕是如此细腻而又能 ...

好端端,为啥道歉,老大?
钱?我现在还真没想这个问题,只要能经济独立就成。

学校跟外面最大的区别是,我说个简单的例子:
昨天下班跟阿彬聊毕业设计,他跟我同届同学院,不过我机械,他信工。
他说其实以前也有很多毕业设计最终做不出实物,只是交了论文,分数低点而已,而我跟他都不想这样混过去。

这就是学校。

如果是在公司——那就没那么便宜了,行就行,不行就不行。

这就是区别,而我一直觉得,做电路的人,少扯废话,把自己想到的东西部分或者全部实现,真正跑起来,那才是真本事,硬道理。

所以,我选择到外面去。

[ 本帖最后由 辛昕 于 2011-3-26 12:35 编辑 ]

向农 发表于 2011-3-27 21:48

"今天又有招聘会,我没去,同学说我好淡定。其实这几天我心里都在想,这的确是一家小公司,前途未明,工资不多,能否转正未知。但至少,我觉得,在这个岗位上我有很多东西可以学,我现在的能力连这个岗位都无法胜任,我还添什么乱,老老实实干一阵再说。"

你真的很强!
总觉得现在的学生最大的问题就是缺乏自知之明、心比天高,清楚自己、清楚外界,你已经比大多数同龄人强了。

辛昕 发表于 2011-3-27 23:51

回复 27楼 向农 的帖子

有一种情况比较危险:
假如我不幸活不过实习期,假如我找工作还是找不到。
假如毕业了,学校把我撵出宿舍,假如,,假如我那剩下的几百块花光之前拿不到工资,那我就惨了~~~

chenzhufly 发表于 2011-3-27 23:51

:loveliness:

你很有主见!

但是哥还是建议你,能进大公司还是进大公司的好
很多东西在小公司是学不来的,比如制度,流程,规范等

辛昕 发表于 2011-3-28 13:18

诡异,除了诡异,我还是只能说诡异

那个,是这样的。
先不说程序问题。
我拿同事弄好的程序,在他那边一切好好的。
途中我试过换用我用的开发板,但是只要在他那边,一切都很好,到了我这边,就不行了。

LCD上就是显示不出东西来。
应该是压根没反应。不知道为啥,我试图检测硬件,可惜这唯一的一个万用表电量不够——而且,既然在人家那边行,我就不该怀疑硬件啊。

然后,我想那我是中毒了吧。是的是的,早上我就在一键还原。
那事情就更诡异了,估计是跟我的U盘有关。
我们在一个例程基础上修改,诡异的是,我把我修改好的拿到另一台电脑上去,额滴神,居然它自己恢复到我原来没改的原例程,后来又很神奇地在U盘原存的那个例程里找到了我修改好的程序:faint:

再后来,回到我自己这边的电脑,额滴神,居然刚好反了过来,原来在那台电脑上覆盖了的恢复了,原来没事的又覆盖了......
我能说什么呢?
一键还原。途中因为这里是无线路由,加上没光驱,各种折腾......

然后我再不敢用U盘,各种PDF阅读器,QQ(没U了,只好用它传文件了)
等等等等,还有360浏览器,总算装好了。
试了我自己的,还是不行,那就算我的程序不行吧。
我又要了同事做好的程序来,额滴神,还是不行啊.......

我在这里坦白一下我都干了什么。。。。
坦白说,我是偷偷开着QQ,不过这几天基本不扯淡了。。。。
然后我偷偷上咱论坛求救或者查看自己的版块。
再然后,恩恩,我一键恢复后没有立马装360.

除此以外,我没干别的事情,咱就那么倒霉,中了这么犀利的毒呢?

还是说,,天啊,我真的不想说是设置或者程序有问题。
因为那就做好现成的,,,而且!!它不是U盘传的,是QQ。。是在太平洋下的,,对方是WEB QQ。。。可是,为什么就是不行呢?
--------------
不过有时,饿,想起我刚买笔记本那会的倒霉事,....算,,,我继续百度,看看万能的百度上有没这种事

辛昕 发表于 2011-3-28 13:19

刚才,老板来了,说还有一种可能
只是项目文件一模一样,可能整个IAR的设置文件不一致,但这个上哪找啊?
百度,,,,

scbzlijun 发表于 2011-3-28 13:21

回复 22楼 jxb01033016 的帖子

jxb01033016言之有理!如果一开始就什么ARM、DSP。。。。这些根本不靠谱,纯粹的炒概念的,到头来什么是ARM、DSP都不知道,根本就拿不出什么实物出来!
另:我觉得“向农”貌似有点瞧不起应届生!大家都是这样过来的,一开始是没什么经验,但他们在学校里学的是一种学习方法,知道如何获取知识,到企业后很快会上手!个人感觉您(向农)老人家总喜欢瞧不起应届生,之前也说什么坚绝不招应届生。。。。。(仅个人感觉您老人家有这么一点点):)

辛昕 发表于 2011-3-28 21:04

回复 32楼 scbzlijun 的帖子

那啥,向农不用加引号的,那她老人家就叫 向农。。。。。
另外,其实乃没理解她的意思。。。。
---------------
至于瞧不瞧得起这种问题,其实我不太当一回事的。
脸是自己挣的。

向农 发表于 2011-3-28 23:08

很欣赏辛昕说的,脸是自己挣的,其实还可以换句说法,脸是自己给的。
正因为我是从应届生过来的,更清楚应届生是怎么回事,总不能让我说应届生就是比有经验的人强吧。
我从来不轻视暂时没有足够的知识和能力的人,我瞧不上的是不努力、自视过高、没做什么就先挑待遇的人,遗憾的是,这几年的应届生中这样的人比例太高。
辛昕是我所“尊重”的,虽然他也是应届生,但是他努力、脚踏实地,这样的人哪个老板又不喜欢呢?

辛昕 发表于 2011-3-29 08:44

回复 34楼 向农 的帖子

:titter: 介个,太看得起我啦,哈哈~~
其实话说昨天还很惊魂来着。。。
诶,早上有点困,接着趴着一会,啥时候有感觉了再写哈。。。

没准这贴更新到不知道什么时候

辛昕 发表于 2011-3-30 20:02

接着说——

上次,写的时间应该是周一中午。
那件事情,后来解决了,虽然我实在不知道为啥?
老板回来后,说,上次他说错了,扫描端和读写端弄反了,于是我就反过来写,实际上,在处理上没有太大差异。
所以,这个,这个,我想,可能就是因为这个问题,然后就搞定了。
有点儿莫名其妙,是吧,但我没能力也没时间去研究为啥错了,我只能抓紧时间找到可以对的设置和写法。
-------------------
然后这两天,进行地挺顺利的。昨天,接着研究12232的显示原理——因为此前我们的例程,是显示固定的字样,也就是纯粹取字模。
昨天下午,我们和老板一起研究,主要是我问的,阿彬那小子喜欢问我,但是不喜欢问老板。
以至于吃饭的时候,老板说,我发现他很多不懂(这说的是我),而你(阿彬那小子)好像都懂的样子。

接着说。昨天经过一折腾,我们基本弄懂了12232的显示顺序和原理。
当时是下午4点多一点,我们本想在下班六点前搞定,后来没搞定。
今天早上,照例遇到一些奇奇怪怪的问题。
比如说,先前写的例程,可以显示字模,但不知道为什么当我加入新的按键识别程序后(这一部分是独立的,因为调试的时候,我可以直接跑到显示字模的位置,但是就是显示不出字,郁闷了好久。)
调整了好久,无果。
最后没办法我只好调出原例程,在原例程上加按键识别程序,怪事,它居然就可以显示了。
于是下午,开始干正事。
原以为万无一失的按键识别程序已经搞定了,没想到还是调试了好些时间。
其中的关键有几个地方。一个跳出循环的方法,一个是一些数组下标值的调整,额,这个都不是大问题。
真正麻烦的问题是,也就是最后这一步,下班前做到这一步。下一个贴说

辛昕 发表于 2011-3-30 20:19

在一个循环里,有个变量似乎无法被改写。

首先简单说说我用的开发板和调试环境:
我们用的板子,原先是老板做过的一个产品。
现在我们只用上面的4×3矩阵键盘 和 12232液晶屏。
我用的方法是,用一个容量为10的数组(因为老板说,假设输入的最大个数是10)
然后在一个循环里,依次调用一次按键识别程序,读取它的键值。

软件是IAR EWARM 5.30版本。

在说程序的问题和细节以前,先简单说一些仿真的情形。
这个是通过一个JTAG接口可以在线仿真的。
但是呢,因为一个按键识别的程序肯定不是一两步可以完成的,我试过用 STEP OVER一步跳过整个按键识别的程序,同时手一直按着某个键盘,可是我发现,依然不能读出该键值。
也就是说,这个在线仿真,效果真有限地说。

简单说说这一个循环的细节。
循环开始,用一个变量接受来自识别程序的返回值,就是键值。然后根据它来判断:
如果为0,意味着没有按键按下,所以继续循环,下标不变,继续等待按键按下。
按键按下后,判断数值,如果是11号,它的符号对应于0,于是把0写进数组的这个位置里,然后下标加1,continue。
还有就是 星号,则删除掉上一个位置的数值,然后把下标号回到上一个位,继续continue,这也就做到了删除“上一个”输入。
然后,如果是 #号,则break出循环。
当然,在循环里,每一次循环的末尾,我都会调用一次显示子程序,在指定位置,显示指定的数值就是当前数组位置里的数值,就是键值。

现在遇到的问题是:
我第一次一按下去,就一下子全部显示同一个数字,根本不给我机会输出下一个数值。
比如说,,按1
1111111
按4
4444444
.。
我折腾了好些时间没搞定。
贴上来一部分程序代码,然后说说我仿真的时候遇到的问题。

循环体的开头:

while(1)
{
      
      //读取键值
         value = Get_Keyvalue();                  ................................................1
         
      if(!value)      //若无键按下,退出继续;...............................................2
            continue;
      
            if(value == 11)//11号键,键值为零;
            {
                key = 0;
                i++;         //因初始值为0,直接下一个位退出
                continue;
            }
if(value == 10) //按下星号键,执行删除操作
            {
                key[--i] = 0;
                continue;
            }
            if(value == 12) //若按下‘#’键,直接退出
                break;
            //如果以上都不是,把键值读入当前数组单元.....
            key = value;
            
            //调用显示函数,第一个变元是数字字符库;
            //第二个是数字顺序;
            //第三个是显示数值;
            show(Dictionary,i,key);
            i++;
            if(i == 10)//读满十个数字退出
                break;
      }

当程序进行到第一行的时候,WATCH窗口显示,value这个变量是 unaviable,就是不可用不可修改的状态,只有到了第二步的时候,才有数值,(每次都是0,这倒是。但是这种状况下,我在仿真里手动修改值,这个值已经无法使用了,因为它直接回到第一句,再到第二句的时候,手动修改的值才用的上。)
在上面这种手动修改的情况下,在软件里改,我就可以在12232上看到我想要的效果/。但是一旦让它自己跑,就不行了。
我一按下一个,就全部显示出同一个数。

-------------------------
我觉得问题的关键出在
每一次新的循环的时候,value里的数值不知为什么没有给修改,而是保留着原来的数值,结果就一直往下显示同一个值了。
我曾经考虑到变量的生存期问题,可那是对应于子函数的,对于一个循环,我搞不太清楚。

jxb01033016 发表于 2011-3-31 09:38

你的按键识别有问题

一般来说分5步曲.

1,扫描,如果有按键,DELAY10MS,再次扫描.
2,如果第二次扫描检测有按键,则确认这个按键有效,存入,否则路过而已
3,等待按键释放,如果该按键一直不放,那你就一直扫描他,直到检测到放下.
4,当检测到按键释放,再DELAY10MS,进行确认,如果还没有释放,再次路过,回到第3步.否则回到第5步
5,处理按键功能,处理完后再回到第1步,如此循环往复.

看看你的程式,连个DELAY都没有,CPU多次扫描同一个按键了,肯定不行滴...

其实,我写的这些都是初级菜鸟的做法而已,
很多单片机的教材都推荐这样做的.

我个人通常用消息机制来做.专门搞模块集成,哈哈!

 

辛昕 发表于 2011-3-31 20:38

回复 38楼 jxb01033016 的帖子

是啊,今天中午老板一提,我白痴的发现,我忘了消除抖动。
然后,老板建议的做法跟你说的是一样的。
当然今天还遇到一些白痴问题,再次证明,我下次必须老老实实写流程图。

不过,这么一折腾,这个活也基本完成了。

-----------
PS:延迟是有的,我把按键识别都封装在子程序里,只是,做得不够好。
今天被 richengfeng 帅哥一提,俺解决了。

[ 本帖最后由 辛昕 于 2011-3-31 20:40 编辑 ]

辛昕 发表于 2011-3-31 21:38

简单说说今天

上一个贴说了,今天也是折腾了不少事情,不过还算好,我手头的进展比较好。
我把程序调通了,后来,为了加速按键判断的方法:原先被richengfeng提醒后,我调整了延时间,所以解决了连按的问题——
然而那个不是通法,因为直到那时候我对付消抖的方法仍是单纯的一个一个按键处理。
后来老板来了,看了我的问题,给我提了一个不一样的建议,基本上就跟zoran说的差不多。
就是为了加速判断,一次读到数值延时后就可以确定,另一次读取从按键松开为标志进入判断。

------------------
在这里遇到一些很纠结的问题。
后来,老板帮我调通了。虽然我也不晓得他的做法具体的内在思维方式,但是我一直在很努力地跟上他的思路。
事实证明,没有流程图是很危险的。
我之前曾经说过,一个循环,最重要的就是起始和结束。
按老板的说法,如果起始错了,那就全错了,如果结束错了,那就最后会出乱子。
今天我的问题就出在这里。
这件事让我下决心,一定要写流程图,就从这次开始,我一会就把今天写的程序的流程图写出来。

刚才调试的时候,我一直很忐忑的。
比如说,之前老板让我们对每次做好的步骤存盘,我们存了,可是,我发现,我存的很乱,今天下午调试,老板让我调出此前做好的来调试,我居然半天找不到,我存了两三个版本,居然,,,,按老板的说法,,他看我找真觉得恐怖。
所以,明天回公司,我第一件事要做的就是逐个检查我之前备份的不同阶段的结果。
然后,用一个TXT写一个类似于 记录日志 一样的东西。
要不然,不仅老板看着恐怖,连我都恐怖。而且更恐怖。
--------
还有就是在 OPTION里加载头文件链接的方法。
这其实是此前想自己学会建立项目文件的时候遗留下来的问题。
因为这事,我每次保存,改名字后,导致文件路径不同,我居然每次都要重新复制一次,虽然很麻烦,但我一直放着,也没折腾。
老板说的对,这不是麻烦死了~

另外就是:
那个板子,那就是真正的仿真,我昨天那样的结果,估计是因为我的程序本身有问题。

最后忍不住想说的是:
虽然我总是问老板各种各样的问题,显得我很多都不懂,但是我觉得,问是应该要问的,要大胆问,只是,我确实应该拿捏一下哪些该问,那些不该问。
能否怎样减少问的次数,更重要的,减轻问的问题的弱智程度。

因为想赶紧把任务完成,我也就没去理它,导致我
页: 1 [2] 3
查看完整版本: 实习进行时