時間:2009-01-04 13:34:12來源:zhangting
圖1 82c250與pic18f458接線圖[/align]
3 軟件設計
軟件采用mplab ide7.5開發平臺及mcc18軟件,為了有利于程序的移植和修改可將程序設計成能相對獨立的子程序。can總線的各種協議已經被集成在pic18f458的can模塊里面,只要對相應的寄存器進行操作就可完成can系統通信。pici8f458的can通信程序主要包括can初始化、接受子程序、發送子程序等。can初始化主要對can進行配置,設置發送郵箱、接收郵箱標識符及初始化數據,設置波特率、can工作模式,初始化接受濾波器和接受屏蔽。接受使用中斷方式,發送采用查詢方式。在can總線上的所有節點必須有相同的波特率,設波特率fosc=4mhz,同步時間段sync_seg=1tq,傳輸時間段prop_seg=1tq,相位緩沖時間段1phase_seg1=3tq,相位緩沖時間段2phase_seg2=3tq,標稱位時間=8tq,位率=0.125mhz。在can總線通訊中,can的初始化非常重要。
3.1 can初始化子程序
void intcan()
{trisb=(trisb|0x08)&0xfb; /* 設置rb2為輸出,rb3為輸入*/
cancon=0x80; /*請求配置*/
while((canstat&0x80)==0) /*配置方式*/
{
;
} /*等待進入配置模式*/
brgcon1=0x01; /*設置波特率*/
brgcon2=0x90;
brgcon3=0x42;
txb0con=0x03; /*設置優先級*/
txb0sidl=can_biaosf_l&0xe0; /*標準標識符*/
txb0sidh= can_ biaosf _h ;
txb0dlc=0x08; /*數據長度1字節*/
txb0d0=0x00;
txb0d1=0x00;
rxb0sidl= can_ biaosf _l&0xe0;/*標準標識符*/
rxb0sidh= can_ biaosf _h ;
rxb0con=0x20; / *接受有效的標準標識符信息*/
rxb0dlc=0x08; /*數據長度1字節*/
rxb0d0=0x00; /*初始數據*/
rxb0d1=0x00;
rxb0d2=0x00;
rxf0sidh=can_ biaosf _h;/*初始化接受濾波器和接受屏蔽*/
rxf0sidl=can_ biaosf _l;
rxm0sidh=0xff;
rxm0sidl=0xe0;
cancon=0x40; /*正常模式*/
while((canstat&0x40)!=0) /*檢測配置完成*/
{
;
}
pir3=0x00; /*初始化can中斷*/
pie3=0x01;
ipr3=0x01;
}
3.2 接收中斷子程序
void interruphandlerhigh()
{
if(pir3bits.rxb0if==1) /*接收can中斷*/
{
can_flag=1; /*置接收中斷標志*/
pir3bits.rxb0if=0; /*清接收中斷標志*/
rxb0conbits.rxful=0; /*接收*/
}
}
3.3 發送子程序
void fasong()
txb0d0=clz; /*clz為發送數值*/
txb0con=txb0con|0x08; /*發送*/
}
寫好這三部分程序,就很容易寫出通訊程序了。
4 結束語
本項目設計可用于各種電氣設備形成can接口,也可在此基礎上繼續開發,加入設備的控制算法,對設備進行總線化智能化改造。利用pic18f458設計的can總線接口進行了dkj直行程電動執行機構的智能化改造,與上位機實現了can總線通訊,試驗效果理想。標簽:
上一篇:基于多傳感器融合的壓力測量...
傳動網版權與免責聲明:凡本網注明[來源:傳動網]的所有文字、圖片、音視和視頻文件,版權均為傳動網(www.cdcst56.com)獨家所有。如需轉載請與0755-82949061聯系。任何媒體、網站或個人轉載使用時須注明來源“傳動網”,違反者本網將追究其法律責任。
本網轉載并注明其他來源的稿件,均來自互聯網或業內投稿人士,版權屬于原版權人。轉載請保留稿件來源及作者,禁止擅自篡改,違者自負版權法律責任。
產品新聞
更多>2025-12-10
2025-11-20
2025-11-10
2025-11-10
2025-11-07
2025-10-31