EDN首页   博客首页

最新日志

发表于:2007-9-21 21:50:25
标签:无标签

0

屏蔽线的屏蔽层

屏蔽线的屏蔽层一定要处理好,今天调试时,发现由于屏蔽层没处理好,屏蔽层露着半个毫米,结果导致有根信号线奇怪的和另外的信号接通了,而且时断时通。最后查出元凶就是这半个毫米的屏蔽层。

系统分类: 汽车电子   |    用户分类: 无分类    |    来源: 无分类

评论(1) | 阅读(535)
发表于:2007-9-12 23:50:52
标签:无标签

0

关于符号扩展

今天调试ARM程序时遇到一个符号扩展的问题。在使用语句IO0SET = IO0SET | ( (data) * FlashStartNum)(其中data8位整型,FlashStartNum是一个常量)时,程序运行有问题。程序的目的就是只操作32位口线的某几位而不影响其他位。用在原来的PCB板上就没问题,用新做的PCB就有问题。经过排查,发现了问题所在。原来的PCB只使用了端口的低位,高位部分根本没有。而现在的板子则用了所有的端口。这样的话,就有问题了。虽然datauint8类型,但是由于ARM32 位的,data取反后就会进行符号扩展。如data0xff,取反后data0xffffff00,后果可想而知。改成IO0CLR = IO0CLR | ((uint8)(~data) * FlashStartNum)后即可解决问题。

系统分类: 汽车电子   |    用户分类:    |    来源: 原创

评论(0) | 阅读(617)
发表于:2007-9-10 21:03:41
标签:无标签

0

串口的地线

今天我一位同事遇到一个问题,用仿真器运行DSP程序,DSP串口的通信正常,如果脱离仿真器运行,其他都正常,就是串口通信经常出错。快下班时,他来问我怎么回事,他说他已经查了半天拉,最后也没查出来。我就叫他把现象给我演示一遍。果然如他所说。我叫他脱离仿真器运行程序,并用示波器测一下信号的波形。用示波器一测,发现信号的波形特别差。再用仿真器运行后,用示波器测了一下波形,非常好。这时我就觉得是没接地的问题。于是我去掉仿真器,用万用表量了一下,PC机和PCB板的地线不通,果然是地线的问题。插上仿真器,地线就通了,这时的地线是通过仿真器将PC机和PCB板的地线连了起来。让他仔细查一下,果然是PCB上的地线没有连。记得原来我做的一款无线电台也是用串口通信,其中一个客户买回去,总是通信不上,所有能想到的都让他试过了。因为同在北京,所以就亲自去了一趟。到那以后,看了一下现象,又用自己的设备测了一下电台,没有任何问题。于是我就绕着他们的设备(好像是做手机振动实验的设备,是索尼爱立信在北京的研发部)转了一圈,将他插好的串口拔了下来,看了看串口线,没什么问题。再一看设备上的串口座,居然有一个针没有,仔细一看就是串口的第5脚。经客户确认确实是他们的串口有问题。最后换了个好的串口座,插好串口线,通上电源,一切正常。在查串口的问题时,串口的地线也是一个不能忽略的重要方面。

系统分类: 汽车电子   |    用户分类:    |    来源: 原创

评论(0) | 阅读(1070)
发表于:2007-9-9 22:19:20
标签:无标签

0

关于使用uC/OS-II编制的程序经常复位的问题

最近在使用uC/OS-II操作系统的过程中,发现了一个问题。就是uC/OS-II写的程序经常复位。上网搜,有些人以前已经遇到过这个问题,但是没有一个答案。没办法只好自己找原因。总算功夫不负有心人,花了半天的时间最后找到原因啦。其实很简单,就是由于中断函数处理的不对,没有正确保存和恢复寄存器,破坏了PC、CPSR等寄存器的内容,造成推出中断函数时,程序复位或跑飞。有两种办法可以解决,一种是在中断函数中使用__irq标识,让编译器自动添加保存和恢复可能会被破坏的寄存器;另一种办法是自己写一段汇编语言程序段,实现保存和恢复可能会被破坏的寄存器,然后在汇编语言中象调用普通函数那样调用C语言写的中断函数。希望再有人碰到类似的问题,不会象我一样费这么长的时间来解决它。

系统分类: 汽车电子   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(697)
发表于:2007-9-9 22:11:43
标签:无标签

0

嵌入式软件的开发

现在好多的初学者都在问:学嵌入式软件是先从汇编做起还是从C语言做起。这个问题的答案其实是有前提的,不同的前提,得出的答案也不一样。如果是纯粹是为了学习,没有工作压力,建议从汇编做起。因为这样,会使你的基础更牢固,不至于编了好些年的嵌入式软件,却连基本的MCU内部结构和其工作流程都不清楚。如果是工作需要,必须在规定的时间内完成任务,使用C语言还是有好处的,毕竟可以节省开发时间。业余时间最好还是要研究以下汇编。我最开始是用汇编语言做起的,就最经典的C51单片机(当时连仿真器都没有,都是用串口和IO口看现象,然后再思考问题的出处),虽然很简单,但是帮助还是很大的。现在不管用什么样的MCU都无所谓了,因为毕竟基本的思路是一样的,也就是结构、寄存器、外围设备、指令有区别。什么PIC,什么AVR,什么C51,什么ARM,什么DSP。因为用汇编很习惯了,所以一直反对用C语言。但是后来在网上偶尔看到的一篇文章,改变了我的看法,就试着用C。第一个项目做完,就感觉用C编程还是很方便的,并且执行效率差不到哪去,可能还会更高(取决于编译器)。所以现在也一直在用C。用C语言还有一点就是可以使用OS,用汇编就不容易了。总的来说我还是建议先从汇编做起。

系统分类: 汽车电子   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(474)
发表于:2007-9-9 21:34:10
标签:无标签

0

上拉电阻的选择

     上拉电阻要根据实际需要选择阻值。选的太大会造成在输出电流中使芯片输出的电流占的比例加大,使芯片温升增加并使芯片工作异常;如果选的太小,又会使功率消耗加大,造成电源的功率损失,不利于节约能源。还有一点,就是当信号太快时,最好上拉电阻选小一点,这样使信号的边沿比较陡,容易识别(因为芯片管脚本身的负载电容是不由我们决定的),但也要见好就收,如果边沿太陡,容易出现信号完整性方面的问题。

系统分类: 汽车电子   |    用户分类:    |    来源: 无分类

评论(0) | 阅读(425)
总共 , 当前 /