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.
AplicationLayer/DebugCommander.cpp@3:171f4d0ca77b, 2015-08-20 (annotated)
- Committer:
- nightseas
- Date:
- Thu Aug 20 11:36:01 2015 +0000
- Revision:
- 3:171f4d0ca77b
Add debug commander tool.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nightseas | 3:171f4d0ca77b | 1 | #include "SysConfig.h" |
nightseas | 3:171f4d0ca77b | 2 | |
nightseas | 3:171f4d0ca77b | 3 | void LedFlasher(void) |
nightseas | 3:171f4d0ca77b | 4 | { |
nightseas | 3:171f4d0ca77b | 5 | int ledNumOn; |
nightseas | 3:171f4d0ca77b | 6 | for(ledNumOn = 1; ledNumOn < LED_NUM_MAX; ledNumOn++) |
nightseas | 3:171f4d0ca77b | 7 | { |
nightseas | 3:171f4d0ca77b | 8 | LedOffAll(); |
nightseas | 3:171f4d0ca77b | 9 | LedOn(ledNumOn); |
nightseas | 3:171f4d0ca77b | 10 | wait_ms(300); |
nightseas | 3:171f4d0ca77b | 11 | } |
nightseas | 3:171f4d0ca77b | 12 | } |
nightseas | 3:171f4d0ca77b | 13 | |
nightseas | 3:171f4d0ca77b | 14 | void DebugFunc_Motor(void) |
nightseas | 3:171f4d0ca77b | 15 | { |
nightseas | 3:171f4d0ca77b | 16 | int cmdDebug; |
nightseas | 3:171f4d0ca77b | 17 | int dir = 's', turn = 'm'; |
nightseas | 3:171f4d0ca77b | 18 | float speed = 0; |
nightseas | 3:171f4d0ca77b | 19 | |
nightseas | 3:171f4d0ca77b | 20 | Mot_StartVelocimeter(); |
nightseas | 3:171f4d0ca77b | 21 | |
nightseas | 3:171f4d0ca77b | 22 | uart_db.printf("\n\r\n\r++++++++ Motor Test ++++++++\n\r\n\r"); |
nightseas | 3:171f4d0ca77b | 23 | uart_db.printf("Usage: +.speed up, -.speed down, p.stop, \n\rw.forward, s.backward, a.turn left, d.turn right, q.quit test\n\r"); |
nightseas | 3:171f4d0ca77b | 24 | uart_db.printf(" Input:"); |
nightseas | 3:171f4d0ca77b | 25 | |
nightseas | 3:171f4d0ca77b | 26 | while(1) |
nightseas | 3:171f4d0ca77b | 27 | { |
nightseas | 3:171f4d0ca77b | 28 | for(int i=0;i<3000;i++) |
nightseas | 3:171f4d0ca77b | 29 | { |
nightseas | 3:171f4d0ca77b | 30 | cmdDebug = uart_db.getc(); |
nightseas | 3:171f4d0ca77b | 31 | switch(cmdDebug) |
nightseas | 3:171f4d0ca77b | 32 | { |
nightseas | 3:171f4d0ca77b | 33 | case '+': |
nightseas | 3:171f4d0ca77b | 34 | speed += 0.1; |
nightseas | 3:171f4d0ca77b | 35 | if(speed > 1) |
nightseas | 3:171f4d0ca77b | 36 | speed = 1; |
nightseas | 3:171f4d0ca77b | 37 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 38 | uart_db.printf("\n\rMotor speed set to %.01f%%.\n\r", speed * 100.0); |
nightseas | 3:171f4d0ca77b | 39 | break; |
nightseas | 3:171f4d0ca77b | 40 | |
nightseas | 3:171f4d0ca77b | 41 | case '-': |
nightseas | 3:171f4d0ca77b | 42 | speed -= 0.1; |
nightseas | 3:171f4d0ca77b | 43 | if(speed < 0) |
nightseas | 3:171f4d0ca77b | 44 | speed = 0; |
nightseas | 3:171f4d0ca77b | 45 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 46 | uart_db.printf("\n\rMotor speed set to %.01f%%.\n\r", speed * 100.0); |
nightseas | 3:171f4d0ca77b | 47 | break; |
nightseas | 3:171f4d0ca77b | 48 | |
nightseas | 3:171f4d0ca77b | 49 | case 'w': |
nightseas | 3:171f4d0ca77b | 50 | dir = 'f'; |
nightseas | 3:171f4d0ca77b | 51 | turn = 'm'; |
nightseas | 3:171f4d0ca77b | 52 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 53 | uart_db.printf("\n\rMotor direction set to forward.\n\r"); |
nightseas | 3:171f4d0ca77b | 54 | break; |
nightseas | 3:171f4d0ca77b | 55 | |
nightseas | 3:171f4d0ca77b | 56 | case 's': |
nightseas | 3:171f4d0ca77b | 57 | dir = 'b'; |
nightseas | 3:171f4d0ca77b | 58 | turn = 'm'; |
nightseas | 3:171f4d0ca77b | 59 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 60 | uart_db.printf("\n\rMotor direction set to backward.\n\r"); |
nightseas | 3:171f4d0ca77b | 61 | break; |
nightseas | 3:171f4d0ca77b | 62 | |
nightseas | 3:171f4d0ca77b | 63 | case 'a': |
nightseas | 3:171f4d0ca77b | 64 | turn = 'l'; |
nightseas | 3:171f4d0ca77b | 65 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 66 | uart_db.printf("\n\rMotor will turn left.\n\r"); |
nightseas | 3:171f4d0ca77b | 67 | break; |
nightseas | 3:171f4d0ca77b | 68 | |
nightseas | 3:171f4d0ca77b | 69 | case 'd': |
nightseas | 3:171f4d0ca77b | 70 | turn = 'r'; |
nightseas | 3:171f4d0ca77b | 71 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 72 | uart_db.printf("\n\rMotor will turn right.\n\r"); |
nightseas | 3:171f4d0ca77b | 73 | break; |
nightseas | 3:171f4d0ca77b | 74 | |
nightseas | 3:171f4d0ca77b | 75 | case 'p': |
nightseas | 3:171f4d0ca77b | 76 | dir = 's'; |
nightseas | 3:171f4d0ca77b | 77 | turn = 'm'; |
nightseas | 3:171f4d0ca77b | 78 | speed = 0; |
nightseas | 3:171f4d0ca77b | 79 | Mot_Ctrl(dir, turn, speed); |
nightseas | 3:171f4d0ca77b | 80 | uart_db.printf("\n\rMotor will stop.\n\r"); |
nightseas | 3:171f4d0ca77b | 81 | break; |
nightseas | 3:171f4d0ca77b | 82 | |
nightseas | 3:171f4d0ca77b | 83 | case 'q': |
nightseas | 3:171f4d0ca77b | 84 | uart_db.printf("\n\rQuiting test...\n\r"); |
nightseas | 3:171f4d0ca77b | 85 | Mot_StopVelocimeter(); |
nightseas | 3:171f4d0ca77b | 86 | return; |
nightseas | 3:171f4d0ca77b | 87 | } |
nightseas | 3:171f4d0ca77b | 88 | wait_ms(1); |
nightseas | 3:171f4d0ca77b | 89 | } |
nightseas | 3:171f4d0ca77b | 90 | uart_db.printf("\n\r[Speed Info]\n\rMOT1 = %drpm, MOT2 = %drpm, MOT3 = %drpm, MOT4 = %drpm.\n\r", Mot_GetSpeed(1), Mot_GetSpeed(2), Mot_GetSpeed(3), Mot_GetSpeed(4)); |
nightseas | 3:171f4d0ca77b | 91 | } |
nightseas | 3:171f4d0ca77b | 92 | } |
nightseas | 3:171f4d0ca77b | 93 | |
nightseas | 3:171f4d0ca77b | 94 | void DebugFunc_Servo(void) |
nightseas | 3:171f4d0ca77b | 95 | { |
nightseas | 3:171f4d0ca77b | 96 | int cmdDebug; |
nightseas | 3:171f4d0ca77b | 97 | int channel = 1; |
nightseas | 3:171f4d0ca77b | 98 | float angle = 0; |
nightseas | 3:171f4d0ca77b | 99 | |
nightseas | 3:171f4d0ca77b | 100 | uart_db.printf("\n\r\n\r++++++++ Servo Test ++++++++\n\r\n\r"); |
nightseas | 3:171f4d0ca77b | 101 | uart_db.printf("Usage: 1~4.select servo channel, +.increase angle, -.decrease angle, \n\rd.set default angle, q.quit test\n\r"); |
nightseas | 3:171f4d0ca77b | 102 | uart_db.printf(" Input:"); |
nightseas | 3:171f4d0ca77b | 103 | |
nightseas | 3:171f4d0ca77b | 104 | while(1) |
nightseas | 3:171f4d0ca77b | 105 | { |
nightseas | 3:171f4d0ca77b | 106 | cmdDebug = uart_db.getc(); |
nightseas | 3:171f4d0ca77b | 107 | switch(cmdDebug) |
nightseas | 3:171f4d0ca77b | 108 | { |
nightseas | 3:171f4d0ca77b | 109 | case '1': |
nightseas | 3:171f4d0ca77b | 110 | case '2': |
nightseas | 3:171f4d0ca77b | 111 | case '3': |
nightseas | 3:171f4d0ca77b | 112 | case '4': |
nightseas | 3:171f4d0ca77b | 113 | channel = cmdDebug - '0'; |
nightseas | 3:171f4d0ca77b | 114 | uart_db.printf("\n\rSelect servo channel <%d>.\n\r", channel); |
nightseas | 3:171f4d0ca77b | 115 | break; |
nightseas | 3:171f4d0ca77b | 116 | |
nightseas | 3:171f4d0ca77b | 117 | case '+': |
nightseas | 3:171f4d0ca77b | 118 | angle += 5; |
nightseas | 3:171f4d0ca77b | 119 | if(angle > 90) |
nightseas | 3:171f4d0ca77b | 120 | angle = 90; |
nightseas | 3:171f4d0ca77b | 121 | Servo_SetAngle(channel, angle); |
nightseas | 3:171f4d0ca77b | 122 | uart_db.printf("\n\rServo position set to %.01f degrees.\n\r", angle); |
nightseas | 3:171f4d0ca77b | 123 | break; |
nightseas | 3:171f4d0ca77b | 124 | |
nightseas | 3:171f4d0ca77b | 125 | case '-': |
nightseas | 3:171f4d0ca77b | 126 | angle -= 5; |
nightseas | 3:171f4d0ca77b | 127 | if(angle < -90) |
nightseas | 3:171f4d0ca77b | 128 | angle = -90; |
nightseas | 3:171f4d0ca77b | 129 | Servo_SetAngle(channel, angle); |
nightseas | 3:171f4d0ca77b | 130 | uart_db.printf("\n\rServo position set to %.01f degrees.\n\r", angle); |
nightseas | 3:171f4d0ca77b | 131 | break; |
nightseas | 3:171f4d0ca77b | 132 | |
nightseas | 3:171f4d0ca77b | 133 | case 'd': |
nightseas | 3:171f4d0ca77b | 134 | angle = 0; |
nightseas | 3:171f4d0ca77b | 135 | Servo_SetAngle(channel, angle); |
nightseas | 3:171f4d0ca77b | 136 | uart_db.printf("\n\rServo position set back to default.\n\r", angle); |
nightseas | 3:171f4d0ca77b | 137 | break; |
nightseas | 3:171f4d0ca77b | 138 | |
nightseas | 3:171f4d0ca77b | 139 | case 'q': |
nightseas | 3:171f4d0ca77b | 140 | uart_db.printf("\n\rQuiting test...\n\r"); |
nightseas | 3:171f4d0ca77b | 141 | Mot_StopVelocimeter(); |
nightseas | 3:171f4d0ca77b | 142 | return; |
nightseas | 3:171f4d0ca77b | 143 | } |
nightseas | 3:171f4d0ca77b | 144 | wait_ms(1); |
nightseas | 3:171f4d0ca77b | 145 | } |
nightseas | 3:171f4d0ca77b | 146 | } |
nightseas | 3:171f4d0ca77b | 147 | |
nightseas | 3:171f4d0ca77b | 148 | void DebugFunc_Us(void) |
nightseas | 3:171f4d0ca77b | 149 | { |
nightseas | 3:171f4d0ca77b | 150 | uart_db.printf("Test function not implemented...\n\r"); |
nightseas | 3:171f4d0ca77b | 151 | } |
nightseas | 3:171f4d0ca77b | 152 | |
nightseas | 3:171f4d0ca77b | 153 | void DebugFunc_Vmon(void) |
nightseas | 3:171f4d0ca77b | 154 | { |
nightseas | 3:171f4d0ca77b | 155 | uart_db.printf("Test function not implemented...\n\r"); |
nightseas | 3:171f4d0ca77b | 156 | } |
nightseas | 3:171f4d0ca77b | 157 | |
nightseas | 3:171f4d0ca77b | 158 | void DebugFunc_TestAll(void) |
nightseas | 3:171f4d0ca77b | 159 | { |
nightseas | 3:171f4d0ca77b | 160 | SelfTest(); |
nightseas | 3:171f4d0ca77b | 161 | } |
nightseas | 3:171f4d0ca77b | 162 | |
nightseas | 3:171f4d0ca77b | 163 | //Debug interface with text menu through serial port |
nightseas | 3:171f4d0ca77b | 164 | //This function is a loop with exit option |
nightseas | 3:171f4d0ca77b | 165 | void DebugCommander(void) |
nightseas | 3:171f4d0ca77b | 166 | { |
nightseas | 3:171f4d0ca77b | 167 | int quitFlag = 0, cmdDebug; |
nightseas | 3:171f4d0ca77b | 168 | while(!quitFlag) |
nightseas | 3:171f4d0ca77b | 169 | { |
nightseas | 3:171f4d0ca77b | 170 | uart_db.printf("\n\r\n\r============ RPi MOT HAT Debug Demo ============\n\r\n\r"); |
nightseas | 3:171f4d0ca77b | 171 | uart_db.printf(" 0. All function auto test.\n\r"); |
nightseas | 3:171f4d0ca77b | 172 | uart_db.printf(" 1. Motor control test.\n\r"); |
nightseas | 3:171f4d0ca77b | 173 | uart_db.printf(" 2. Servo control test.\n\r"); |
nightseas | 3:171f4d0ca77b | 174 | uart_db.printf(" 3. Ultrasound rangefinder test.\n\r"); |
nightseas | 3:171f4d0ca77b | 175 | uart_db.printf(" 4. Power monitor test.\n\r"); |
nightseas | 3:171f4d0ca77b | 176 | uart_db.printf(" q. Exit demo.\n\r\n\r"); |
nightseas | 3:171f4d0ca77b | 177 | uart_db.printf(" Input:"); |
nightseas | 3:171f4d0ca77b | 178 | |
nightseas | 3:171f4d0ca77b | 179 | while(!uart_db.readable()); |
nightseas | 3:171f4d0ca77b | 180 | cmdDebug = uart_db.getc(); |
nightseas | 3:171f4d0ca77b | 181 | |
nightseas | 3:171f4d0ca77b | 182 | switch(cmdDebug) |
nightseas | 3:171f4d0ca77b | 183 | { |
nightseas | 3:171f4d0ca77b | 184 | case '0': |
nightseas | 3:171f4d0ca77b | 185 | DebugFunc_TestAll(); |
nightseas | 3:171f4d0ca77b | 186 | break; |
nightseas | 3:171f4d0ca77b | 187 | |
nightseas | 3:171f4d0ca77b | 188 | case '1': |
nightseas | 3:171f4d0ca77b | 189 | DebugFunc_Motor(); |
nightseas | 3:171f4d0ca77b | 190 | break; |
nightseas | 3:171f4d0ca77b | 191 | |
nightseas | 3:171f4d0ca77b | 192 | case '2': |
nightseas | 3:171f4d0ca77b | 193 | DebugFunc_Servo(); |
nightseas | 3:171f4d0ca77b | 194 | break; |
nightseas | 3:171f4d0ca77b | 195 | |
nightseas | 3:171f4d0ca77b | 196 | case '3': |
nightseas | 3:171f4d0ca77b | 197 | DebugFunc_Us(); |
nightseas | 3:171f4d0ca77b | 198 | break; |
nightseas | 3:171f4d0ca77b | 199 | |
nightseas | 3:171f4d0ca77b | 200 | case '4': |
nightseas | 3:171f4d0ca77b | 201 | DebugFunc_Vmon(); |
nightseas | 3:171f4d0ca77b | 202 | break; |
nightseas | 3:171f4d0ca77b | 203 | |
nightseas | 3:171f4d0ca77b | 204 | case 'q': |
nightseas | 3:171f4d0ca77b | 205 | quitFlag = 1; |
nightseas | 3:171f4d0ca77b | 206 | break; |
nightseas | 3:171f4d0ca77b | 207 | |
nightseas | 3:171f4d0ca77b | 208 | default: |
nightseas | 3:171f4d0ca77b | 209 | uart_db.printf("Incorrect input!\n\r"); |
nightseas | 3:171f4d0ca77b | 210 | break; |
nightseas | 3:171f4d0ca77b | 211 | } |
nightseas | 3:171f4d0ca77b | 212 | } |
nightseas | 3:171f4d0ca77b | 213 | } |
nightseas | 3:171f4d0ca77b | 214 |