Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Daan_Test1_maxon.cpp@1:822c609fb2ce, 2019-04-05 (annotated)
- Committer:
- DanielleKruijver
- Date:
- Fri Apr 05 12:12:24 2019 +0000
- Revision:
- 1:822c609fb2ce
- Parent:
- 0:785972ab5892
- Child:
- 2:1117ce9d1867
Test 1 CAN line maxon motor
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| DanielleKruijver | 0:785972ab5892 | 1 | #include "mbed.h" |
| DanielleKruijver | 0:785972ab5892 | 2 | #include "Daan_Test1_maxon.h" |
| DanielleKruijver | 0:785972ab5892 | 3 | #include "rtos.h" |
| DanielleKruijver | 0:785972ab5892 | 4 | #define EPOS_DEBUG |
| DanielleKruijver | 0:785972ab5892 | 5 | |
| DanielleKruijver | 0:785972ab5892 | 6 | extern RawSerial pc; |
| DanielleKruijver | 0:785972ab5892 | 7 | extern CAN can; |
| DanielleKruijver | 0:785972ab5892 | 8 | |
| DanielleKruijver | 0:785972ab5892 | 9 | CANMessage create_CAN_msg(int COB_ID, int LENGTH, char * DATA){ //Je opent hier de functie create_CAN_msg |
| DanielleKruijver | 0:785972ab5892 | 10 | // create the message |
| DanielleKruijver | 0:785972ab5892 | 11 | CANMessage messageOut; //MessageOut is gekoppeld aan CAN message en ga je hieronder vullen |
| DanielleKruijver | 0:785972ab5892 | 12 | |
| DanielleKruijver | 0:785972ab5892 | 13 | messageOut.format = CANStandard; // standard or extended ID (can be skipped for standard) |
| DanielleKruijver | 0:785972ab5892 | 14 | messageOut.id = COB_ID; |
| DanielleKruijver | 0:785972ab5892 | 15 | messageOut.len = LENGTH; |
| DanielleKruijver | 0:785972ab5892 | 16 | |
| DanielleKruijver | 0:785972ab5892 | 17 | for ( int i = 0 ; i<LENGTH ; i++) { |
| DanielleKruijver | 0:785972ab5892 | 18 | messageOut.data[i] = DATA[i]; // repeat for each byte. |
| DanielleKruijver | 0:785972ab5892 | 19 | } |
| DanielleKruijver | 0:785972ab5892 | 20 | |
| DanielleKruijver | 0:785972ab5892 | 21 | if(can.write(messageOut)) { |
| DanielleKruijver | 0:785972ab5892 | 22 | #ifdef EPOS_DEBUG |
| DanielleKruijver | 0:785972ab5892 | 23 | pc.printf("sending message : "); |
| DanielleKruijver | 0:785972ab5892 | 24 | for ( int ii = 0 ; ii<LENGTH ; ii++) { |
| DanielleKruijver | 0:785972ab5892 | 25 | pc.printf("%02x ",messageOut.data[ii]); |
| DanielleKruijver | 0:785972ab5892 | 26 | } |
| DanielleKruijver | 0:785972ab5892 | 27 | pc.printf("\r\n"); |
| DanielleKruijver | 0:785972ab5892 | 28 | #endif |
| DanielleKruijver | 0:785972ab5892 | 29 | return 1; |
| DanielleKruijver | 0:785972ab5892 | 30 | } |
| DanielleKruijver | 0:785972ab5892 | 31 | return messageOut; |
| DanielleKruijver | 0:785972ab5892 | 32 | } |
| DanielleKruijver | 0:785972ab5892 | 33 | |
| DanielleKruijver | 0:785972ab5892 | 34 | //Maken van alle CAN messages |
| DanielleKruijver | 0:785972ab5892 | 35 | CANMessage EPOS::Shutdown(){ |
| DanielleKruijver | 0:785972ab5892 | 36 | return create_CAN_msg(0x600+NODE_ID,8,(char*)Shutdown_Data); |
| DanielleKruijver | 0:785972ab5892 | 37 | } |
| DanielleKruijver | 0:785972ab5892 | 38 | |
| DanielleKruijver | 0:785972ab5892 | 39 | CANMessage EPOS::SwitchOnAndEnable(){ |
| DanielleKruijver | 0:785972ab5892 | 40 | return create_CAN_msg(0x600+NODE_ID,8,(char*)Switch_On_And_Enable_Data); |
| DanielleKruijver | 0:785972ab5892 | 41 | } |
| DanielleKruijver | 0:785972ab5892 | 42 | |
| DanielleKruijver | 0:785972ab5892 | 43 | CANMessage EPOS::StatusWord(){ |
| DanielleKruijver | 0:785972ab5892 | 44 | return create_CAN_msg(0x600 + NODE_ID,4,(char*)StatusWord_Data); |
| DanielleKruijver | 0:785972ab5892 | 45 | } |
| DanielleKruijver | 0:785972ab5892 | 46 | |
| DanielleKruijver | 0:785972ab5892 | 47 | CANMessage EPOS::Homing_Mode(){ |
| DanielleKruijver | 0:785972ab5892 | 48 | return create_CAN_msg(0x600+NODE_ID,8,(char*)Homing_Mode_Data); |
| DanielleKruijver | 0:785972ab5892 | 49 | } |
| DanielleKruijver | 0:785972ab5892 | 50 | |
| DanielleKruijver | 0:785972ab5892 | 51 | CANMessage EPOS::Homing_Method_positive(){ |
| DanielleKruijver | 0:785972ab5892 | 52 | return create_CAN_msg(0x600+NODE_ID,8,(char*)Homing_Method_Data_positive); |
| DanielleKruijver | 0:785972ab5892 | 53 | } |
| DanielleKruijver | 0:785972ab5892 | 54 | |
| DanielleKruijver | 0:785972ab5892 | 55 | CANMessage EPOS::Homing_Method_negative(){ |
| DanielleKruijver | 0:785972ab5892 | 56 | return create_CAN_msg(0x600+NODE_ID,8,(char*)Homing_Method_Data_negative); |
| DanielleKruijver | 0:785972ab5892 | 57 | } |
| DanielleKruijver | 0:785972ab5892 | 58 | |
| DanielleKruijver | 0:785972ab5892 | 59 | CANMessage EPOS::StartHoming(){ |
| DanielleKruijver | 0:785972ab5892 | 60 | return create_CAN_msg(0x600+NODE_ID,8,(char*)Start_Homing_Data); |
| DanielleKruijver | 0:785972ab5892 | 61 | } |
| DanielleKruijver | 0:785972ab5892 | 62 | |
| DanielleKruijver | 0:785972ab5892 | 63 | |
| DanielleKruijver | 0:785972ab5892 | 64 | void EPOS::Homing(){ |
| DanielleKruijver | 0:785972ab5892 | 65 | |
| DanielleKruijver | 1:822c609fb2ce | 66 | int foo=0; |
| DanielleKruijver | 0:785972ab5892 | 67 | |
| DanielleKruijver | 0:785972ab5892 | 68 | foo += can.write(Homing_Mode()); |
| DanielleKruijver | 0:785972ab5892 | 69 | Thread::wait(50); |
| DanielleKruijver | 0:785972ab5892 | 70 | |
| DanielleKruijver | 0:785972ab5892 | 71 | foo += can.write(Homing_Method_positive()); |
| DanielleKruijver | 0:785972ab5892 | 72 | Thread::wait(50); |
| DanielleKruijver | 0:785972ab5892 | 73 | |
| DanielleKruijver | 1:822c609fb2ce | 74 | foo += can.write(Shutdown()); |
| DanielleKruijver | 0:785972ab5892 | 75 | Thread::wait(50); |
| DanielleKruijver | 0:785972ab5892 | 76 | |
| DanielleKruijver | 0:785972ab5892 | 77 | foo += can.write(SwitchOnAndEnable()); |
| DanielleKruijver | 0:785972ab5892 | 78 | Thread::wait(50); |
| DanielleKruijver | 0:785972ab5892 | 79 | |
| DanielleKruijver | 0:785972ab5892 | 80 | foo += can.write(StartHoming()); |
| DanielleKruijver | 0:785972ab5892 | 81 | |
| DanielleKruijver | 0:785972ab5892 | 82 | CANMessage msg; |
| DanielleKruijver | 1:822c609fb2ce | 83 | |
| DanielleKruijver | 0:785972ab5892 | 84 | Thread::wait(150); |
| DanielleKruijver | 0:785972ab5892 | 85 | |
| DanielleKruijver | 0:785972ab5892 | 86 | int iii=0; |
| DanielleKruijver | 0:785972ab5892 | 87 | while(iii<100){ |
| DanielleKruijver | 0:785972ab5892 | 88 | |
| DanielleKruijver | 0:785972ab5892 | 89 | #ifdef EPOS_DEBUG |
| DanielleKruijver | 0:785972ab5892 | 90 | pc.printf("\n Checking if homing NODE(%i) finished attempt :(%d) \r\n",NODE_ID,iii); |
| DanielleKruijver | 0:785972ab5892 | 91 | #endif |
| DanielleKruijver | 0:785972ab5892 | 92 | |
| DanielleKruijver | 0:785972ab5892 | 93 | can.write(StatusWord()); |
| DanielleKruijver | 0:785972ab5892 | 94 | |
| DanielleKruijver | 0:785972ab5892 | 95 | Thread::wait(100); |
| DanielleKruijver | 0:785972ab5892 | 96 | |
| DanielleKruijver | 0:785972ab5892 | 97 | if (msg.data[5] == 0x95){ // case home found |
| DanielleKruijver | 0:785972ab5892 | 98 | #ifdef EPOS_DEBUG |
| DanielleKruijver | 0:785972ab5892 | 99 | pc.printf("Homeing NODE(%i) Succesfull!! \r\n",NODE_ID); |
| DanielleKruijver | 0:785972ab5892 | 100 | #endif |
| DanielleKruijver | 0:785972ab5892 | 101 | //EPOS_HOME[NODE_ID-1]=1; |
| DanielleKruijver | 0:785972ab5892 | 102 | return; |
| DanielleKruijver | 0:785972ab5892 | 103 | } |
| DanielleKruijver | 0:785972ab5892 | 104 | else if ( !(msg.data[4] == 0x37)){ // case homing failed |
| DanielleKruijver | 0:785972ab5892 | 105 | #ifdef EPOS_DEBUG |
| DanielleKruijver | 0:785972ab5892 | 106 | pc.printf("Homeing NODE(%i) FAILED!! \r\n",NODE_ID); |
| DanielleKruijver | 0:785972ab5892 | 107 | #endif |
| DanielleKruijver | 0:785972ab5892 | 108 | //EPOS_HOME[NODE_ID-1]=0; |
| DanielleKruijver | 0:785972ab5892 | 109 | return; |
| DanielleKruijver | 0:785972ab5892 | 110 | } |
| DanielleKruijver | 0:785972ab5892 | 111 | |
| DanielleKruijver | 0:785972ab5892 | 112 | iii++; |
| DanielleKruijver | 0:785972ab5892 | 113 | Thread::wait(100); |
| DanielleKruijver | 0:785972ab5892 | 114 | } |
| DanielleKruijver | 0:785972ab5892 | 115 | |
| DanielleKruijver | 0:785972ab5892 | 116 | #ifdef EPOS_DEBUG |
| DanielleKruijver | 0:785972ab5892 | 117 | printf("\n Homing NODE(%i) timed out \r\n Resetting Device\r\n",NODE_ID); |
| DanielleKruijver | 0:785972ab5892 | 118 | #endif |
| DanielleKruijver | 0:785972ab5892 | 119 | |
| DanielleKruijver | 0:785972ab5892 | 120 | //can.write(ReSet1()); |
| DanielleKruijver | 0:785972ab5892 | 121 | //can.write(ReSet2()); |
| DanielleKruijver | 0:785972ab5892 | 122 | //EPOS_HOME[NODE_ID-1]=0;; |
| DanielleKruijver | 0:785972ab5892 | 123 | } |
| DanielleKruijver | 0:785972ab5892 | 124 | |
| DanielleKruijver | 0:785972ab5892 | 125 |