AVR与传统类型的单片机比较,除了有必要能完成本来的一些根本的功用,其在结构体系、功用部件、功用和牢靠性等多方面有很大的进步和改进。
但运用更好的器材仅仅为规划完成一个好的体系发明了一个好的根底和可能性,假如还选用和沿用曾经传统的硬件和软件规划思维和办法的话,是不能用好AVR的,乃至也不能真实的了解AVR的特色和利益。
功用越好的器材,需求具有更高技能和才干的人来运用和驾御它。就象一部好的F1赛车,只要具有高明技能的驾驶员才干充沛领会到车的特色,并能最大极限的发挥出车的功用。
AVR具有上手入门快,开发便利简略的特色,但要充沛领会和发挥AVR的长处,还需求运用工程师自身的硬软件规划开发才干的不断学习、实践进步。
“外行看热闹,熟行看门路”,关于有必定根底的嵌入式和单片机体系规划开发的工程师,无妨先简略测验一下AVR。
开发环境与东西:PC+下载线+实践的体系板
PC上的开发软件:
AVR Studio(Free)汇编+汇编调试+高档言语调试+软件仿真
ICC、CVAVR、BASCOM-AVR高档言语程序开发+程序下载。其间一个购买正版全功用,作为首要的开发环境,其它运用DEMO版,作为辅佐及参阅。
AVR ISP下载线:
STK200 and STK200+ and STK300ISP 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)低层驱动+中间层软件示例”。