Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Dependencies: mbed
Diff: main.cpp
- Revision:
- 0:d9f4fedf5253
- Child:
- 1:12ddbe69b6e6
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Nov 22 07:51:02 2017 +0000 @@ -0,0 +1,80 @@ +/*** Thread: CAN *** + * Test CAN Messages + *WERKT 25/10/2017 + */ +#include "mbed.h" +#include "CAN.h" + +/* CAN (RD TD) */ +CAN can(PA_11, PA_12); + +DigitalOut canEN(PA_10); +/* Heartbeat */ +DigitalOut led(LED1); + +/* Structures to help pack and unpack the 8 CAN data bytes */ +typedef struct bytes_64 { + uint8_t b0; + uint8_t b1; + uint8_t b2; + uint8_t b3; + uint8_t b4; + uint8_t b5; + uint8_t b6; + uint8_t b7; +} bytes_64; + +typedef union { + uint64_t data; + bytes_64 bytes; +} data_packed; + + +/* main */ +int main() { + + printf("\r\n---Start---\r\n"); + + data_packed send_data; //struct for send message + data_packed receive_data; //struct for rcv message + CANMessage msg; //message object for rcv + int send_id = 15; //send message id + int send_status = 0; + + canEN = 0; + /* Config Loopback and Frequency */ + send_data.data = 0; + can.frequency(1000000); + //can.mode(CAN::LocalTest); + + /* Loop */ + while (true) { + + /* Send */ + send_status = can.write(CANMessage(send_id, (char*) &send_data, 8)); + + if (send_status == true) { + send_data.data = send_data.data + 1; + } + + /* Receive */ + if (can.read(msg)) { + //move message bytes to receive, so we can access as a uint64_t (u long long) + receive_data.bytes.b7 = msg.data[7]; + receive_data.bytes.b6 = msg.data[6]; + receive_data.bytes.b5 = msg.data[5]; + receive_data.bytes.b4 = msg.data[4]; + receive_data.bytes.b3 = msg.data[3]; + receive_data.bytes.b2 = msg.data[2]; + receive_data.bytes.b1 = msg.data[1]; + receive_data.bytes.b0 = msg.data[0]; + + printf("Message received ID,Msg: %d, %llu\r\n", msg.id, receive_data.data); + } + + /* Heartbeat */ + led = !led; + + wait(0.5); + } //while +} \ No newline at end of file