![]() |
|
Tài trợ cho PIC Vietnam |
Giao tiếp USB, CAN, I2C, SPI, USART... Những giao tiếp được tích hợp trên PIC |
|
Ðiều Chỉnh | Xếp Bài |
![]() |
#11 |
Nhập môn đệ tử
Tham gia ngày: Sep 2008
Bài gửi: 7
: |
Pic 30f4012 và CAN ( tiếp)
CHíp thứ 2 nhận tín hiệu hiển thị LCD:
void main() { unsigned char temperature, data[8]; unsigned short init, send, dt, len, CANread; char SJW, BRP, Phase_Seg1, Phase_Seg2, Prop_Seg, txt[4]; long id, mask; TRISB = 0; TRISC = 0; TRISF = 0x04; SJW = 1; BRP = 1; Phase_Seg1 = 6; Phase_Seg2 = 7; Prop_Seg = 6; init = CAN_CONFIG_SAMPLE_THRICE & // Form value to be used CAN_CONFIG_PHSEG2_PRG_ON & // with CAN1Initialize CAN_CONFIG_XTD_MSG & CAN_CONFIG_DBL_BUFFER_ON & CAN_CONFIG_MATCH_MSG_TYPE & CAN_CONFIG_LINE_FILTER_OFF; send = CAN_TX_PRIORITY_0 & // Form value to be used CAN_TX_XTD_FRAME & // with CAN1Write CAN_TX_NO_RTR_FRAME; CAN1read = 0; CAN1SetMask(CAN_MASK_B1, mask, CAN_CONFIG_XTD_MSG); CAN1SetMask(CAN_MASK_B2, mask, CAN_CONFIG_XTD_MSG); CAN1SetFilter(CAN_FILTER_B2_F3,3,CAN_CONFIG_XTD_MS G); CAN1SetOperationMode(CAN_MODE_NORMAL, 0xFF); Lcd_Custom_Config(&PORTB, 5,4,3,2,1,0, &PORTC, 13); Lcd_Custom_Cmd(LCD_CLEAR); Lcd_Custom_Out(1,1 ,"CAN BUS"); Delay_ms(1000); for(; ![]() { Lcd_Custom_Cmd(LCD_CLEAR); //Clear LCD Lcd_Custom_Out(1,1, "Temp = "); // Display "Temp = " // // Send a message to Node:COLLECTOR and ask for data // data[0] = 'T'; // Data to be sent id = 500; // Identifier CAN1Write(id, data, 1, send); // send T // // Get temperature from node:COLLECT // dt = 0; while(!dt) dt = CAN1Read(&id, data, &len, &CANread); if(id == 3) { temperature = data[0]; ByteToStr(temperature,txt); // Convert to string Lcd_Custom_Out(1,8,txt); // Output to LCD Delay_ms(1000); //Wait 1 second } } } |
![]() |
![]() |
|
|