Laboratoire de CAN du cours SOI

Dependencies:   mbed-rtos mbed

main.cpp

Committer:
annicksenecal
Date:
2013-12-15
Revision:
1:48351dcae5b4
Parent:
0:fead003a74cb
Child:
2:cad8d2ec9667

File content as of revision 1:48351dcae5b4:

#include "mbed.h"
#include "rtos.h"

DigitalOut led1(LED1);
DigitalOut led2(LED2);
CAN can1(p9, p10);
CAN can2(p30, p29);


void sendCan1(void const *args)
{

    char counter1 = 80;

    while(1) {


        printf("send()\n");
        if(can1.write(CANMessage(0x0480, &counter1, 1))) {
            printf("wloop()\n");

            printf("Message sent: %d\n", counter1);
            counter1++;
        }
        if (counter1 >89) {
            counter1 = 80;
        }
        led1 = !led1;
        Thread::wait(1842);
    }
}

void sendCan2(void const *args)
{

    char counter2 = 180;

    while(1) {
        printf("send()\n");
        if(can1.write(CANMessage(0x0580,&counter2,1))) {
            printf("wloop()\n");

            printf("Message sent: %d\n", counter2);
            counter2++;
        }
        if (counter2 >189) {
            counter2 = 180;
        }
        led1 = !led1;
        Thread::wait(2351);
    }
}

void receptionMsg(void const *args)
{

    CANMessage msg;

    while(1) {
        printf("reception()\n");
        if(can2.read(msg))
            printf("Message received: %x\n", msg.id);
        if (msg.id == 1234)
            printf("Message received: %d\n", msg.data[0]);
        Thread::wait(958);
        led2 = !led2;
    }
}

int main()
{

    printf("main()\n");

    Thread thread1(sendCan1);
    Thread thread2(sendCan2);
    Thread thread3(receptionMsg);
    while(true);

}