收获和教训的一天配置ds1401

今天是我心情最灰暗的一天,可是却让我得到了一次很大的收获 今天移植了一个gpio驱动ds1401,一个单总线芯片,从今天下午开始,开始不知道使用的是那个gpio,因为任务上说的是 gpio3,可是我看powerpc8377的手册,上面只有gpio1,gpio2,始终没有发现有gpio3,又不敢问经理(因为如果你问了, 可能会得到“这么简单的东西还来问我,连这都不会,还怎么做开发呢?”,因为经理前天已经给我说过了,但是我因为 不停的喊令峰,让他给我看我的问题,因此当时经理就说,你是一个开发人员,不是测试人员,问题要自己解决,不能一 直依赖别人。 最后我问了经理,他给我说是gpio1-3,我才知道,可是这时已经下午3:30了,后来我就试着改写,因为我心里没谱,毕 竟这是自己第一次做对powerpc底层控制的一个小项目,要对powerpc的gpio来操作了。 最后改写了原来代码的那段gpio控制的底层程序,一直出问题,但是发出去的信号,ds1401一直没有回应,就这样调到了 下午的6:00,后来经理说了句对复用管脚配置了没,我才发现SICRH(实际上是SICRL)没有配置,配了一下,但是用 printf来打印,却始终没有发现引脚上有信号数据,就这样一直到了下午的7:00。 最后拿来示波器测试,但是while(1)中确没有设置正确,吾把SET_PIN_DIR和SET_PIN_DAT当成了设置1和0的功能了,测试 结果gpio没有反应,最后,导致了经理的介入,后果很严重,总之,程序中确实有非常多的不妥,但是最终我发现的原因 却是使用printf输出的问题,我把printf全部去掉,就可以了 printf确实把我害苦了。。 这次程序的移植是我的最大失败,经理说了很多,我的书写格式有很大问题,马虎,我太马虎了。 记录如下: 1.把设置某一个位弄成了设置一个字(就是本来应该使用读取数据,然后把读出来的数和想要设置某位的数 或/非,弄成 了直接赋给了寄存器一个数,从而把reg的其他位也给设了) 2.宏定义名称和数据不对,本来要设置 #define SICRL_OFFSET 0x114 确弄成了这样 #define SICRH_OFFSET 0x114 3.就是那个while(1)的马虎,可看如下代码: while(1){ SET_PIN_DIR(1); US_DELAY(tF); SET_PIN_DAT(0); } 而正确的是这个: while(1){ SET_PIN_DIR(1); US_DELAY(tF); SET_PIN_DAT(0); US_DELAY(tF); SET_PIN_DAT(1); }
原文地址:https://www.cnblogs.com/fishoneseaatblog/p/2272698.html