c

Revision:
3:12c2fd911f22
--- /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