摘要:运用AVR单片机的TWI(Two-Wire Serial Interface)总线构建了智能机器人体系的模块化构架。运用TWI总线完结了主控模块与扩展模块之间的双向多字节通讯,介绍了软件编程办法,能够将机器人各传感器模块收集到的数据实时发送至主操控器进行处理。有用提高了程序的运转功率,使得智能机器人全体架构灵敏、调试便利、扩展性强。
关键词:TWI;模块化;AVR
导言
模块化规划的机器人体系由主操控模块和扩展模块构成,首要用于检测机器人周围环境信息和机器人本身运动状况,实时获取各种传感器信息,并对机器人运动进行操控。因为要收集的数据信息许多,本体系运用了TWI总线构建模块化架构,模块均选用AVR单片机为主控芯
片:1片ATmega128(主控)、10片ATmega16、2片ATmega64和3片ATmega8。主操控器要实时地汇总并剖析各单片机的信息才能对机器人下一步动作作出决议计划,因而,各单片机之间的通讯显得尤为重要。别的,为了便利对电子罗盘进行标定,需求由主操控器向电子罗盘模块发送相应指令。也就是说,主操控模块与扩展模块之间需求完结双向多字节通讯,这是一个通讯难点。本体系悉数模块均选用TWI通讯接口,成功建立了一个主机与多个从机之间的双向多字节通讯,有用提高了程序的运转功率,使得智能机器人全体架构灵敏,调试便利,而且扩展性强。
1 TWI总线简介
TWI总线是对I2C总线的承继与开展,具有I2C总线的特色,即接线简略。外部硬件只需两个上拉电阻,运用两根双向传输线(一是时钟线SCL,一是数据线SDA)就能够将128个不同的设备互连到一同。TWI对I2C总线的开展表现在:它界说了自己的功用模块和寄存器,寄存器各位功用的界说与I2C总线并不相同,且TWI总线引入了状况寄存器,然后在操作和运用上比I2C总线更灵敏。两线接口TWI很合适于典型的处理器运用,以及多机间实时通讯的运用。
TWI通讯接口简略,可是强壮而灵敏。支撑主机和从机操作,器材能够作业于发送器形式或接纳器形式。数据传输率高达400 kHz,且支撑多主机裁定。一切连接到总线上的设备都有自己的地址,TWI协议处理了总线裁定的问题,7位地址信息答应有128个从机。依据以上长处,TWI通讯接口十分合适运用于微操控器(俗称单片机)体系。
2 智能机器人体系的模块化结构
本机器人体系以ATmega128单片机为主操控模块,扩展模块包含2个红外传感器模块、6个超声波模块、2个视觉处理模块、1个温度传感器模块、2个里程计模块、1个电子罗盘模块,以及1个陀螺仪模块。扩展模块担任收集相应的数据信息,由主操控器进行处理剖析。然后,
及时地对机器人下一步动作进行决议计划与指示。本体系的模块化结构图如图1所示。其间,超声波模块、视觉处理模块、电子罗盘模块和陀螺仪模块均选用ATmega16单片机,里程计模块选用ATmega64单片机,红外传感器模块和温度传感器模块选用ATmega8单片机。主操控模块与各扩展模块均选用TWI接口。
3 模块化智能机器人体系的TWI总线结构
TWI能够作业于4种不同的形式:主机发送器(MT)、主机接纳器(MR)、从机发送器(ST)及从机接纳器(SR)。同一运用程序能够运用几种形式。本机器人体系中,ATmega128为主机,其他单片机均为从机设备。意图是完结主机与多片从机之间的双向通讯,即主机能够发送多字节数据给从机设备,从机也能够发送多字节数据给主机。TWI的两根线在作业时必须有上拉电阻,既能够经过相关程序使能内部的上拉电阻,也能够在硬件规划时添加上拉电阻。实践运用中,最好软硬件的办法一起运用,两层保证。图2为TWI总线的硬件结构接线图。
4 TWI通讯的软件规划
4.1 主机的软件规划
本体系中,主机ATmega128选用轮询TWINT位的办法。主机主程序中的体系初始化首要包含定时器初始化和TWI总线初始化。主机主程序中写函数TWI_write()的具体流程如图3所示,读函数TWI_read()的具体流程如图4所示。一次传输进程包含一个START信号、一个SLA+R/W信号、一个或多个数据包、一个STOP信号。每发送一个信号或一个数据包,均要查验状况寄存器TWSR中的状况码,假如状况码正确,才发下一个信号,若不正确则转出错处理。经过软件编程技巧,能够在一次TWI通讯中,完结主机与从机之间的多字节数据传输。一起,在主机主程序流程图中能够看到,在一个循环内,能够完结主机与从机之间的双向数据传输。
4.2 从机的软件规划
关于一切从机,均选用中止办法。选用中止办法时,当TWINT方位位(硬件置位),则程序会主动跳到中止向量,履行中止服务程序。在等候TWINT置位期间,从机能够履行数据收集作业或履行其他程序,然后有用地提高了程序的运转功率。中止服务程序中,只需查验TWSR的状况码,读取或写入数据寄存器TWDR,这样来完结与主机的数据通讯。从机TWI中止服务程序流程图如图5所示。
关于不同的从机,硬件方面需求留意的是SCL、SDA两根线坐落单片机的I/O端口不同,例如ATmega16的SCL、SDA别离坐落PC0、PC1;ATmega8的SCL、SDA则别离坐落PC5、PC4。软件方面,需求给不同从机的TWAR赋予各自的从机地址。
4.3 TWI总线的部分程序
为了增强程序的可读性,将各种形式所需的TWI总线状况进行宏界说。关于主机,省掉一些数据处理和其他功用程序,最简化的主程序如下:
5 TWI通讯的留意问题
因为TWI通讯存在主机与从机模块,在独自对主机程序单步骤试时,主机单步运转,而从机处于全速运转,主从机步骤不一致,单步骤试成果显现TWINT位不置位或许TWSR状况码不正确,误认为程序有问题。实践上,程序在全速运转时是能够完结通讯的。
别的,依据功用要求,在一次TWI通讯中,例如要求主机给从机发送数据的字节数是1字节或2字节,此刻,在从机中止接纳中,需添加相应接纳标志位flag1、flag2,经过各自的标志位辨明接纳的不同字节的数据,防止发生不必要的混杂与过错。
编程中,要严厉依照TWI阐明手册中的内容,不同的TWSR状况码时,对TWDR履行相应的操作,对TWCR写入相应的数值。不然,有一点收支,都会形成TWI通讯的失利。
结语
本智能机器人体系选用TWI总线构建了模块化架构,长处是体系灵敏、扩展性强。TWI通讯办法是主机ATmega128器材程序选用查询办法,其他多片从机器材程序则选用中止办法。本文介绍了在一次TWI传输进程中,传送多字节数据的编程办法,而且建立了主机与多从机之间的双向多字节数据通讯,能够将机器人各传感器模块收集到的数据实时发送至主操控器进行处理,有用地提高了程序的运转功率。