c
main.cpp@1:dbc44582f2f8, 2010-06-13 (annotated)
- Committer:
- tecnosys
- Date:
- Sun Jun 13 09:52:03 2010 +0000
- Revision:
- 1:dbc44582f2f8
Who changed what in which revision?
User | Revision | Line number | New 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 | } |