CAN-BUS loop back with EventQueue

Committer:
JohnnyK
Date:
Sat Apr 13 19:39:14 2019 +0000
Revision:
0:d31fd55babb2
Release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JohnnyK 0:d31fd55babb2 1 #include "mbed.h"
JohnnyK 0:d31fd55babb2 2
JohnnyK 0:d31fd55babb2 3 DigitalOut led1(LED1);
JohnnyK 0:d31fd55babb2 4 DigitalOut led2(LED2);
JohnnyK 0:d31fd55babb2 5 DigitalOut led3(LED3);
JohnnyK 0:d31fd55babb2 6 CAN can2(PB_8, PB_9);
JohnnyK 0:d31fd55babb2 7 CAN can1(PB_12, PB_13);
JohnnyK 0:d31fd55babb2 8 EventQueue queue(32 * EVENTS_EVENT_SIZE);
JohnnyK 0:d31fd55babb2 9 Thread t;
JohnnyK 0:d31fd55babb2 10
JohnnyK 0:d31fd55babb2 11 char counter = 0;
JohnnyK 0:d31fd55babb2 12
JohnnyK 0:d31fd55babb2 13 void send() {
JohnnyK 0:d31fd55babb2 14 printf("send()\n");
JohnnyK 0:d31fd55babb2 15 if(can1.write(CANMessage(1337, &counter, 1))) {
JohnnyK 0:d31fd55babb2 16 counter++;
JohnnyK 0:d31fd55babb2 17 printf("Message sent: %d\n", counter);
JohnnyK 0:d31fd55babb2 18 led3 = !led3;
JohnnyK 0:d31fd55babb2 19 }
JohnnyK 0:d31fd55babb2 20 }
JohnnyK 0:d31fd55babb2 21
JohnnyK 0:d31fd55babb2 22 int main() {
JohnnyK 0:d31fd55babb2 23
JohnnyK 0:d31fd55babb2 24 t.start(callback(&queue, &EventQueue::dispatch_forever));
JohnnyK 0:d31fd55babb2 25 queue.call_every(1000, send);
JohnnyK 0:d31fd55babb2 26
JohnnyK 0:d31fd55babb2 27 CANMessage msg;
JohnnyK 0:d31fd55babb2 28 while(1) {
JohnnyK 0:d31fd55babb2 29 if(can2.read(msg)) {
JohnnyK 0:d31fd55babb2 30 printf("Message received: %d\n", msg.data[0]);
JohnnyK 0:d31fd55babb2 31 led2 = !led2;
JohnnyK 0:d31fd55babb2 32 }
JohnnyK 0:d31fd55babb2 33 wait(0.2);
JohnnyK 0:d31fd55babb2 34 led1 = !led1;
JohnnyK 0:d31fd55babb2 35 }
JohnnyK 0:d31fd55babb2 36
JohnnyK 0:d31fd55babb2 37 }