c

main.cpp

Committer:
tecnosys
Date:
2010-06-16
Revision:
3:12c2fd911f22

File content as of revision 3:12c2fd911f22:

// Flip an LED every time we see the rising edge interrupt on a pin
#include "mbed.h"
#include "CAN3.h"
#include "mcp2515.h"
#include "mcp2515_can.h"




DigitalOut led_can(LED1);
DigitalOut led_serial(LED2);
DigitalOut led_analog(LED3);
DigitalOut led_status(LED4);
Serial console(USBTX, USBRX); // tx, rx

//InterruptIn can3_int(p16);

//mcp2515 can3(p5, p6, p7, p11);
SPI spi1(p5, p6, p7);

CAN3 can3(spi1, p19, p11);
CAN3 can4(spi1, p20, p12);
//CAN3 can5(spi1, p21, p23);

CAN can2(p30, p29);

Ticker mbed_can_ticker;
Ticker mcp2515_s1_can_ticker;
Ticker mcp2515_s2_can_ticker;
//Ticker mcp2515_s3_can_ticker;

char testbytes[] = { 0xA1, 0xA2, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0xF0 };

void send() {
    static char counter = 0;
    if (can2.write(CANMessage(0x200, &counter, 1))) {
        printf("\n\rCAN2 CanTx--> id: 0x200  dlc: 1  data: %x\n\r", counter);
        counter++;
    }
    // toggle led1 after every transmission
    led_status = !led_status;
}

void sendSPICAN3() {


    CANMessage test(0x300, testbytes, 8);
    can3.send(&test);

}

void sendSPICAN4() {


    CANMessage test(0x400, testbytes, 8);
    can4.send(&test);

}

void sendSPICAN5() {


    CANMessage test(0x500, testbytes, 8);
    can4.send(&test);

}
///////
void canmsg1() {

    led_can=!led_can;

    if ( ( can4.can_checkReceive() == CAN_MSGAVAIL ) ) {
            printf("\n\n\rrecieved some shit on can4\n \r");
        can4.process_CANMessages();
    }
}

/*
void canmsg2() {

    led_can=!led_can;
  
    if ( ( can5.can_checkReceive() == CAN_MSGAVAIL ) ) {
      printf("\n\n\rrecieved some shit on can5\n \r");
        can5.process_CANMessages();
    }
}
*/
void canmsg() {

    led_can=!led_can;
    printf("\n\n\rrecieved some shit on can3\n \r");
    if ( ( can3.can_checkReceive() == CAN_MSGAVAIL ) ) {
        can3.process_CANMessages();
    }
    canmsg1();//canmsg2();

}


int main() {


    // console.baud(57600);
    console.printf("\nStarting\n\n");

    spi1.frequency(5000000); // anything above 5000000 5MHZ works

    can2.frequency(125000);//(500000); 50KBPS 1250000

    console.printf("\n\r\rCAN3 \n\r");
    can3.frequency(CAN_125KBPS);

    console.printf("\n\r\rCAN4 \n\r");
    can4.frequency(CAN_125KBPS);

    console.printf("\n\r\rCAN3 \n\r");
    can3.frequency(CAN_125KBPS);

    console.printf("\n\r\rCAN4 \n\r");
    can4.frequency(CAN_125KBPS);
    
    
    console.printf("\n\r\rCAN5 \n\r");
    //can5.frequency(CAN_125KBPS);
    
    
    wait(.1);
    led_can=0;
    led_serial=0;
    led_analog=0;
    led_status=0;


    //can3._spi.frequency(5000000); // anything above 5000000 5MHZ works

    can3.fall(&canmsg);
    can4.fall(&canmsg1);
    //can5.fall(&canmsg2);


    printf("\n\r\n\r\n\r\n\r\n\r");
    wait(.1);
    mbed_can_ticker.attach(&send, 3);
    mcp2515_s1_can_ticker.attach(&sendSPICAN3, 2);
    mcp2515_s2_can_ticker.attach(&sendSPICAN4, 3);
    //mcp2515_s3_can_ticker.attach(&sendSPICAN5, 1);
    
    while (1) {


        wait(1);

        // canmsg1();
        /*
                //MODE_NORMAL
                if ( ( can3.can_checkReceive() == CAN_MSGAVAIL ) ) {
                    can3.process_CANMessages();
                }
                //MODE_NORMAL
                if ( ( can4.can_checkReceive() == CAN_MSGAVAIL ) ) {
                    can4.process_CANMessages();
                }
        */
        //can3.dumpExtendedStatus();

    }


}