CAN-BUS loop back with EventQueue

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 
00003 DigitalOut led1(LED1);
00004 DigitalOut led2(LED2);
00005 DigitalOut led3(LED3);
00006 CAN can2(PB_8, PB_9);
00007 CAN can1(PB_12, PB_13);
00008 EventQueue queue(32 * EVENTS_EVENT_SIZE);
00009 Thread t;
00010 
00011 char counter = 0;
00012 
00013 void send() {
00014     printf("send()\n");
00015     if(can1.write(CANMessage(1337, &counter, 1))) {
00016         counter++;
00017         printf("Message sent: %d\n", counter);
00018         led3 = !led3;
00019     } 
00020 }
00021 
00022 int main() {
00023 
00024     t.start(callback(&queue, &EventQueue::dispatch_forever)); 
00025     queue.call_every(1000, send); 
00026     
00027     CANMessage msg;
00028     while(1) {
00029         if(can2.read(msg)) {
00030             printf("Message received: %d\n", msg.data[0]);
00031             led2 = !led2;
00032         } 
00033         wait(0.2);
00034         led1 = !led1;
00035     }
00036     
00037 }