Dependents: Kamal_CAN ReadFromSerial446 USNA-UMBC-KF-02_v3-noise USNA-UMBC-KF-01
Revision 3:12c2fd911f22, committed 2010-06-16
- Comitter:
- tecnosys
- Date:
- Wed Jun 16 12:31:39 2010 +0000
- Parent:
- 2:b392dd75be80
- Child:
- 4:57418caaee25
- Commit message:
Changed in this revision
| main.cpp | Show annotated file Show diff for this revision Revisions of this file |
--- /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