ATmega128实现工业设备的主控制板

发布者:SerendipitySoul最新更新时间:2017-12-17 来源: eefocus关键字:ATmega128  工业设备  主控制板 手机看文章 扫描二维码
随时随地手机看文章

使用ATmega128实现一个工业设备的主控制板,它与由ATmega8管理的按键和LED显示构成的控制面板距离在2米左右,两者之间采用 USART通信联系。考虑到在实际应用中,俩者之间交换的数据很少,通信速度也不需要很高,重要的是保证通信的可靠和抗干扰,因此在硬件设计上采用电流环的连接方式,见图5.4。   

在图中通信双方采用光隔和三极管,将USART的电平变化变成电流变化后传送连接,如同工业上使用的20mA电流环通信一样,大大提高了通信的抗干扰能力。  


通信协议和规程的制定:  

   l.通信速率采用2400bps(速率太高时电流环的变化会跟不上)。  

   2. 用户数据包采用定长格式,每个数据包长度为6个字节,其中第1个字节是数据包起始字节0xBB,第6字节为数据包结束字节0xEE,其它为用户命令、数据和系统状态参数。  

   3.每次通信由A端发起,下发一个数据包;B端收到一个正确的数据包后,必须返回一个数据包应答。  

   4.A端下发一个数据包后,在300ms内没有正确收到应答包时(在2400bps时传送6个字节的时间约为30ms),将再次重发;3次重发均不能正确收到应答包则报警。  

   5.在系统正常工作时,A端每隔250ms下发一个数据包,B端如果在1s内没有正确收到一个下发的数据包,将进入安全保护程序。  

   在这个应用实例中,USART接口的发送程序与前面给出的典型例程中的一样,而对USART的接收程序进行了改动和简化,使其更加符合在本系统中使用。  

#define UART_BEGIN_STX        0xBB  
#define UART_END_STX        0xEE  
#define RX_BUFFER_SIZE0        6  

char rx_buffer0[RX_BUFFER_SIZE0];  
unsigned char rx_counter;  
bit Uart_RecvFlag  

// USART Receiver interrupt servICe routine  
#pragma savereg-  
interrupt [USART_RXC] void uart_rx_isr(void)  
{  
  unsigned char status,data;  
  #asm  
    push r26  
    push r27  
    push r30  
push r31  
    in   r26,sreg  
    push r26  
  #endasm  

  status=UCSRA;  
  data=UDR;  
  if ((status & (FRAMING_ERROR | PARITY_ERROR | DATA_OVERRUN))==0)  
  {  
    if (!Uart_RecvFlag)  
    {      
       rx_buffer[rx_counter] = data;  
    switch (rx_counter)  
    {  
            case 0:  
        if (data == UART_BEGIN_STX)     rx_counter = 1;  
        break;  
       case 1:  
       case 2:  
       case 3:  
       case 4:  
        rx_counter++;  
        break;  
       case 5:  
        rx_counter = 0;  
        if (data == UART_END_STX)  Uart_RecvFlag = 1;  
        break;  
    }  
      }  
   }  
   else  
      rx_counter = 0;  

   #asm  
        pop  r26  
    out  sreg,r26  
    pop  r31  
    pop  r30  
pop  r27  
    pop  r26  
  #endasm  
}  
#pragma savereg+  
…………  
void main(void)  
{  
  while(1)  
  {  
    if (Uart_RecvFlag)  
    {  
    …………            //处理收到的数据包  
    Uart_RecvFlag = 0;        //允许USART接受新的数据包  
     }  
  …………            //处理其它任务  
  }  
}  

     在这段代码中,接收中断服务程序直接对数据包的起始字符和结束字符进行判断,并完成对整个数据包的接收。当接收到正确的6个字符的数据包后,将 “Uart_RecvFlag”标志置位,通知上层程序处理收到的数据。一旦“Uart_RecvFlag”标志置位后,中断服务程序将不再接收新的数据(放弃掉收到的字节),使得数据缓冲区不会溢出。  

    上层程序的设计,应保证以200ms左右的间隔对“Uart_RecvFlag”标志位进行一次判断。一旦判断“Uart_RecvFlag”标志置位后,马上进行处理,回送应答数据。处理完后将“Uart_RecvFlag”标志清除,允许USART接收新的数据包。  
还可以考虑在数据包中增加“数据包编号”和“数据校验”2个字节,以进一步提高通信的可靠性。  


关键字:ATmega128  工业设备  主控制板 引用地址:ATmega128实现工业设备的主控制板

上一篇:ICCAVR自动下载程序说明
下一篇:ATMEGA8单片机驱动4线步进机C程序

推荐阅读最新更新时间:2024-03-16 15:49

基于ATmega128和CH374的USB接口的软硬件设计
随着嵌入式系统的发展,嵌入式MCU需要增加USB接口,以便实现与PC机等USB主机系统的通信。针对这样的需求,解决方案比较多,均有一个共同点,都采用PHILIPS公司的PDIUSBD12芯片,该芯片为并行总线接口,占用过多的MCU端口资源,且与MCU的软件接口编写复杂,同时芯片价格也不便宜。为此,采用南京沁恒电子有限公司的USB芯片CH374设计了一款USB接口,以解决嵌入式MCU与PC机通信问题。CH374不仅价格有优势,该公司还提供了完善的USB驱动程序,且在芯片内部集成了数据缓冲区、被动并行接口、串行接口、命令解释器、通用的固件程序等,这样,以CH374设计的USB设备,不需要详细了解USB通讯协议,开发编程非常方便。   
[单片机]
基于<font color='red'>ATmega128</font>和CH374的USB接口的软硬件设计
AVR(ATMEGA128\16)AD功能(扫描,中断,差分扫描,差分中断)
下面是AD差分扫描 /********************************AD头文件**********************************/ #ifndef __ad_chafenscan_H__ #define __ad_chafenscan_H__ uint mega128_ad_chafen01(void);//01通道差分,1为参考 uint mega128_ad_chafen32(void);//23通道差分,2为参考 #endif /********************************ADC文件************************************/
[单片机]
AVR(<font color='red'>ATMEGA128</font>\16)AD功能(扫描,中断,差分扫描,差分中断)
基于ATMEGA128的CAN-GPRS网关设
1. 引言 CAN(Controller Area Network)即控制器局域网,属于工业现场总线的范畴。CAN总线与一般的通信总线相比,数据通信具有突出的可靠性、实时性和灵活性,其应用范围已扩展到自动控制、航空航天、机械工业及传感器等领域。 GPRS(General Packet Radio Service)是通用分组无线业务的简称。相对原来GSM的拨号方式的电路交换数据传送方式,它是一种基于第二代移动通信系统GSM的无线分组交换技术,提供端到端的、广域的无线IP连接。具有“实时在线”、“按量计费”、“快捷登录”、“高速传输”的优点。 www.51kaifa.com 随着GPRS移动通信技术的成熟,通过CAN-
[单片机]
基于<font color='red'>ATMEGA128</font>的CAN-GPRS网关设
ATmega128(ICC7.22 "delay.h")
//******************************************************************** /*函 数 名:delay_us 编译环境:ICCAVR7.16A 函数作用:微秒级的延时程序 说 明:7.3728M晶振下 ********************************************************************/ void delay_1us(void); void delay_3us(void); void delay_10us(void); void delay_50us(void); void delay_100us(void); v
[单片机]
东芝启动通过UL508认证的工业控制设备光继电器的出货
东京-- 东芝电子元件及存储装置株式会社(“东芝”)下列八款光继电器产品获得了美国安全标准UL508认证:4引脚SO6封装系列“TLP172GM”、“TLP176AM”和“TLP3122A”以及DIP4封装系列“TLP240A”、“TLP240D”、“TLP240G”、“TLP240GA”和“TLP240J”。 这些通过认证的光继电器市面上均有售,可用于需要UL508认证的工业控制设备,适用于一系列全球市售设备。光继电器还通过了NRNT 认证。 UL508标准包括一系列严格的零部件标准。固态继电器(SSR)是此类零部件之一,而SSR之内的树脂温度限制在105ºC(上限) 。SSR的工作温度须在该上限以内。通过使用我们
[工业控制]
东芝启动通过UL508认证的<font color='red'>工业</font>控制<font color='red'>设备</font>光继电器的出货
【白皮书下载】老牌巨头爱德克(IDEC),为设备工业现场提供安全解决方案
进入21世纪,全球自动化浪潮愈演愈烈,机器人及各种自动化设备几乎无处不在,成为制造业发展的必需品,人也逐渐从直接生产者,变成机器的操纵者。 而在此过程中,人与机器共存的环境安全问题,成为一个不可忽视的重大命题,如操作不当引发的安全事故、因设备老化出现的机器故障,以及一些其他不可预料的疏忽,都可能造成无可挽回的损失。 在过去伴随自动化发展的几十年里,如何保障生产环境的安全是人们一直关注的焦点,推动了对机械设备安全的监测、预防等多方面的研究。 爱德克(IDEC)作为创办于1945年的老牌工业控制及自动化元器件生产厂家,致力于为设备制造商以及最终用户提供安全可靠的机械安全解决方案,为设备的安全性和企业的生产安全管理做出贡献。 爱德克(
[机器人]
ADI的数据采集IC简化工业和仪器设备设计
中国,北京 – Analog Devices, Inc. (NASDAQ: ADI),全球领先的高性能信号处理解决方案供应商和数据转换技术领导者*,最近推出一款高度集成的数据采集IC(集成电路)ADAS3022,该产品占用的电路板空间仅为竞争产品分立器件的三分之一,有助于工程师简化设计,缩小高级工业数据采集系统的尺寸。新款16位1 MSPS(每秒采样百万次)ADAS3022数据采集IC可有效用于电力线监控器、过程和电机控制、病人监护,以及在±10V工业范围内运行的其他工业和仪器仪表系统。 • 下载数据手册、查看产品页面和申请样片: http://www.analog.com/zh/pr1115/adas3022 • 从AD
[工业控制]
ADI的数据采集IC简化<font color='red'>工业</font>和仪器<font color='red'>设备</font>设计
基于ATmega128和μC/OS-II的在线钠离子分析仪的设计
1 引言 水和蒸汽是热力系统中的锅炉、汽轮机、过热器等设备的重要工作介质。当火力发电厂正常运行时,热力设备中都有水或蒸汽在流动。水、汽的品质都有规定的指标,一旦水、汽品质的指标超标,就会加速热力设备的腐蚀、结垢和积盐。当水汽中携带一些含钠的杂质时,将会导致汽轮机金属材料的点蚀、应力腐蚀或腐蚀疲劳,这些腐蚀通常会造成重大的经济损失。严重时甚至造成重大事故。钠离子含量是发电厂水汽品质的重要指标之一。因此,为防止结垢、结盐,减缓系统中金属部件的腐蚀。保证系统的安全经济运行,必须对电厂水汽系统中钠离子含量进行严格监测和控制。 2 测量原理 钠离子的测量是基于电化学中的电位分析法,由测量电极和参比电极及待测溶液构成原电池。测量
[单片机]
基于<font color='red'>ATmega128</font>和μC/OS-II的在线钠离子分析仪的设计
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved