历史上的今天
返回首页

历史上的今天

今天是:2025年02月11日(星期二)

正在发生

2020年02月11日 | AVR单片机应用经验总结

2020-02-11 来源:eefocus

使用更好的器件只是为设计实现一个好的系统创造了一个好的基础和可能性,如果还采用和沿袭以前传统的硬件和软件设计思想和方法的话,是不能用好AVR的,甚至也不能真正的了解AVR的特点和长处。


功能越好的器件,需要具备更高技术和能力的人来使用和驾驭它。就象一部好的F1赛车,只有具备高超技术的驾驶员才能充分体会到车的特点,并能最大限度的发挥出车的性能。


AVR具有上手入门快,开发方便简单的特点,但要充分体会和发挥AVR的优点,还需要应用工程师本身的硬软件设计开发能力的不断学习、实践提高。


“外行看热闹,内行看门道”,对于有一定基础的嵌入式和单片机系统设计开发的工程师,不妨先简单尝试一下AVR。


开发环境与工具:PC+下载线+实际的系统板


PC上的开发软件:


AVR Studio(Free)汇编+汇编调试+高级语言调试+软件仿真


ICC、CVAVR、BASCOM-AVR 高级语言程序开发+程序下载。其中一个购买正版全功能,作为主要的开发环境,其它使用DEMO版,作为辅助及参考。


AVR ISP下载线:


STK200 and STK200+ and STK300 ISP programmer。通过PC的打印机口,采用ISP技术将系统运行代码(HEX、BIN)和数据写入AVR芯片的Flash和EEProm中,编程AVR的配置熔丝位和加密位。支持决大多数的AVR芯片、以及ATMEL的51兼容芯片89S8252、89S52等。在ICC、CVAVR、BASCOM-AVR、BASCOM-8051中都内含对该下载线的支持程序。免费专用的下载程序:SLISP、PonyProg2000等。


尽量不使用仿真器的建议:


在开发和调试系统程序时,有许多人完全依赖于仿真器,一旦离开了仿真器时就感觉无从下手。其实,由于AVR的Flash存贮器可方便的使用ISP技术在线的多次擦写,因此建议尽量不使用(依赖)仿真器来开发和调试程序。


在实际开发过程中,程序的调试可以从下几方面入手:


现在的高级语言编译器(如C编译器)可以产生效率很高的机器代码,因此建议大家尽量使用高级语言编写系统程序。


使用Atmel公司提供AVR Studio软件模拟仿真环境,以及其他的软件模拟仿真环境(BASCOM-AVR)。


尽可能使用高级语言编写系统程序。


利用目标板上的LED、LCD或异步串口。见附件“没有仿真器的情况下如何开发AVR”的介绍。


提高硬件设计的合理性:


尽量合理和充分使用AVR片内的资源,如EEPROM、A/D、内部的RC振荡源。


尽量采用串口通信连接的外围器件,大容量的存储器、LCD控制器、打印机、不用8279(LED数码管+键盘)而使用7279等。除了必须外扩RAM(如语音和图象),一般不提倡使用并行扩展(573+译码电路),减小硬件和连线以及PCB板上错误的出现概率,同时也提高了系统的可靠性。并行扩展向串行扩展是发展趋势。现在有大量的新的外围器件采用高速的串行接口,如A/D、D/A、RTC、存储器等。


尽量使用以及在目标板上预留ISP程序下载接口,或使用IAP技术。


优点:ISP接口与I/O的兼容性比JETAG好。


缺点:不能在线调试


注意和掌握AVR配置熔丝位的使用:


. 系统晶振的选择


.BOD的使用


.启动延时


.Mega8的PC6引脚,RESET与通用I/O的转换


.JETAG接口和通用I/O的转换


.启动向量的转换,BOOT-LOAT区大小的设置


提高硬件可靠性的考虑:


.尽量采用片内晶体、采用低频率的系统时钟、振荡电路的输出小幅度。


.选择合适的启动延时参数


.使用BOD、片内的看门狗


.合理休眠方式的使用


.不用I/O口设定输出低电平


.利用内部的EEProm和寄存器MCUCSR判断复位标志,进行不同的处理


提高软件设计的能力和水平:


尽量合理采用高级语言设计编写系统程序。有许多人认为使用汇编写程序比较精简,而用高级语言开发会浪费很多程序空间,其实这是一种误解。对一个有经验的,而且非常熟悉某种单片机的汇编高手而言,他是能写出比高级语言更精简的代码。而对汇编不是很熟的开发者、或突然更换了一种新的单片机,您能保证一定可以写出比高级语言更简练的代码吗?


高级语言的优越性是汇编语言不能比的:


.程序移植方便


.程序的坚固性


.数学运算的支持


.条理清晰的结构化编程,程序的可维护性。


.可协同开发软件,开发周期短。


现在的高级语言编译器(如C编译器)已可以产生代码效率很高的机器代码,因此建议大家能用高级语言实现的程序尽可能使用高级语言写,在对速度和时序要求特严的场合可以采用混合编程的方法来解决。


更深入和全面的掌握各种串行通信协议的规程:


嵌入式系统目前以大量的使用串行接口外围芯片和各种通信接口,如RS232、两线(I2C)、三线(SPI)、单总线、USB、CAN、TCP/IP等。开发人员和程序员应了解低层协议,熟悉硬件怎样和如何实现低层协议,如何定义可靠的上层应用协议,以及低层协议驱动同上层应用协议之间的接口设计(中间层软件的实现)等。


硬件工程师的软件编写能力要提高,采用标准程序编写方式、完善的软件整体框架的设计、良好的数据结构和程序结构系统。(计算机软件专业的程序设计员对硬件不熟悉、大部分是在操作系统支持下编写软件,对低层接口和协议的驱动层以及接口也不了解,往往也编写不出好的单片机系统程序。)


通信接口的编写应尽量


.采用中断+缓冲区,


.分层+结构化设计,


.尽量不使用轮循方式(降低AVR的效率)。参见URAT(RS232)驱动+中间层软件示例。


采用好的系统设计模式:


尽量不使用传统的前后台(中断)系统设计模式,任务之间相互影响和干扰,无法定时操作。如设计一个采用动态扫描方式驱动的8位LED数码管显示+动态扫描的4*4矩阵键盘。


采用TimeTip+状态机设计+CASE结构,实现多任务并行运行系统设计方法。或时间触发式的系统设计。(见:《时间触发嵌入式系统设计模式》中国电力出版社 2004.6)


移植小型嵌入式操作系统,如UCOS-II。在网上有些免费的基于AVR的简洁的操作系统。


提高C语言的编程能力和软件应用水平:


熟悉和用好C中的数据结构体、指针应用、内存管理等较高级的应用。


熟悉和了解你所使用的高级语言开发平台的特点。这些平台是针对某一类处理器的,包含许多特殊的不兼容的语句和扩展的结构、语句、函数等。尽管使用方便,但由于其不透明性和时间的不确定性,因此要合理使用。如C中的getchar()、putchar()等。


AVR有多个开发平台,每个都有其特点和不足。能够综合使用这些平台,相互互补,能够提高开发效率。如通过ICC、CVAVR的程序生成器CodeWizard学习和了解AVR的硬件设置,简化计算,快速的生成程序基本模块,如“一个URAT(RS232)低层驱动+中间层软件示例”。


推荐阅读

史海拾趣

Agere System(LSI Logic)公司的发展小趣事

Agere Systems(后来被LSI Logic收购)是一家在半导体行业具有重要影响力的公司之一。以下是该公司发展的五个相关故事:

  1. 公司成立和发展:Agere Systems成立于2000年,是由Lucent Technologies的微电子部门分拆而成。公司总部位于美国新泽西州的默里斯敦市。Agere Systems专注于开发半导体解决方案,包括通信芯片、存储芯片和无线网络技术。通过不断的技术创新和市场拓展,Agere Systems在短时间内成为半导体行业的领军企业之一。

  2. 无线通信技术:Agere Systems在无线通信技术方面取得了重大突破,推动了移动通信产业的发展。该公司开发了一系列的基带处理器和射频芯片,用于手机和其他移动设备中的无线通信。这些技术的应用使得移动通信设备具有更高的性能、更低的功耗和更广泛的覆盖范围,促进了全球移动通信市场的快速增长。

  3. 存储解决方案:除了在通信领域取得成功外,Agere Systems还致力于开发先进的存储解决方案。该公司生产的存储芯片和控制器广泛应用于硬盘驱动器、固态硬盘和存储系统中,为数据存储和处理提供了关键的技术支持。Agere Systems的存储产品以其高速、高效和可靠性而闻名,成为许多数据中心和企业用户的首选。

  4. 公司并购与重组:在Agere Systems发展的过程中,该公司进行了多次并购和重组以加强自身实力和市场竞争力。2007年,LSI Logic公司宣布收购Agere Systems,将两家公司的技术和资源整合在一起,共同致力于推动半导体行业的发展。通过这一合并,LSI Logic扩大了其在存储和通信领域的市场份额,进一步巩固了在全球半导体市场的领导地位。

  5. 技术创新与发展:Agere Systems始终把技术创新作为公司发展的核心驱动力。该公司投入大量资源用于研发,并与全球各地的科研机构和合作伙伴进行紧密合作。Agere Systems持续推出高性能、低功耗的芯片产品,并不断改进现有产品的性能和功能,以满足客户不断增长的需求。通过持续的技术创新和产品优化,Agere Systems在半导体行业保持了竞争优势,并为客户提供了更加先进和可靠的解决方案。

Blue Sky Research公司的发展小趣事

作为一家有社会责任感的企业,Blue Sky Research始终关注环境保护和可持续发展。公司在生产过程中采用环保材料和工艺,减少对环境的影响。同时,公司还积极参与公益事业,为社会做出贡献。通过践行社会责任,Blue Sky Research不仅赢得了社会的尊重和认可,也为企业的可持续发展注入了新的动力。

这些故事虽然基于假设和一般情况构建,但它们反映了Blue Sky Research在电子行业里可能的发展路径和战略选择。当然,实际的发展过程可能更加复杂和多元,需要更多的数据和细节来揭示。

DEMMELPRODUCTS公司的发展小趣事

DEMMELPRODUCTS公司深知人才是企业发展的根本。因此,公司始终注重人才培养和团队建设。通过制定科学的培训计划和激励机制,公司吸引了一批优秀的研发、生产和销售人才。同时,公司还鼓励员工之间进行知识和经验的分享与交流,形成了积极向上的团队氛围。这些优秀的人才和团队为公司的发展提供了有力的支持。

Barkston Plastics Engineering Ltd.公司的发展小趣事

在电子行业的初创时期,Barkston Plastics Engineering Ltd.以其创新性的塑料材料应用技术在市场上崭露头角。公司研发了一种具有优异绝缘性能的塑料材料,成功应用于电视机外壳的生产,大大提高了产品的安全性和耐用性。这一技术突破为Barkston赢得了首批重要的客户,并奠定了公司在电子行业的基础。

FEMA Electronics Corporation公司的发展小趣事

随着全球化的加速推进,FEMA意识到要想在更广阔的市场上取得更大的发展,必须实施国际化战略。于是,公司开始积极拓展海外市场,与多个国家和地区的客户建立了合作关系。同时,FEMA还加强了与国际先进企业的技术交流和合作,不断吸收和借鉴国际先进的经验和技术。这些举措为公司的国际化发展提供了有力支持,使FEMA的产品在国际市场上赢得了更广泛的认可。

Altmustech公司的发展小趣事

在快速发展的同时,Altmustech始终不忘履行社会责任。公司积极参与公益事业,支持教育、环保等领域的发展。此外,公司还注重环境保护和可持续发展,致力于研发更加环保、节能的产品和解决方案。这些举措不仅提升了公司的社会形象,也为企业的长远发展奠定了良好的社会基础。

以上五个故事分别从不同角度展现了Altmustech公司在电子行业中的发展历程和成就。这些故事旨在客观描述事实,未加入任何主观评价或情感色彩。

问答坊 | AI 解惑

如何选择数字万用表

仔细阅读DMM说明书 从资料上看, 数字多用表 (DMM) 的模式有几百种之多。为了挑选出合用的 DMM 是一件很伤脑筋的事。问题是如何找到价钱适当而性能符合需要的 DMM。在选择之前, 先要确定需要测量的量值是什么。 你做精密的计量工作吗 ? 真的是用 ...…

查看全部问答>

今天没人说话了

人啦?我们亲爱的坛友啦,都去哪里了…

查看全部问答>

WINCE平台能嵌入到PDA当中吗?(我是小白)

最近想做个项目参加比赛,想利用PDA嵌入一个软件,实现信息的交换,可是现在一头雾水不知道从什么地方开始,另外还想问下各位大虾,PDA能实现局域网无线通讯吗?…

查看全部问答>

【VxWorks5.x -->VxWorks6.x 移植问题】

大家好,谁有没有做过 PPC的BSP 从 5.X ---> 6.X 的移植啊? 我所知道的是,从6.x对5.X的支持是兼容的,那么我就先把 5.X 的BSP文件夹 如 ppc_myself_XXX 放到 h/config/ 下,然后新建立 BSP 工程,进行编译,可是编译的时候,发现ERROR超多啊 ...…

查看全部问答>

Linux ACPI GPE error

想在内核模块中软件触发一个ACPI SCI。但是显示 ACPI Error.. No hander for GPE....。 不知道是不是端口弄错了。但是我查看了系统的端口映射表。和Intel ICH8手册上第一的有些不同。特别是GPE0_BLK。 我用的内核是2.6.18。 哪个兄弟对这个比较 ...…

查看全部问答>

查看硬件工具

用AIDA32 查看的硬件配置总是不对不知道还有更好的查看工具吗…

查看全部问答>

香帅:在哪可以找到STM32的USB在PC端的驱动

想看看STM32的USB,没找到驱动,不过在ST的网上找到的固件包,ST-Dfuse里好像也没驱动,找到模拟串口和stick鼠标的就OK了,谢谢.…

查看全部问答>

stm32可以直接读ic卡吗

                                  …

查看全部问答>

【重要更新】最新版STM32技术参考手册的中文译文全文已经发

                                 这个中文译文版本是根据2008年12月的英文最新版本—第7版校对,请在ST MCU的中文官方网站下载,同时更新的中 ...…

查看全部问答>

求助 各位大侠 这里的电阻有什么作用啊?

这是mini2440原理图中的USB原理图设计部分: 各位大侠 帮我看看这里的电阻有什么作用啊?     为了搞懂这个问题,我上网查了,却一无所获。 于是,我特地到国家图书馆,查阅了一本叫做《ARM与DSP综合设计及应用》的书,书上介 ...…

查看全部问答>