|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有帐号?注册
x
单片机开发中应掌握的几个基本技巧
2 }! Z. p8 B) m" y/ }+ }. j* T* S# T# C1 D
; ^$ B# W& C8 Q( l; W n' f, [% F5 u$ M( L在单片机应用开发中,代码的使用效率问题、单片机抗干扰性和可靠性等问题仍困扰着工程师。为帮助工程师解决单片机设计上的难题,《电子工程专辑》网站特邀Holtek香港分公司工程部处长邓宏杰先生担任《单片机应用编程技巧》专题 的嘉宾,与广大设计工程师交流单片机设计开发经验。现根据论坛中的 归纳出单片机开发中应掌握
) y4 }: R5 a1 A1 p4 h" j* h的几个基本技巧。! B4 ]4 y$ c1 ?# A
& K- l5 G( M1 \1 s7 G) N+ x* q {6 b, a5 Y/ [9 [7 N2 J/ D
一、 如何提高C语言编程代码的效率
$ B0 J | k H9 Z7 X1 G; C/ m" W: R: O) U5 Q" l+ O7 C
: K( P* W7 U9 ~) G9 h+ |6 i邓宏杰指出,用C语言进行单片机程序设计是单片机开发与应用的必然趋势。他强调:“如果使用C编程时,要达到最高的效率,最好熟悉所使用的C编译器。先试验一下每条C语言编译以后对应的汇编语言的语句行数,这样就可以很明确的知道效率。在今后编程的时候,使用编译效率最高的语句。”2 O% H+ A6 q6 {* F2 _. d) U
. t* t, T# x$ U9 g/ G3 H; I$ O. j* g3 f; t- _- B/ A ~
他指出,各家的C编译器都会有一定的差异,故编译效率也会有所不同,优秀的嵌入式系统C编译器代码长度和执行时间仅比以汇编语言编写的同样功能程度长5-20%。他说:“对于复杂而开发时间紧的项目时,可以采用C语言,但前提是要求你对该MCU系统的C语言和C编译器非常熟悉,特别要注意该C编译系统所能支持的数据类型和算法。虽然C语言是最普遍的一种高级语言,但由于不同的MCU厂家其C语言编译系统是有所差别的,特别是在一些特殊功能模块的操作上。所以如果对这些特性不了解,那么调试起来问题就会很多,反而导致执行效率低于汇编语言。”
8 e8 H. K- F# |/ U6 A$ G4 g8 D, u# y W, F
$ v8 u8 q8 P# i% B0 b二、 如何减少程序中的bug? Q; U+ w5 o3 }( f9 ^( S2 T
* Y t! R! S7 P- Q
; ?' X" I) |0 c+ P, m% \' ]* o对于如何减少程序的bug,邓宏杰给出了一些建议,他指出系统运行中应考虑的超范围管理参数有:
8 T# u& S: j8 {6 M- p& @# q- u; f* ^4 N2 y( f9 _/ o
# i5 x5 m" v R1.物理参数。这些参数主要是系统的输入参数,它包括激励参数、采集处理中的运行参数和处理结束的结果参数。合理设定这些边界,将超出边界的参数都视为非正常激励或非正常回应进行出错处理。 F5 B, N! i3 f
% f5 x' Y" j" G$ s0 [
) J$ f6 {$ ]: E2 K1 `7 `8 V! r2.资源参数。这些参数主要是系统中的电路、器件、功能单元的资源,如记忆体容量、存储单元长度、堆叠深度。在程式设计中,对资源参数不允许超范围使用。
4 G3 i- J- `4 i# v$ a$ ?+ W* m3 x( n8 |4 N( {2 U* _
* w! y0 l7 b7 M6 j3.应用参数。这些应用参数常表现为一些单片机、功能单元的应用条件。如E2PROM的擦写次数与资料存储时间等应用参数界限。
% V8 N5 L @/ {' l/ r2 P2 j/ L! N4 Y
1 n$ \7 Q0 D/ N) E* x
4.过程参数。指系统运行中的有序变化的参数。
T+ G; Z* M+ m% { H. b" B/ \1 k2 t1 p3 p
+ G! x3 E/ z8 i% Y三、如何解决单片机的抗干扰性问题& Z) c* @' d6 N
) X' e8 V5 U6 R( M( M9 `5 W# ^
/ _, o2 [$ u# d. e) a6 b邓宏杰指出:防止干扰最有效的方法是去除干扰源、隔断干扰路径,但往往很难做到,所以只能看单片机抗干扰能力够不够强了。单片机干扰最常见的现象就是复位;至于程序跑飞,其实也可以用软件陷阱和看门狗将程序拉回到复位状态;所以单片机软件抗干 扰最重要的是处理好复位状态.一般单片机都会有一些标志寄存器,可以用来判断复位原因;另外你也可以自己在RAM中埋一些标志。在每次程序复位时,通过判断这些标志,可以判断出不同的复位原因;还可以根据不同的标志直接跳到相应的程序。这样可以使程序运行有连续性,用户在使用时也不会察觉到程序被重新复位过。; q6 @: Z/ e; ]2 e
9 }; ]8 n$ e* ^- o
/ P' m( t9 ~9 P9 q, b四、 如何测试单片机系统的可靠性
' F N1 z/ @; F8 L: h3 E0 L+ m5 }
1 |$ J5 Y2 o& ]5 E
& q6 n+ ^( A9 A9 L1 ]6 w有读者希望了解用用什么方法来测试单片机系统的可靠性,邓宏杰指出:“当一个单片机系统设计完成,对于不同的单片机系统产品会有不同的测试项目和方法,但是有一些是必须测试的:0 \. x @( X9 l0 A% Y$ ]5 C
" o, s" Z5 m4 m* X
: v+ p9 d$ N) _1 P
1.测试单片机软件功能的完善性。这是针对所有单片机系统功能的测试,测试软件是否写的正确完整。
b, e- Q# r! {% k. a/ p
) q+ W: l3 ]* {( v: ~4 i. ^0 ?
% @! D X1 ~2 e2.上电、掉电测试。在使用中用户必然会遇到上电和掉电的情况,可以进行多次开关电源,测试单片机系统的可靠性。
" Q, I: [( y' X9 v1 n5 _
+ l4 @2 l) w8 O6 x) ]6 b+ Q- V7 m! R" _6 V* ` v
3.老化测试。测试长时间工作情况下,单片机系统的可靠性。必要的话可以放置在高温,高压以及强电磁干扰的环境下测试。" {; u' {8 U* J* B7 {8 J( E M
7 I1 c1 `& m G
( o) t% W& Q6 _. M4、ESD和EFT等测试。可以使用各种干扰模拟器来测试单片机系统的可靠性。例如使用静电模拟器测试单片机系统的抗静电ESD能力;使用突波杂讯模拟器进行快速脉冲抗干扰EFT测试等等。$ I% |: [; }$ {3 \. P% d$ `& }( G
2 U/ r U8 |* Z. I# [+ s# V
: i6 `! e% Q0 p- ^! F: @
邓宏杰强调:“还可以模拟人为使用中,可能发生的破坏情况。例如用人体或者衣服织物故意摩擦单片机系统的接触端口,由此测试抗静电的能力。用大功率电钻靠近单片机系统工作,由此测试抗电磁干扰能力等。” |
 手机扫码浏览
|