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
diff -r 000000000000 -r d9f4fedf5253 main.cpp
--- /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