首页 上一页 1 2 下一页 尾页

PROFIBUS从站之AVR单片机 点击:2776 | 回复:21



天啊啊

    
  • 精华:0帖
  • 求助:0帖
  • 帖子:20帖 | 179回
  • 年度积分:0
  • 历史总积分:378
  • 注册:2005年3月11日
发表于:2006-02-10 15:35:00
楼主
PB_SLAVE AVR实现
ATMEGA8535实现PROFIBUS DP从站
FCK = frequenz; BAUD = Baudrate; UBRR = 
PB数据初始化:
void PB_Init(void);
串口初始化模块
void UART_Init(void);
-187.5kbps @ 6MHz
-receiver enable
-11 bit
-enable receiver irq
定时器0初始化:
TCNT0 =TIMER_INIT = 256 - 4 * (33 + 20)
串口模块功能:(功能:数据检查)
void UART_Check_Parity(void);
void UART_Set_Parity(void);
void UART_FC_Byte_Check(void);
void UART_Send_Pos_Ack(void);
void UART_Send_Pos_Ack_End(void);
void UART_Send_Ident(void);
void UART_Send_RS(void);
void Receive_Data_Ack(void);
void UART_Send_Request_Data(void);
void Restart_Sync_Timer(void);
串口中断模块:
void UART_RXC(void);
void Adr_Check(void);
void LE_valid_no(void);
void UART_TXC(void);
定时器中断模块:(功能:时钟同步)
Timer0_ISR(void);
Timer0_ISR_Start_Send(void);



AVR-PB-Slave.h头文件
#define IDENT_LENGTH  44
#define IDENT_BYTES  (IDENT_LENGTH + 10)

//------------------------------------------------------------
//用户配置数据
#define TSYN  33
#define TSDR  20 //bit times!
#define PB_ADR  8
#define MAX_LENGTH  22 //max length of telegrams
#define TIMER_INIT  256 - 4 * (TSYN + TSDR) //timer0 counts 4 times to generate irq
#define TSYN_COUNTER  TIMER_INIT + 4 * TSYN //this is what the timer should contain at tsyn
#define BR_DIV  1 //baud rate divider for desired baud
//rate - here 187.5kbps @ 6MHz
#define UART_CTRL_INIT  0b10010100 //enables recv-irq, recv and 9th bit

//串口标记定义
#define LE_valid      1 //Bit0: LE-gueltig
#define LE_validbit  0 //Bit0: LE-gueltig
#define variable    2 //Bit1: variabel
#define variablebit    1 //Bit1: variabel
#define counter_set1  4 //Bit2: counter_set1
#define counter_set1bit  2 //Bit2: counter_set1
#define counter_set2  8 //Bit3: counter_set2
#define counter_set2bit  3 //Bit3: counter_set2
#define telegr_end   16 //Bit4: telegr_end
#define telegr_endbit  4 //Bit4: telegr_end
#define recv_enabled  32 //Bit5: the receiver is being used
#define recv_enabledbit  5 //Bit5: the receiver is being used
#define tran_enabled  64 //Bit6: the tranceiver is being used
#define tran_enabledbit  6 //Bit6: the tranceiver is being used
#define adr_valid    128 //Bit7: this telegram has our adress
#define adr_validbit  7

//用户标记定义
#define DAExtbit    0
#define DAExt  1
#define SAExtbit    1
#define SAExt    2
#define PRIObit  2
#define PRIO    4
#define NO_ACKbit  3
#define NO_ACK  8
#define REQUbit  4
#define REQU    16
#define telegr_completbit  5 ;Bit0: telegr_complet
#define telegr_complet  32 ;Bit0: telegr_complet

//LSAP标记定义
#define Data_Ind0bit  0
#define Data_Ind0    1
#define Data_Ind1bit  1
#define Data_Ind1    2
#define Data_Ind2bit  2



xiong

  • 精华:0帖
  • 求助:0帖
  • 帖子:0帖 | 4回
  • 年度积分:0
  • 历史总积分:64
  • 注册:2003年6月10日
发表于:2011-04-16 12:30:00
21楼

楼主,你好,我正在做一个ATMEGA128单片机+SPC3实现PROFIBUS的项目,能发些资料给我吗?或留下你的联系方法.谢谢.我的邮箱:jxncxy@sohu.com;QQ:33508691,期待你的回复.


热门招聘
相关主题

官方公众号

智造工程师
    首页 上一页 1 2 下一页 尾页