c

Committer:
tecnosys
Date:
Sun Jun 13 09:52:03 2010 +0000
Revision:
1:dbc44582f2f8

        

Who changed what in which revision?

UserRevisionLine numberNew contents of line
tecnosys 1:dbc44582f2f8 1 //#define PROTOPLATFORM
tecnosys 1:dbc44582f2f8 2 #define MBEDPLATFORM
tecnosys 1:dbc44582f2f8 3 // Flip an LED every time we see the rising edge interrupt on a pin
tecnosys 1:dbc44582f2f8 4 #include "mbed.h"
tecnosys 1:dbc44582f2f8 5 #include "CAN3.h"
tecnosys 1:dbc44582f2f8 6 #include "mcp2515.h"
tecnosys 1:dbc44582f2f8 7 #include "mcp2515_can.h"
tecnosys 1:dbc44582f2f8 8 #include <Includes/Platform.h>
tecnosys 1:dbc44582f2f8 9
tecnosys 1:dbc44582f2f8 10
tecnosys 1:dbc44582f2f8 11
tecnosys 1:dbc44582f2f8 12 DigitalOut led_can(LED1);
tecnosys 1:dbc44582f2f8 13 DigitalOut led_serial(LED2);
tecnosys 1:dbc44582f2f8 14 DigitalOut led_analog(LED3);
tecnosys 1:dbc44582f2f8 15 DigitalOut led_status(LED4);
tecnosys 1:dbc44582f2f8 16 Serial console(CONSOLETX, CONSOLERX); // tx, rx
tecnosys 1:dbc44582f2f8 17 //Serial console(USBTX, USBRX); // tx, rx
tecnosys 1:dbc44582f2f8 18
tecnosys 1:dbc44582f2f8 19
tecnosys 1:dbc44582f2f8 20 SPI spi1(CAN_SPI_MOSI, CAN_SPI_MISO, CAN_SPI_SCK);
tecnosys 1:dbc44582f2f8 21 //SPI spi1(p5,p6,p7);
tecnosys 1:dbc44582f2f8 22 CAN3 can1(spi1, CAN1_CS, CAN1_NT);
tecnosys 1:dbc44582f2f8 23 CAN3 can2(spi1, CAN2_CS, CAN2_NT);
tecnosys 1:dbc44582f2f8 24 CAN3 can3(spi1, CAN3_CS, CAN3_NT);
tecnosys 1:dbc44582f2f8 25 CAN3 can4(spi1, CAN4_CS, CAN4_NT);
tecnosys 1:dbc44582f2f8 26
tecnosys 1:dbc44582f2f8 27 //CAN3 can1(spi1, p19, p11);
tecnosys 1:dbc44582f2f8 28 //CAN3 can2(spi1, p20, p12);
tecnosys 1:dbc44582f2f8 29 //CAN3 can5(spi1, p21, p23);
tecnosys 1:dbc44582f2f8 30 //CAN can5(p30, p29);
tecnosys 1:dbc44582f2f8 31
tecnosys 1:dbc44582f2f8 32 //CAN can5(CAN5_L, CAN5_H);
tecnosys 1:dbc44582f2f8 33
tecnosys 1:dbc44582f2f8 34
tecnosys 1:dbc44582f2f8 35 Ticker mbed_can_ticker;
tecnosys 1:dbc44582f2f8 36 Ticker mcp2515_s1_can_ticker;
tecnosys 1:dbc44582f2f8 37 Ticker mcp2515_s2_can_ticker;
tecnosys 1:dbc44582f2f8 38 Ticker mcp2515_s3_can_ticker;
tecnosys 1:dbc44582f2f8 39 Ticker mcp2515_s4_can_ticker;
tecnosys 1:dbc44582f2f8 40
tecnosys 1:dbc44582f2f8 41 char testbytes[] = { 0xA1, 0xA2, 0xAA, 0xAA, 0x00, 0x00, 0x00, 0xF0 };
tecnosys 1:dbc44582f2f8 42
tecnosys 1:dbc44582f2f8 43 void showMessage(CAN3 can) {
tecnosys 1:dbc44582f2f8 44 CANMessage msg;
tecnosys 1:dbc44582f2f8 45
tecnosys 1:dbc44582f2f8 46
tecnosys 1:dbc44582f2f8 47 while ( can.read(&msg) == CAN_OK ) {
tecnosys 1:dbc44582f2f8 48 console.printf(" \n \r CAN[]: rx -> id 0x%02x dlc %d ",msg.id,msg.len);
tecnosys 1:dbc44582f2f8 49 for (int i=0;i<msg.len;i++) {
tecnosys 1:dbc44582f2f8 50 console.printf("%02x", msg.data[i]);
tecnosys 1:dbc44582f2f8 51 console.printf(" ");
tecnosys 1:dbc44582f2f8 52 led_serial=!led_serial;
tecnosys 1:dbc44582f2f8 53 }
tecnosys 1:dbc44582f2f8 54
tecnosys 1:dbc44582f2f8 55 }
tecnosys 1:dbc44582f2f8 56 }
tecnosys 1:dbc44582f2f8 57
tecnosys 1:dbc44582f2f8 58 void send() {
tecnosys 1:dbc44582f2f8 59 static char counter = 0;
tecnosys 1:dbc44582f2f8 60 //can5.write(CANMessage(0x200, &counter, 1));
tecnosys 1:dbc44582f2f8 61 counter++;
tecnosys 1:dbc44582f2f8 62
tecnosys 1:dbc44582f2f8 63 }
tecnosys 1:dbc44582f2f8 64
tecnosys 1:dbc44582f2f8 65 void sendSPICAN1() {
tecnosys 1:dbc44582f2f8 66
tecnosys 1:dbc44582f2f8 67
tecnosys 1:dbc44582f2f8 68 CANMessage test(0x100, testbytes, 8);
tecnosys 1:dbc44582f2f8 69 can1.write(&test);
tecnosys 1:dbc44582f2f8 70
tecnosys 1:dbc44582f2f8 71 }
tecnosys 1:dbc44582f2f8 72
tecnosys 1:dbc44582f2f8 73 void sendSPICAN2() {
tecnosys 1:dbc44582f2f8 74
tecnosys 1:dbc44582f2f8 75
tecnosys 1:dbc44582f2f8 76 CANMessage test(0x200, testbytes, 8);
tecnosys 1:dbc44582f2f8 77 can2.write(&test);
tecnosys 1:dbc44582f2f8 78
tecnosys 1:dbc44582f2f8 79 }
tecnosys 1:dbc44582f2f8 80
tecnosys 1:dbc44582f2f8 81
tecnosys 1:dbc44582f2f8 82 void sendSPICAN3() {
tecnosys 1:dbc44582f2f8 83
tecnosys 1:dbc44582f2f8 84
tecnosys 1:dbc44582f2f8 85 CANMessage test(0x300, testbytes, 8);
tecnosys 1:dbc44582f2f8 86 // can5.write(test);
tecnosys 1:dbc44582f2f8 87
tecnosys 1:dbc44582f2f8 88 }
tecnosys 1:dbc44582f2f8 89
tecnosys 1:dbc44582f2f8 90
tecnosys 1:dbc44582f2f8 91 void sendSPICAN4() {
tecnosys 1:dbc44582f2f8 92
tecnosys 1:dbc44582f2f8 93
tecnosys 1:dbc44582f2f8 94 CANMessage test(0x400, testbytes, 8);
tecnosys 1:dbc44582f2f8 95 //can4.write(&test);
tecnosys 1:dbc44582f2f8 96
tecnosys 1:dbc44582f2f8 97 }
tecnosys 1:dbc44582f2f8 98
tecnosys 1:dbc44582f2f8 99
tecnosys 1:dbc44582f2f8 100 ///////
tecnosys 1:dbc44582f2f8 101
tecnosys 1:dbc44582f2f8 102
tecnosys 1:dbc44582f2f8 103 void getCANMessages() {
tecnosys 1:dbc44582f2f8 104
tecnosys 1:dbc44582f2f8 105 showMessage(can1);
tecnosys 1:dbc44582f2f8 106 showMessage(can2);
tecnosys 1:dbc44582f2f8 107 //showMessage(can3);
tecnosys 1:dbc44582f2f8 108 //showMessage(can4);
tecnosys 1:dbc44582f2f8 109
tecnosys 1:dbc44582f2f8 110 }
tecnosys 1:dbc44582f2f8 111
tecnosys 1:dbc44582f2f8 112 int main() {
tecnosys 1:dbc44582f2f8 113
tecnosys 1:dbc44582f2f8 114
tecnosys 1:dbc44582f2f8 115
tecnosys 1:dbc44582f2f8 116 led_can=1;
tecnosys 1:dbc44582f2f8 117 led_status=1;
tecnosys 1:dbc44582f2f8 118
tecnosys 1:dbc44582f2f8 119 console.baud(57600);
tecnosys 1:dbc44582f2f8 120 console.printf("\nStarting\n\n");
tecnosys 1:dbc44582f2f8 121
tecnosys 1:dbc44582f2f8 122 // freopen("/console", "w", stdout);
tecnosys 1:dbc44582f2f8 123 // spi1.format(8,0);
tecnosys 1:dbc44582f2f8 124 // spi1.frequency(5000000); // anything above 5000000 5MHZ works
tecnosys 1:dbc44582f2f8 125 //spi1.format(16,0);
tecnosys 1:dbc44582f2f8 126 spi1.frequency(10000000);
tecnosys 1:dbc44582f2f8 127
tecnosys 1:dbc44582f2f8 128 // can5.frequency(125000);//(500000); 50KBPS 1250000
tecnosys 1:dbc44582f2f8 129
tecnosys 1:dbc44582f2f8 130 console.printf("\n\r\rCAN1 \n\r");
tecnosys 1:dbc44582f2f8 131 // can1.frequency(50000);
tecnosys 1:dbc44582f2f8 132 can1.frequency(50000);
tecnosys 1:dbc44582f2f8 133
tecnosys 1:dbc44582f2f8 134 console.printf("\n\r\rCAN2 \n\r");
tecnosys 1:dbc44582f2f8 135 // can2.frequency(5000);
tecnosys 1:dbc44582f2f8 136 can1.frequency(125000);
tecnosys 1:dbc44582f2f8 137
tecnosys 1:dbc44582f2f8 138 console.printf("\n\r\rCAN3 \n\r");
tecnosys 1:dbc44582f2f8 139 can1.frequency(250000);
tecnosys 1:dbc44582f2f8 140
tecnosys 1:dbc44582f2f8 141 console.printf("\n\r\rCAN4 \n\r");
tecnosys 1:dbc44582f2f8 142 can1.frequency(500000);
tecnosys 1:dbc44582f2f8 143
tecnosys 1:dbc44582f2f8 144
tecnosys 1:dbc44582f2f8 145 wait(.1);
tecnosys 1:dbc44582f2f8 146 led_can=0;
tecnosys 1:dbc44582f2f8 147 led_serial=0;
tecnosys 1:dbc44582f2f8 148 led_analog=0;
tecnosys 1:dbc44582f2f8 149 led_status=1;
tecnosys 1:dbc44582f2f8 150
tecnosys 1:dbc44582f2f8 151
tecnosys 1:dbc44582f2f8 152 //can3._spi.frequency(5000000); // anything above 5000000 5MHZ works
tecnosys 1:dbc44582f2f8 153
tecnosys 1:dbc44582f2f8 154 can1.fall(&getCANMessages);
tecnosys 1:dbc44582f2f8 155 can2.fall(&getCANMessages);
tecnosys 1:dbc44582f2f8 156 //can5.fall(&canmsg2);
tecnosys 1:dbc44582f2f8 157
tecnosys 1:dbc44582f2f8 158
tecnosys 1:dbc44582f2f8 159 printf("\n\r\n\r\n\r\n\r\n\r");
tecnosys 1:dbc44582f2f8 160 wait(.1);
tecnosys 1:dbc44582f2f8 161 mbed_can_ticker.attach(&send, 3);
tecnosys 1:dbc44582f2f8 162 mcp2515_s1_can_ticker.attach(&sendSPICAN1, 2);
tecnosys 1:dbc44582f2f8 163 mcp2515_s2_can_ticker.attach(&sendSPICAN2, 3);
tecnosys 1:dbc44582f2f8 164 mcp2515_s3_can_ticker.attach(&sendSPICAN3, 2);
tecnosys 1:dbc44582f2f8 165 mcp2515_s4_can_ticker.attach(&sendSPICAN4, 5);
tecnosys 1:dbc44582f2f8 166 //mcp2515_s3_can_ticker.attach(&sendSPICAN5, 1);
tecnosys 1:dbc44582f2f8 167 console.printf("here");
tecnosys 1:dbc44582f2f8 168 while (1) {
tecnosys 1:dbc44582f2f8 169
tecnosys 1:dbc44582f2f8 170 console.printf("here2");
tecnosys 1:dbc44582f2f8 171 wait(1);
tecnosys 1:dbc44582f2f8 172
tecnosys 1:dbc44582f2f8 173 // canmsg1();
tecnosys 1:dbc44582f2f8 174 /*
tecnosys 1:dbc44582f2f8 175 //MODE_NORMAL
tecnosys 1:dbc44582f2f8 176 if ( ( can3.can_checkReceive() == CAN_MSGAVAIL ) ) {
tecnosys 1:dbc44582f2f8 177 can3.process_CANMessages();
tecnosys 1:dbc44582f2f8 178 }
tecnosys 1:dbc44582f2f8 179 //MODE_NORMAL
tecnosys 1:dbc44582f2f8 180 if ( ( can4.can_checkReceive() == CAN_MSGAVAIL ) ) {
tecnosys 1:dbc44582f2f8 181 can4.process_CANMessages();
tecnosys 1:dbc44582f2f8 182 }
tecnosys 1:dbc44582f2f8 183 */
tecnosys 1:dbc44582f2f8 184 //can3.dumpExtendedStatus();
tecnosys 1:dbc44582f2f8 185
tecnosys 1:dbc44582f2f8 186 }
tecnosys 1:dbc44582f2f8 187
tecnosys 1:dbc44582f2f8 188
tecnosys 1:dbc44582f2f8 189 }