c
Diff: main.cpp
- Revision:
- 3:12c2fd911f22
diff -r b392dd75be80 -r 12c2fd911f22 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Wed Jun 16 12:31:39 2010 +0000 @@ -0,0 +1,170 @@ +// 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(); + + } + + +} \ No newline at end of file