Dependencies:   mbed

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?

UserRevisionLine numberNew 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