用户总是希望产品恰好满足自己的需求,在采集、测量等行业尤其如此。有的用户希望买到的仪器能够增加更多的功能;而需求单一的用户却不希望买到功能繁多而自己使用不上的设备。这就需要产品具有功能的可扩展性和可裁减性,同时该功能的引入或裁减不会影响到设备其他的功能,还要保证设备工作的可靠性。
多机系统就是为满足这一需求而设计的。本文所研究的多机系统是指多个功能独立的微控制器可以相互通信,由一片主控微控制器进行统一管理,并利用各种通信方式来协调各独立微控制器的工作。利用该多机系统设计的多功能测试仪器性能稳定,由于其具有可扩展性和可裁减性,可以为不同的用户提供不同的功能。
设计通用型多机系统平台在选择微控制器上要考虑众多因素,如功能性、稳定性、易用性和价格等。本文中的多机系统选择AVR微控制器主要基于以下几方面因素:主控微控制器ATmega128具有双串口,可以给从机和PC端各分配一个,128kb的Flash容量足够编程使用,PWM等功能可供扩展使用;从机系统使用的ATmega8是一款性价比优越的微控制器,可满足采集、测量等多种领域的需求,同时联合ATmega128开发可以使用相同的开发工具,从而降低了开发成本。由ATmega8和ATmega128组成的多机系统系统如图1所示。
总线的设计
总线设计力求达到硬件简单、使用方便、接口可带电插拔等要求。由于ATmega8及ATmega128都具有自己的串口,于是在总线设计上采用四线制:串口接收线、串口发送线、电源线和地线。
为了增加ATmega128的驱动能力,它与总线的接口用反向器74LS14通过两级反相来实现,电路如图2所示。
从机ATmega8总线接口部分,除了用反相器74LS14两级反相驱动数据线外,为了保证通信的可靠性,还在串口收发两条线上各加一个光耦6N135,电路如图3所示。耦合传输信号避免了直接的电气连接,实现了隔离作用,保证了通信传输的可靠性。
ATmega128与PC的通信电路如图4所示。利用ATmega128双串口的特性,利用其中一个串口与PC通信,电平转换芯片采用MAX232,同时也增加光耦器件6N135来提高系统抗干扰的能力。
图4 ATmega128与PC的接口
通信协议
根据系统的要求,通信协议应保证各部分通信的可靠性,为未来可扩展部分预留余量,而且通信协议要尽可能简单,通信数据量尽可能少,从而提高通信的速度。为满足以上要求,通信协议采用4字节为一个完整的数据帧,具体主机从机各自数据帧格式如表1所示。
对于ATmega128与ATmega8组成的主从机系统而言,ATmega128是主机,它可以同时对多达16个ATmega8从机进行控制。对于PC与ATmega128组成的主从机系统,PC则扮演主机的角色,它可以同时对多个ATmega128进行控制。如果PC要对某一ATmega128 下的ATmega8进行控制,它就必须先发命令给对应的ATmega128,再通过ATmega128对具体ATmega8的控制来实现。
系统性能测试
笔者以该多机通信系统为平台搭建了8项家用电器测试系统,测试项目包括耐压测试、泄漏电流测试、接地电阻测试、绝缘电阻测试、功率测试和低压启动测试。每片ATmega8实现两项测试功能,三片ATmega8通过该多机通信系统由一片ATmega128统一管理。由于该测试系统要实现 500~5000V耐压测试,以及2~20A大电流的泄漏电流测试,正好可以用来检验该多机系统在非常恶劣的电磁干扰环境下的稳定性。笔者利用一台PC作为主机,同时控制三套六项家用电器测试系统进行稳定性测试。整套系统经过72小时不间断工作测试运行良好,证明多机系统方案稳定、可靠。利用这一多机系统设计的6项家用电器测试系统推向市场后,用户的反馈也表明该系统稳定性很好。
结论
AVR微控制器有着较高的性价比,在科研和工程等方面的应用越来越广泛。本文着重叙述了AVR微控制器中ATmega128与ATmega8及PC 之间的串口通信的软硬件实现问题,这一方案已经应用在实际中,经测试该系统稳定可靠,抗干扰性能好,而且由于其较强的可扩展能力(每个ATmega128 可控制16个ATmega8),可以在原系统不做任何改变的情况下增加或减少功能,且不会影响到系统整体的性能。由于采用模块化设计方法,该系统灵活性好,可以适应不同的要求。本文所述的ATmega128和ATmega8构建的多机系统的开发过程对AVR其他型号的微控制器同样适用。
关键字:AVR微控制器 多机系统 ATmega128
引用地址:
基于AVR微控制器的多机系统
推荐阅读最新更新时间:2024-03-16 12:51
ATmega128 外部RC振荡器
对于时间不敏感的应用可以使用Figure 20 的外部RC 振荡器。频率可以通过方程f = 1/(3RC) 进行粗略地估计。电容C 至少要22 pF。通过编程熔丝位CKOPT,用户可以使能 XTAL1和GND之间的片内 36 pF电容,从而无需外部电容。若想获取有关振荡器如何工作 以及如何选择R 和C 的具体信息,请参考外部RC 振荡器应用手册。 振荡器可以工作于四个不同的模式,每个模式有自己的优化频率范围。工作模式通过熔丝位CKSEL3..0 选取,如Table 11 所示。 选择了这个振荡器之后,启动时间由熔丝位SUT 确定,如Table 12 所示。 Note: 1. 这些选项只能用于工作频率不太接近于最大频率时的
[单片机]
一种AVR单片机智能多接口的全硬件音频系统的解决方案
0 引言 在传统的硬件体系结构中,接口被看作是相应外部设备的一部分,每个接口一般都只能连接到同一种设备上。虽然通过所谓“菊花链”(daisyohain)方式可以把若干同种设备连接到同一接口上,却不能将不同种类的设备混合连接到同一接口上,由于目前USB接口的设备越来越丰富,种类越来越多,为了满足这样的需求,这里给出一种USB 2.O接口的解决方案,通过USB接口读取各种USB设备;通过SD卡接口,读取各种主流存储卡。该方案支持常用的USB存储设备(包括U盘/USB硬盘/USB闪存盘/USB读卡器)和SD卡(包括标准容量SD卡和高容量HC-SD卡以及协议兼容的MMC卡和TF卡)。 本文提出了一种智能多接口的全硬件音频系统的解
[单片机]
使用Arduino ISP编程AVR微控制器和Arduino开发板
所有微控制器都需要某种机制来对它们进行编程,即使它们只编程一次。通常,程序代码写在主机上,然后编译或翻译,并使用电缆(通常是USB或RS232)将对象(机器可读)代码从PC(“主机”)下载到MCU(“目标”),通常被称为“编程器”。一旦编程,MCU就像编码一样工作。 一个非常受欢迎的MCU开发板制造商是Arduino,总部位于意大利。许多Arduino开发板都装有AVR微控制器,这也需要烧写器将主机上创建的程序保存到目标MCU的存储器中,例如AVR微控制器。外部编程器通常用于AVR微控制器,并且成本高昂。 在项目开发期间,大多数目标MCU必须进行多次编程,因此将MCU从电路中移除以对其进行编程是不可行的。许多MCU(包括A
[单片机]
AVR M16单片机NRF2401无线通信开发包
单片机源程序如下: //ICC-AVR application builder : // Target : M16 // Crystal: 8.0000Mhz #include iom16v.h #include macros.h //------------------------------------------------------------------------------ //--------------------------------NRF24L01接口定义-------------------------------- //-------------------------------------
[单片机]
单片机系统多串行口设计技术
1 引言 在以单片机为核心的测控系统中.微控制器往往需要两个或两个以上的串行口与其他主机或外设进行通讯,如何使系统具备多个串行接口,是一个具有普遍性的问题。尤其在航空航天领域,由于GPS、大气数据系统、数字罗盘、无线电高度表、甚至陀螺等航空电子设备普遍采用串行通讯方式,单片计算机系统就更需要有多个串行口以满足与外界信息交换的需要。 2 常用的多串行口设计方法 ①选用多串行口单片机 直接选用多串行口单片机作为系统的CPU,显然是最直接有效的方法。现在有许多新型CPU配备两个或两个以上串行口,如W77E58、DS80C320、MSP430F149、C8051F020单片机和数字信号处理器TMS320C30有两个串行口,而cyg
[单片机]
AVR单片机熔丝锁死的处理方法解析
1.AVR单片机熔丝位锁死简单快捷的解密方法: 在很多AVR单片机的初学者在使用AVR单片机中,很容易把熔丝位弄错而造成单片机锁死,比如说JTAGEN置为1后,单片机的JTAG就不能再下载程序进去了,因此给我们带来很多麻烦。 常见的恢复方法是使用并口编程器来恢复,对于初学者来说,很多设备是很欠缺的,所以很难解决。 现为我们初学者介绍一个简单实用可行的方法——有源晶振恢复法。将被锁死的AVR单片机接入最小系统或者开发板中,将系统中的晶振拆下来,在XAIL1接上有源晶振的第三脚(按下图接即可)。 然后通电,使用ISP下载线进行熔丝位编辑,本人使用智峰progisp(Ver 1.6.7)软件,打开软件选择好芯片型号,使
[单片机]
AVR单片机的主要特性及应用领域解析
AVR单片机是ATMEL公司研发的增强型内置Flash的RISC精简指令集高速8位单片机,设计时吸取了8051及PIC单片机的优点,具备单时钟周期执行一条指令的能力,运行速度高达1Mips/MHz。AVR单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。 AVR单片机硬件结构采取8位机与16位机的折中策略,即采用局部寄存器存堆(32个寄存器文件)和单体高速输入/输出的方案(即输入捕获寄存器、输出比较匹配寄存器及相应控制逻辑),提高了指令执行速度,克服了瓶颈现象,增强了功能;同时又减少了对外设管理的开销,相对简化了硬件结构,降低了成本。AVR单片机在软/硬件开销;速度、性能和成本诸多方面取
[单片机]
avr单片机驱动12864液晶程序
/*LCD12864显示子程序*、 #include util/delay.h #define uchar unsigned char #define uint unsigned int #define SETLCD12864RS PORTA|=(1 PA4) #define SETLCD12864RW PORTA|=(1 PA5) #define SETLCD12864EN PORTA|=(1 PA6) #define CLLCD12864RS PORTA&=~(1 PA4) #define CLLCD12864RW PORTA&=~(1 PA5) #define CLTLCD12864EN PORTA&=~(1 PA6) #d
[单片机]