Naved Maududi
/
DebugMonitor_revised
Monitor.cpp@2:64a34ae90bb1, 2019-10-05 (annotated)
- Committer:
- nmaududi
- Date:
- Sat Oct 05 21:17:17 2019 +0000
- Revision:
- 2:64a34ae90bb1
- Parent:
- 1:9fa7cc80f1a7
revised version for module 4;
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
nmaududi | 0:4fb921928934 | 1 | /**---------------------------------------------------------------------------- |
nmaududi | 0:4fb921928934 | 2 | \file Monitor.cpp |
nmaududi | 0:4fb921928934 | 3 | -- -- |
nmaududi | 0:4fb921928934 | 4 | -- ECEN 5003 Mastering Embedded System Architecture -- |
nmaududi | 0:4fb921928934 | 5 | -- Project 1 Module 3 -- |
nmaududi | 0:4fb921928934 | 6 | -- Microcontroller Firmware -- |
nmaududi | 0:4fb921928934 | 7 | -- Monitor.cpp -- |
nmaududi | 0:4fb921928934 | 8 | -- -- |
nmaududi | 0:4fb921928934 | 9 | ------------------------------------------------------------------------------- |
nmaududi | 0:4fb921928934 | 10 | -- |
nmaududi | 0:4fb921928934 | 11 | -- Designed for: University of Colorado at Boulder |
nmaududi | 0:4fb921928934 | 12 | -- |
nmaududi | 0:4fb921928934 | 13 | -- |
nmaududi | 0:4fb921928934 | 14 | -- Designed by: Tim Scherr |
nmaududi | 0:4fb921928934 | 15 | -- Revised by: Student's name |
nmaududi | 0:4fb921928934 | 16 | -- |
nmaududi | 0:4fb921928934 | 17 | -- Version: 2.0 |
nmaududi | 0:4fb921928934 | 18 | -- Date of current revision: 2016-09-29 |
nmaududi | 0:4fb921928934 | 19 | -- Target Microcontroller: Freescale MKL25ZVMT4 |
nmaududi | 0:4fb921928934 | 20 | -- Tools used: ARM mbed compiler |
nmaududi | 0:4fb921928934 | 21 | -- ARM mbed SDK |
nmaududi | 0:4fb921928934 | 22 | -- Freescale FRDM-KL25Z Freedom Board |
nmaududi | 0:4fb921928934 | 23 | -- |
nmaududi | 0:4fb921928934 | 24 | -- |
nmaududi | 0:4fb921928934 | 25 | Functional Description: See below |
nmaududi | 0:4fb921928934 | 26 | -- |
nmaududi | 0:4fb921928934 | 27 | -- Copyright (c) 2015 Tim Scherr All rights reserved. |
nmaududi | 0:4fb921928934 | 28 | -- |
nmaududi | 0:4fb921928934 | 29 | */ |
nmaududi | 0:4fb921928934 | 30 | |
nmaududi | 0:4fb921928934 | 31 | #include <stdio.h> |
nmaududi | 0:4fb921928934 | 32 | #include "shared.h" |
nmaududi | 0:4fb921928934 | 33 | |
nmaududi | 0:4fb921928934 | 34 | /******************************************************************************* |
nmaududi | 0:4fb921928934 | 35 | * Set Display Mode Function |
nmaududi | 0:4fb921928934 | 36 | * Function determines the correct display mode. The 3 display modes operate as |
nmaududi | 0:4fb921928934 | 37 | * follows: |
nmaududi | 0:4fb921928934 | 38 | * |
nmaududi | 0:4fb921928934 | 39 | * NORMAL MODE Outputs only mode and state information changes |
nmaududi | 0:4fb921928934 | 40 | * and calculated outputs |
nmaududi | 0:4fb921928934 | 41 | * |
nmaududi | 0:4fb921928934 | 42 | * QUIET MODE No Outputs |
nmaududi | 0:4fb921928934 | 43 | * |
nmaududi | 0:4fb921928934 | 44 | * DEBUG MODE Outputs mode and state information, error counts, |
nmaududi | 0:4fb921928934 | 45 | * register displays, sensor states, and calculated output |
nmaududi | 0:4fb921928934 | 46 | * |
nmaududi | 0:4fb921928934 | 47 | * |
nmaududi | 0:4fb921928934 | 48 | * There is deliberate delay in switching between modes to allow the RS-232 cable |
nmaududi | 0:4fb921928934 | 49 | * to be plugged into the header without causing problems. |
nmaududi | 0:4fb921928934 | 50 | *******************************************************************************/ |
nmaududi | 0:4fb921928934 | 51 | |
nmaududi | 0:4fb921928934 | 52 | |
nmaududi | 0:4fb921928934 | 53 | |
nmaududi | 0:4fb921928934 | 54 | __asm uint32_t getregister(uint32_t x){ |
nmaududi | 0:4fb921928934 | 55 | |
nmaududi | 0:4fb921928934 | 56 | CMP r0,#0; |
nmaududi | 0:4fb921928934 | 57 | BEQ return_from_function_r0 |
nmaududi | 0:4fb921928934 | 58 | CMP r0,#1; |
nmaududi | 0:4fb921928934 | 59 | BEQ return_from_function_r1 |
nmaududi | 0:4fb921928934 | 60 | CMP r0,#2; |
nmaududi | 0:4fb921928934 | 61 | BEQ return_from_function_r2 |
nmaududi | 0:4fb921928934 | 62 | CMP r0,#3; |
nmaududi | 0:4fb921928934 | 63 | BEQ return_from_function_r3 |
nmaududi | 0:4fb921928934 | 64 | CMP r0,#4; |
nmaududi | 0:4fb921928934 | 65 | BEQ return_from_function_r4 |
nmaududi | 0:4fb921928934 | 66 | CMP r0,#5; |
nmaududi | 0:4fb921928934 | 67 | BEQ return_from_function_r5 |
nmaududi | 0:4fb921928934 | 68 | CMP r0,#6; |
nmaududi | 0:4fb921928934 | 69 | BEQ return_from_function_r6 |
nmaududi | 0:4fb921928934 | 70 | CMP r0,#7; |
nmaududi | 0:4fb921928934 | 71 | BEQ return_from_function_r7 |
nmaududi | 0:4fb921928934 | 72 | CMP r0,#8; |
nmaududi | 0:4fb921928934 | 73 | BEQ return_from_function_r8 |
nmaududi | 0:4fb921928934 | 74 | CMP r0,#9; |
nmaududi | 0:4fb921928934 | 75 | BEQ return_from_function_r9 |
nmaududi | 0:4fb921928934 | 76 | CMP r0,#10; |
nmaududi | 0:4fb921928934 | 77 | BEQ return_from_function_r10 |
nmaududi | 0:4fb921928934 | 78 | CMP r0,#11; |
nmaududi | 0:4fb921928934 | 79 | BEQ return_from_function_r11 |
nmaududi | 0:4fb921928934 | 80 | CMP r0,#12; |
nmaududi | 0:4fb921928934 | 81 | BEQ return_from_function_r12 |
nmaududi | 0:4fb921928934 | 82 | CMP r0,#13; |
nmaududi | 0:4fb921928934 | 83 | BEQ return_from_function_r13 |
nmaududi | 0:4fb921928934 | 84 | CMP r0,#14; |
nmaududi | 0:4fb921928934 | 85 | BEQ return_from_function_r14 |
nmaududi | 2:64a34ae90bb1 | 86 | // CMP r0,#15; |
nmaududi | 2:64a34ae90bb1 | 87 | // BEQ return_from_function_r15 |
nmaududi | 0:4fb921928934 | 88 | |
nmaududi | 0:4fb921928934 | 89 | return_from_function_r0 |
nmaududi | 0:4fb921928934 | 90 | MOV r0,r0 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 91 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 92 | return_from_function_r1 |
nmaududi | 0:4fb921928934 | 93 | MOV r0,r1 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 94 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 95 | return_from_function_r2 |
nmaududi | 0:4fb921928934 | 96 | MOV r0,r2 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 97 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 98 | return_from_function_r3 |
nmaududi | 0:4fb921928934 | 99 | MOV r0,r3 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 100 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 101 | return_from_function_r4 |
nmaududi | 0:4fb921928934 | 102 | MOV r0,r4 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 103 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 104 | return_from_function_r5 |
nmaududi | 0:4fb921928934 | 105 | MOV r0,r5 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 106 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 107 | return_from_function_r6 |
nmaududi | 0:4fb921928934 | 108 | MOV r0,r6 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 109 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 110 | return_from_function_r7 |
nmaududi | 0:4fb921928934 | 111 | MOV r0,r7 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 112 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 113 | return_from_function_r8 |
nmaududi | 0:4fb921928934 | 114 | MOV r0,r8 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 115 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 116 | return_from_function_r9 |
nmaududi | 0:4fb921928934 | 117 | MOV r0,r9 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 118 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 119 | return_from_function_r10 |
nmaududi | 0:4fb921928934 | 120 | MOV r0,r10 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 121 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 122 | return_from_function_r11 |
nmaududi | 0:4fb921928934 | 123 | MOV r0,r11 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 124 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 125 | return_from_function_r12 |
nmaududi | 0:4fb921928934 | 126 | MOV r0,r12 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 127 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 128 | return_from_function_r13 |
nmaududi | 0:4fb921928934 | 129 | MOV r0,r13 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 130 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 131 | return_from_function_r14 |
nmaududi | 0:4fb921928934 | 132 | MOV r0,r14 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 133 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 2:64a34ae90bb1 | 134 | //return_from_function_r15 |
nmaududi | 2:64a34ae90bb1 | 135 | |
nmaududi | 2:64a34ae90bb1 | 136 | // MOV r0,15 ; store the return value in r0 |
nmaududi | 2:64a34ae90bb1 | 137 | // BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 138 | } |
nmaududi | 0:4fb921928934 | 139 | |
nmaududi | 0:4fb921928934 | 140 | __asm uint32_t getregister0(void){ |
nmaududi | 0:4fb921928934 | 141 | MOV r0,r0 ; store the return value in r0 |
nmaududi | 0:4fb921928934 | 142 | BLX lr ; Else return from subroutine with link and returning the value of register |
nmaududi | 0:4fb921928934 | 143 | |
nmaududi | 0:4fb921928934 | 144 | } |
nmaududi | 0:4fb921928934 | 145 | void set_display_mode(void) |
nmaududi | 0:4fb921928934 | 146 | { |
nmaududi | 0:4fb921928934 | 147 | UART_direct_msg_put("\r\nSelect Mode"); |
nmaududi | 0:4fb921928934 | 148 | UART_direct_msg_put("\r\n Hit NOR - Normal"); |
nmaududi | 0:4fb921928934 | 149 | UART_direct_msg_put("\r\n Hit QUI - Quiet"); |
nmaududi | 0:4fb921928934 | 150 | UART_direct_msg_put("\r\n Hit DEB - Debug" ); |
nmaududi | 0:4fb921928934 | 151 | UART_direct_msg_put("\r\n Hit V - Version#\r\n"); |
nmaududi | 0:4fb921928934 | 152 | UART_direct_msg_put("\r\nSelect: "); |
nmaududi | 0:4fb921928934 | 153 | |
nmaududi | 0:4fb921928934 | 154 | } |
nmaududi | 0:4fb921928934 | 155 | //*****************************************************************************/ |
nmaududi | 0:4fb921928934 | 156 | /// \fn void chk_UART_msg(void) |
nmaududi | 0:4fb921928934 | 157 | /// |
nmaududi | 0:4fb921928934 | 158 | //*****************************************************************************/ |
nmaududi | 0:4fb921928934 | 159 | void chk_UART_msg(void) |
nmaududi | 0:4fb921928934 | 160 | { |
nmaududi | 0:4fb921928934 | 161 | UCHAR j; |
nmaududi | 0:4fb921928934 | 162 | while( UART_input() ) // becomes true only when a byte has been received |
nmaududi | 0:4fb921928934 | 163 | { //j = *rx_out_ptr++; |
nmaududi | 0:4fb921928934 | 164 | //*tx_out_ptr++ = j; |
nmaududi | 0:4fb921928934 | 165 | //UART0->D = *tx_out_ptr++; /* send next char */ |
nmaududi | 0:4fb921928934 | 166 | // skip if no characters pending |
nmaududi | 0:4fb921928934 | 167 | j = UART_get(); // get next character |
nmaududi | 0:4fb921928934 | 168 | //UART0->D = *tx_out_ptr++; /* send next char */ // echo the character |
nmaududi | 0:4fb921928934 | 169 | |
nmaududi | 0:4fb921928934 | 170 | if( j == '\r' ) // on a enter (return) key press |
nmaududi | 0:4fb921928934 | 171 | { // complete message (all messages end in carriage return) |
nmaududi | 0:4fb921928934 | 172 | UART_msg_put("->"); |
nmaududi | 0:4fb921928934 | 173 | UART_msg_process(); |
nmaududi | 0:4fb921928934 | 174 | } |
nmaududi | 0:4fb921928934 | 175 | else |
nmaududi | 0:4fb921928934 | 176 | { |
nmaududi | 0:4fb921928934 | 177 | if ((j != 0x02) ) // if not ^B |
nmaududi | 0:4fb921928934 | 178 | { // if not command, then |
nmaududi | 0:4fb921928934 | 179 | UART_put(j); // echo the character, modified code for UART_put |
nmaududi | 0:4fb921928934 | 180 | } |
nmaududi | 0:4fb921928934 | 181 | else |
nmaududi | 0:4fb921928934 | 182 | { |
nmaududi | 0:4fb921928934 | 183 | ; |
nmaududi | 0:4fb921928934 | 184 | } |
nmaududi | 0:4fb921928934 | 185 | if( j == '\b' ) |
nmaududi | 0:4fb921928934 | 186 | { // backspace editor |
nmaududi | 0:4fb921928934 | 187 | if( msg_buf_idx != 0) |
nmaududi | 0:4fb921928934 | 188 | { // if not 1st character then destructive |
nmaududi | 0:4fb921928934 | 189 | UART_msg_put(" \b");// backspace |
nmaududi | 0:4fb921928934 | 190 | msg_buf_idx--; |
nmaududi | 0:4fb921928934 | 191 | } |
nmaududi | 0:4fb921928934 | 192 | } |
nmaududi | 0:4fb921928934 | 193 | else if( msg_buf_idx >= MSG_BUF_SIZE ) |
nmaududi | 0:4fb921928934 | 194 | { // check message length too large |
nmaududi | 0:4fb921928934 | 195 | UART_msg_put("\r\nToo Long!"); |
nmaududi | 0:4fb921928934 | 196 | msg_buf_idx = 0; |
nmaududi | 0:4fb921928934 | 197 | } |
nmaududi | 0:4fb921928934 | 198 | else if ((display_mode == QUIET) && (msg_buf[0] != 0x02) && |
nmaududi | 0:4fb921928934 | 199 | (msg_buf[0] != 'D') && (msg_buf[0] != 'N') && |
nmaududi | 0:4fb921928934 | 200 | (msg_buf[0] != 'V') && |
nmaududi | 0:4fb921928934 | 201 | (msg_buf_idx != 0)) |
nmaududi | 0:4fb921928934 | 202 | { // if first character is bad in Quiet mode |
nmaududi | 0:4fb921928934 | 203 | msg_buf_idx = 0; // then start over |
nmaududi | 0:4fb921928934 | 204 | } |
nmaududi | 0:4fb921928934 | 205 | else { // not complete message, store character |
nmaududi | 0:4fb921928934 | 206 | |
nmaududi | 0:4fb921928934 | 207 | msg_buf[msg_buf_idx] = j; |
nmaududi | 0:4fb921928934 | 208 | msg_buf_idx++; |
nmaududi | 0:4fb921928934 | 209 | if (msg_buf_idx > 2) |
nmaududi | 0:4fb921928934 | 210 | { |
nmaududi | 0:4fb921928934 | 211 | UART_msg_process(); |
nmaududi | 0:4fb921928934 | 212 | } |
nmaududi | 0:4fb921928934 | 213 | } |
nmaududi | 0:4fb921928934 | 214 | } |
nmaududi | 0:4fb921928934 | 215 | } |
nmaududi | 0:4fb921928934 | 216 | } |
nmaududi | 0:4fb921928934 | 217 | |
nmaududi | 0:4fb921928934 | 218 | //*****************************************************************************/ |
nmaududi | 0:4fb921928934 | 219 | /// \fn void UART_msg_process(void) |
nmaududi | 0:4fb921928934 | 220 | ///UART Input Message Processing |
nmaududi | 0:4fb921928934 | 221 | //*****************************************************************************/ |
nmaududi | 0:4fb921928934 | 222 | void UART_msg_process(void) |
nmaududi | 0:4fb921928934 | 223 | { |
nmaududi | 0:4fb921928934 | 224 | UCHAR chr,err=0; |
nmaududi | 0:4fb921928934 | 225 | // unsigned char data; |
nmaududi | 0:4fb921928934 | 226 | |
nmaududi | 0:4fb921928934 | 227 | |
nmaududi | 2:64a34ae90bb1 | 228 | if( (chr = msg_buf[0]) <= 0x60 ) |
nmaududi | 2:64a34ae90bb1 | 229 | { // Upper Case |
nmaududi | 2:64a34ae90bb1 | 230 | switch( chr ) |
nmaududi | 2:64a34ae90bb1 | 231 | { |
nmaududi | 0:4fb921928934 | 232 | case 'D': |
nmaududi | 0:4fb921928934 | 233 | if((msg_buf[1] == 'E') && (msg_buf[2] == 'B') && (msg_buf_idx == 3)) |
nmaududi | 0:4fb921928934 | 234 | { |
nmaududi | 0:4fb921928934 | 235 | display_mode = DEBUG; |
nmaududi | 0:4fb921928934 | 236 | UART_direct_msg_put("\r\nMode=DEBUG"); |
nmaududi | 0:4fb921928934 | 237 | UART_direct_msg_put("\n"); |
nmaududi | 0:4fb921928934 | 238 | display_timer = 0; |
nmaududi | 0:4fb921928934 | 239 | } |
nmaududi | 0:4fb921928934 | 240 | else |
nmaududi | 0:4fb921928934 | 241 | err = 1; |
nmaududi | 0:4fb921928934 | 242 | break; |
nmaududi | 0:4fb921928934 | 243 | |
nmaududi | 0:4fb921928934 | 244 | case 'N': |
nmaududi | 0:4fb921928934 | 245 | if((msg_buf[1] == 'O') && (msg_buf[2] == 'R') && (msg_buf_idx == 3)) |
nmaududi | 0:4fb921928934 | 246 | { |
nmaududi | 0:4fb921928934 | 247 | display_mode = NORMAL; |
nmaududi | 0:4fb921928934 | 248 | UART_msg_put("\r\nMode=NORMAL\n"); |
nmaududi | 0:4fb921928934 | 249 | //display_timer = 0; |
nmaududi | 0:4fb921928934 | 250 | } |
nmaududi | 0:4fb921928934 | 251 | else |
nmaududi | 0:4fb921928934 | 252 | err = 1; |
nmaududi | 0:4fb921928934 | 253 | break; |
nmaududi | 0:4fb921928934 | 254 | |
nmaududi | 0:4fb921928934 | 255 | case 'Q': |
nmaududi | 0:4fb921928934 | 256 | if((msg_buf[1] == 'U') && (msg_buf[2] == 'I') && (msg_buf_idx == 3)) |
nmaududi | 0:4fb921928934 | 257 | { |
nmaududi | 0:4fb921928934 | 258 | display_mode = QUIET; |
nmaududi | 0:4fb921928934 | 259 | UART_msg_put("\r\nMode=QUIET\n"); |
nmaududi | 0:4fb921928934 | 260 | display_timer = 0; |
nmaududi | 0:4fb921928934 | 261 | } |
nmaududi | 0:4fb921928934 | 262 | else |
nmaududi | 0:4fb921928934 | 263 | err = 1; |
nmaududi | 0:4fb921928934 | 264 | break; |
nmaududi | 0:4fb921928934 | 265 | |
nmaududi | 0:4fb921928934 | 266 | case 'V': |
nmaududi | 0:4fb921928934 | 267 | display_mode = VERSION; |
nmaududi | 0:4fb921928934 | 268 | UART_msg_put("\r\n"); |
nmaududi | 0:4fb921928934 | 269 | UART_msg_put( CODE_VERSION ); |
nmaududi | 0:4fb921928934 | 270 | UART_msg_put("\r\nSelect "); |
nmaududi | 0:4fb921928934 | 271 | display_timer = 0; |
nmaududi | 0:4fb921928934 | 272 | break; |
nmaududi | 0:4fb921928934 | 273 | |
nmaududi | 0:4fb921928934 | 274 | default: |
nmaududi | 0:4fb921928934 | 275 | err = 1; |
nmaududi | 2:64a34ae90bb1 | 276 | } |
nmaududi | 2:64a34ae90bb1 | 277 | } |
nmaududi | 0:4fb921928934 | 278 | |
nmaududi | 2:64a34ae90bb1 | 279 | else |
nmaududi | 2:64a34ae90bb1 | 280 | { // Lower Case |
nmaududi | 2:64a34ae90bb1 | 281 | switch( chr ) |
nmaududi | 2:64a34ae90bb1 | 282 | { |
nmaududi | 2:64a34ae90bb1 | 283 | default: |
nmaududi | 2:64a34ae90bb1 | 284 | err = 1; |
nmaududi | 2:64a34ae90bb1 | 285 | } |
nmaududi | 2:64a34ae90bb1 | 286 | } |
nmaududi | 0:4fb921928934 | 287 | |
nmaududi | 0:4fb921928934 | 288 | if( err == 1 ) |
nmaududi | 0:4fb921928934 | 289 | { |
nmaududi | 0:4fb921928934 | 290 | UART_msg_put("\n\rError!"); |
nmaududi | 0:4fb921928934 | 291 | } |
nmaududi | 0:4fb921928934 | 292 | else if( err == 2 ) |
nmaududi | 0:4fb921928934 | 293 | { |
nmaududi | 0:4fb921928934 | 294 | UART_msg_put("\n\rNot in DEBUG Mode!"); |
nmaududi | 0:4fb921928934 | 295 | } |
nmaududi | 0:4fb921928934 | 296 | else |
nmaududi | 0:4fb921928934 | 297 | { |
nmaududi | 0:4fb921928934 | 298 | msg_buf_idx = 0; // put index to start of buffer for next message |
nmaududi | 0:4fb921928934 | 299 | ; |
nmaududi | 0:4fb921928934 | 300 | } |
nmaududi | 0:4fb921928934 | 301 | msg_buf_idx = 0; // put index to start of buffer for next message |
nmaududi | 0:4fb921928934 | 302 | |
nmaududi | 0:4fb921928934 | 303 | |
nmaududi | 0:4fb921928934 | 304 | } |
nmaududi | 0:4fb921928934 | 305 | |
nmaududi | 0:4fb921928934 | 306 | |
nmaududi | 0:4fb921928934 | 307 | //***************************************************************************** |
nmaududi | 0:4fb921928934 | 308 | /// \fn is_hex |
nmaududi | 0:4fb921928934 | 309 | /// Function takes |
nmaududi | 0:4fb921928934 | 310 | /// @param a single ASCII character and returns |
nmaududi | 0:4fb921928934 | 311 | /// @return 1 if hex digit, 0 otherwise. |
nmaududi | 0:4fb921928934 | 312 | /// |
nmaududi | 0:4fb921928934 | 313 | //***************************************************************************** |
nmaududi | 0:4fb921928934 | 314 | UCHAR is_hex(UCHAR c) |
nmaududi | 0:4fb921928934 | 315 | { |
nmaududi | 0:4fb921928934 | 316 | if( (((c |= 0x20) >= '0') && (c <= '9')) || ((c >= 'a') && (c <= 'f')) ) |
nmaududi | 0:4fb921928934 | 317 | return 1; |
nmaududi | 0:4fb921928934 | 318 | return 0; |
nmaududi | 0:4fb921928934 | 319 | } |
nmaududi | 0:4fb921928934 | 320 | |
nmaududi | 0:4fb921928934 | 321 | /******************************************************************************* |
nmaududi | 0:4fb921928934 | 322 | * \fn DEBUG and DIAGNOSTIC Mode UART Operation |
nmaududi | 0:4fb921928934 | 323 | *******************************************************************************/ |
nmaududi | 0:4fb921928934 | 324 | |
nmaududi | 0:4fb921928934 | 325 | void monitor(void) |
nmaududi | 0:4fb921928934 | 326 | { |
nmaududi | 0:4fb921928934 | 327 | /**********************************/ |
nmaududi | 0:4fb921928934 | 328 | /* Spew outputs */ |
nmaududi | 0:4fb921928934 | 329 | /**********************************/ |
nmaududi | 0:4fb921928934 | 330 | |
nmaududi | 0:4fb921928934 | 331 | switch(display_mode) |
nmaududi | 0:4fb921928934 | 332 | { |
nmaududi | 0:4fb921928934 | 333 | case(QUIET): |
nmaududi | 0:4fb921928934 | 334 | { |
nmaududi | 0:4fb921928934 | 335 | UART_msg_put("\r\n "); |
nmaududi | 0:4fb921928934 | 336 | display_flag = 0; |
nmaududi | 0:4fb921928934 | 337 | } |
nmaududi | 0:4fb921928934 | 338 | break; |
nmaududi | 0:4fb921928934 | 339 | case(VERSION): |
nmaududi | 0:4fb921928934 | 340 | { |
nmaududi | 0:4fb921928934 | 341 | display_flag = 0; |
nmaududi | 0:4fb921928934 | 342 | } |
nmaududi | 0:4fb921928934 | 343 | break; |
nmaududi | 0:4fb921928934 | 344 | case(NORMAL): |
nmaududi | 0:4fb921928934 | 345 | { |
nmaududi | 0:4fb921928934 | 346 | if (display_flag == 1) |
nmaududi | 0:4fb921928934 | 347 | { // resets and sets continous receive enable bit |
nmaududi | 2:64a34ae90bb1 | 348 | UART_msg_put("\r\nNORMAL "); |
nmaududi | 0:4fb921928934 | 349 | UART_direct_msg_put(" Flow: "); |
nmaududi | 2:64a34ae90bb1 | 350 | // ECEN 5803 add code as indicated |
nmaududi | 2:64a34ae90bb1 | 351 | //UART_direct_hex_put(flow); |
nmaududi | 0:4fb921928934 | 352 | UART_direct_msg_put(" Temp: "); |
nmaududi | 2:64a34ae90bb1 | 353 | // ECEN 5803 add code as indicated |
nmaududi | 2:64a34ae90bb1 | 354 | // UART_direct_hex_put(temperature); |
nmaududi | 0:4fb921928934 | 355 | UART_direct_msg_put(" Freq: "); |
nmaududi | 2:64a34ae90bb1 | 356 | // ECEN 5803 add code as indicated |
nmaududi | 2:64a34ae90bb1 | 357 | //UART_direct_hex_put(frequency); |
nmaududi | 0:4fb921928934 | 358 | display_flag = 0; |
nmaududi | 0:4fb921928934 | 359 | } |
nmaududi | 0:4fb921928934 | 360 | } |
nmaududi | 0:4fb921928934 | 361 | break; |
nmaududi | 0:4fb921928934 | 362 | case(DEBUG): |
nmaududi | 0:4fb921928934 | 363 | { |
nmaududi | 0:4fb921928934 | 364 | if (display_flag == 1) |
nmaududi | 0:4fb921928934 | 365 | { |
nmaududi | 0:4fb921928934 | 366 | UART_direct_msg_put("\r\nDEBUG "); |
nmaududi | 0:4fb921928934 | 367 | UART_direct_msg_put(" Flow: "); |
nmaududi | 2:64a34ae90bb1 | 368 | // ECEN 5803 add code as indicated |
nmaududi | 2:64a34ae90bb1 | 369 | UART_direct_hex_put(flow); |
nmaududi | 2:64a34ae90bb1 | 370 | UART_direct_msg_put(" "); |
nmaududi | 2:64a34ae90bb1 | 371 | // ECEN 5803 add code as indicated |
nmaududi | 0:4fb921928934 | 372 | UART_direct_msg_put(" Temp: "); |
nmaududi | 2:64a34ae90bb1 | 373 | // ECEN 5803 add code as indicated |
nmaududi | 2:64a34ae90bb1 | 374 | UART_direct_hex_put(temperature); |
nmaududi | 2:64a34ae90bb1 | 375 | UART_direct_msg_put(" "); |
nmaududi | 0:4fb921928934 | 376 | UART_direct_msg_put(" Freq: "); |
nmaududi | 2:64a34ae90bb1 | 377 | // ECEN 5803 add code as indicated |
nmaududi | 2:64a34ae90bb1 | 378 | UART_direct_hex_put_word(freq_value); |
nmaududi | 2:64a34ae90bb1 | 379 | UART_direct_msg_put(" "); |
nmaududi | 0:4fb921928934 | 380 | |
nmaududi | 0:4fb921928934 | 381 | /**************** ECEN 5803 add code as indicated ***************/ |
nmaududi | 0:4fb921928934 | 382 | // Create a display of error counts, sensor states, and |
nmaududi | 0:4fb921928934 | 383 | // ARM Registers R0-R15 - Completed displaying register, not error counts or sensor states |
nmaududi | 0:4fb921928934 | 384 | /**********************************/ |
nmaududi | 0:4fb921928934 | 385 | /* Define varables to store registers*/ |
nmaududi | 0:4fb921928934 | 386 | /**********************************/ |
nmaududi | 0:4fb921928934 | 387 | //Assembly language call to function to get ARM registers (R0-R15) |
nmaududi | 2:64a34ae90bb1 | 388 | |
nmaududi | 2:64a34ae90bb1 | 389 | uint32_t register0 = getregister0(); |
nmaududi | 2:64a34ae90bb1 | 390 | uint32_t register1 = getregister(1); |
nmaududi | 2:64a34ae90bb1 | 391 | uint32_t register2 = getregister(2); |
nmaududi | 2:64a34ae90bb1 | 392 | uint32_t register3 = getregister(3); |
nmaududi | 2:64a34ae90bb1 | 393 | uint32_t register4 = getregister(4); |
nmaududi | 2:64a34ae90bb1 | 394 | uint32_t register5 = getregister(5); |
nmaududi | 2:64a34ae90bb1 | 395 | uint32_t register6 = getregister(6); |
nmaududi | 2:64a34ae90bb1 | 396 | uint32_t register7 = getregister(7); |
nmaududi | 2:64a34ae90bb1 | 397 | uint32_t register8 = getregister(8); |
nmaududi | 2:64a34ae90bb1 | 398 | uint32_t register9 = getregister(9); |
nmaududi | 2:64a34ae90bb1 | 399 | uint32_t register10 = getregister(10); |
nmaududi | 2:64a34ae90bb1 | 400 | uint32_t register11 = getregister(11); |
nmaududi | 2:64a34ae90bb1 | 401 | uint32_t register12 = getregister(12); |
nmaududi | 2:64a34ae90bb1 | 402 | uint32_t register13 = getregister(13); |
nmaududi | 2:64a34ae90bb1 | 403 | uint32_t register14 = getregister(14); |
nmaududi | 2:64a34ae90bb1 | 404 | //uint32_t register15 = getregister(15); // Write code to get register 15 |
nmaududi | 2:64a34ae90bb1 | 405 | // Display registers |
nmaududi | 2:64a34ae90bb1 | 406 | UART_direct_msg_put("\r\nARM REGISTERS[R0-R15]:"); |
nmaududi | 2:64a34ae90bb1 | 407 | UART_direct_msg_put("\r\nREGISTER0:"); |
nmaududi | 2:64a34ae90bb1 | 408 | UART_direct_hex_put_word(register0); |
nmaududi | 2:64a34ae90bb1 | 409 | UART_direct_msg_put("\r\nREGISTER1:"); |
nmaududi | 2:64a34ae90bb1 | 410 | UART_direct_hex_put_word(register1); |
nmaududi | 2:64a34ae90bb1 | 411 | UART_direct_msg_put("\r\nREGISTER2:"); |
nmaududi | 2:64a34ae90bb1 | 412 | UART_direct_hex_put_word(register2); |
nmaududi | 2:64a34ae90bb1 | 413 | UART_direct_msg_put("\r\nREGISTER3:"); |
nmaududi | 2:64a34ae90bb1 | 414 | UART_direct_hex_put_word(register3); |
nmaududi | 2:64a34ae90bb1 | 415 | UART_direct_msg_put("\r\nREGISTER4:"); |
nmaududi | 2:64a34ae90bb1 | 416 | UART_direct_hex_put_word(register4); |
nmaududi | 2:64a34ae90bb1 | 417 | UART_direct_msg_put("\r\nREGISTER5:"); |
nmaududi | 2:64a34ae90bb1 | 418 | UART_direct_hex_put_word(register5); |
nmaududi | 2:64a34ae90bb1 | 419 | UART_direct_msg_put("\r\nREGISTER6:"); |
nmaududi | 2:64a34ae90bb1 | 420 | UART_direct_hex_put_word(register6); |
nmaududi | 2:64a34ae90bb1 | 421 | UART_direct_msg_put("\r\nREGISTER7:"); |
nmaududi | 2:64a34ae90bb1 | 422 | UART_direct_hex_put_word(register7); |
nmaududi | 2:64a34ae90bb1 | 423 | UART_direct_msg_put("\r\nREGISTER8:"); |
nmaududi | 2:64a34ae90bb1 | 424 | UART_direct_hex_put_word(register8); |
nmaududi | 2:64a34ae90bb1 | 425 | UART_direct_msg_put("\r\nREGISTER9:"); |
nmaududi | 2:64a34ae90bb1 | 426 | UART_direct_hex_put_word(register9); |
nmaududi | 2:64a34ae90bb1 | 427 | UART_direct_msg_put("\r\nREGISTER10:"); |
nmaududi | 2:64a34ae90bb1 | 428 | UART_direct_hex_put_word(register10); |
nmaududi | 2:64a34ae90bb1 | 429 | UART_direct_msg_put("\r\nREGISTER11:"); |
nmaududi | 2:64a34ae90bb1 | 430 | UART_direct_hex_put_word(register11); |
nmaududi | 2:64a34ae90bb1 | 431 | UART_direct_msg_put("\r\nREGISTER12:"); |
nmaududi | 2:64a34ae90bb1 | 432 | UART_direct_hex_put_word(register12); |
nmaududi | 2:64a34ae90bb1 | 433 | UART_direct_msg_put("\r\nREGISTER13:"); |
nmaududi | 2:64a34ae90bb1 | 434 | UART_direct_hex_put_word(register13); |
nmaududi | 2:64a34ae90bb1 | 435 | UART_direct_msg_put("\r\nREGISTER14:"); |
nmaududi | 2:64a34ae90bb1 | 436 | UART_direct_hex_put_word(register14); |
nmaududi | 2:64a34ae90bb1 | 437 | //UART_direct_msg_put("\r\nREGISTER15:"); |
nmaududi | 2:64a34ae90bb1 | 438 | //UART_hex_put(register15); |
nmaududi | 0:4fb921928934 | 439 | |
nmaududi | 0:4fb921928934 | 440 | |
nmaududi | 2:64a34ae90bb1 | 441 | // Create a command to read a section of Memory and display it |
nmaududi | 2:64a34ae90bb1 | 442 | |
nmaududi | 2:64a34ae90bb1 | 443 | //int32_t *memory_ptr; /* pointer store the address in memory to display */ |
nmaududi | 0:4fb921928934 | 444 | |
nmaududi | 0:4fb921928934 | 445 | |
nmaududi | 0:4fb921928934 | 446 | // Create a command to read 16 words from the current stack |
nmaududi | 0:4fb921928934 | 447 | // and display it in reverse chronological order. |
nmaududi | 0:4fb921928934 | 448 | |
nmaududi | 0:4fb921928934 | 449 | |
nmaududi | 0:4fb921928934 | 450 | // clear flag to ISR |
nmaududi | 0:4fb921928934 | 451 | display_flag = 0; |
nmaududi | 0:4fb921928934 | 452 | } |
nmaududi | 0:4fb921928934 | 453 | } |
nmaududi | 0:4fb921928934 | 454 | break; |
nmaududi | 0:4fb921928934 | 455 | |
nmaududi | 0:4fb921928934 | 456 | default: |
nmaududi | 0:4fb921928934 | 457 | { |
nmaududi | 0:4fb921928934 | 458 | UART_msg_put("Mode Error"); |
nmaududi | 0:4fb921928934 | 459 | } |
nmaududi | 0:4fb921928934 | 460 | } |
nmaududi | 2:64a34ae90bb1 | 461 | } |
nmaududi | 2:64a34ae90bb1 | 462 |