Barometer program : Data Logger function includes Barometer & temperature (BMP180), Humidity & temp. (RHT03), Sunshine (Cds), RTC(M41T62) data. : Logging data saves into EEPROM (AT24C1024) using ring buffer function.

Dependencies:   AT24C1024 RHT03 TextLCD BMP180 M41T62

Fork of mbed_blinky by Mbed

Please see https://mbed.org/users/kenjiArai/notebook/mbed-lpc1114fn28-barometer-with-data-logging/#

Committer:
kenjiArai
Date:
Sat Aug 08 07:01:19 2020 +0000
Revision:
18:b3a27f681171
Parent:
16:f164f8912201
change to mbed-os-6.2.0 but not work this revision

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 18:b3a27f681171 1 #if 0
kenjiArai 18:b3a27f681171 2 //??????????????????????????????????????????????????????????????????????????????
kenjiArai 18:b3a27f681171 3 // Due to ROM & RAM size limitation
kenjiArai 18:b3a27f681171 4 //??????????????????????????????????????????????????????????????????????????????
kenjiArai 18:b3a27f681171 5
kenjiArai 15:065fbeddc305 6 /*
kenjiArai 15:065fbeddc305 7 * mbed Application program for the mbed LPC1114FN28
kenjiArai 15:065fbeddc305 8 * Monitor program Ver.2 for only LPC1114FN28
kenjiArai 15:065fbeddc305 9 *
kenjiArai 18:b3a27f681171 10 * Copyright (c) 2014,'20 Kenji Arai / JH1PJL
kenjiArai 18:b3a27f681171 11 * http://www7b.biglobe.ne.jp/~kenjia/
kenjiArai 18:b3a27f681171 12 * https://os.mbed.com/users/kenjiArai/
kenjiArai 18:b3a27f681171 13 * Created: June 1st, 2014
kenjiArai 18:b3a27f681171 14 * Revised: August 8th, 2020
kenjiArai 15:065fbeddc305 15 */
kenjiArai 15:065fbeddc305 16 /*
kenjiArai 15:065fbeddc305 17 * Function
kenjiArai 15:065fbeddc305 18 * Show Memory contents, Digital port, Analog input port, CPU clock and others in the mbed board
kenjiArai 15:065fbeddc305 19 * Connection
kenjiArai 15:065fbeddc305 20 * uart USB Vertual com
kenjiArai 15:065fbeddc305 21 */
kenjiArai 15:065fbeddc305 22
kenjiArai 15:065fbeddc305 23 // Include ---------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 24 #include "mbed.h"
kenjiArai 16:f164f8912201 25 #include "AT24C1024.h" // Own lib. / EEPROM control
kenjiArai 15:065fbeddc305 26 #include "mon_hw_config.h"
kenjiArai 18:b3a27f681171 27 #include "redirect_stdio.h"
kenjiArai 15:065fbeddc305 28
kenjiArai 15:065fbeddc305 29 // Object ----------------------------------------------------------------------------------------
kenjiArai 18:b3a27f681171 30 extern I2C xxi2c; // SDA, SCL
kenjiArai 18:b3a27f681171 31 extern AT24C1024 xat24c1024; // Atmel 1Mbit EE-PROM
kenjiArai 15:065fbeddc305 32
kenjiArai 15:065fbeddc305 33 // Definition ------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 34 // Define clocks
kenjiArai 15:065fbeddc305 35 #define __XTAL (12000000UL) // Oscillator frequency
kenjiArai 15:065fbeddc305 36 #define __SYS_OSC_CLK ( __XTAL) // Main oscillator frequency
kenjiArai 15:065fbeddc305 37 #define __IRC_OSC_CLK (12000000UL) // Internal RC oscillator frequency
kenjiArai 15:065fbeddc305 38
kenjiArai 15:065fbeddc305 39 // Range check status
kenjiArai 15:065fbeddc305 40 #define ERR_NOTHING 0
kenjiArai 15:065fbeddc305 41 #define ERR_MODIFY_SIZ 1
kenjiArai 15:065fbeddc305 42 #define ERR_OUT_OF_RANGE 2
kenjiArai 15:065fbeddc305 43
kenjiArai 15:065fbeddc305 44 // Reg. Size
kenjiArai 15:065fbeddc305 45 #define SIZE8 32
kenjiArai 15:065fbeddc305 46 #define SIZE16 16
kenjiArai 15:065fbeddc305 47 #define SIZE_FULL 32
kenjiArai 15:065fbeddc305 48 #define SIZE_X 32
kenjiArai 15:065fbeddc305 49
kenjiArai 15:065fbeddc305 50 // IO Cinfig
kenjiArai 15:065fbeddc305 51 #define IO_ALL 0
kenjiArai 15:065fbeddc305 52 #define IO_I2C 1
kenjiArai 15:065fbeddc305 53
kenjiArai 18:b3a27f681171 54 #define GETC(x) getc(x)
kenjiArai 18:b3a27f681171 55 #define PUTC(x) putc(x)
kenjiArai 18:b3a27f681171 56 #define PRINTF(...) printf(__VA_ARGS__)
kenjiArai 18:b3a27f681171 57 #define READABLE(x) readable(x)
kenjiArai 15:065fbeddc305 58
kenjiArai 15:065fbeddc305 59 typedef struct {
kenjiArai 15:065fbeddc305 60 unsigned long mstr;
kenjiArai 15:065fbeddc305 61 unsigned long msiz;
kenjiArai 15:065fbeddc305 62 unsigned long mtmp;
kenjiArai 15:065fbeddc305 63 unsigned long mold;
kenjiArai 15:065fbeddc305 64 unsigned char mflg;
kenjiArai 15:065fbeddc305 65 unsigned char mbhw;
kenjiArai 15:065fbeddc305 66 } MEMO;
kenjiArai 15:065fbeddc305 67
kenjiArai 16:f164f8912201 68 #define DW_CHAR sizeof(char)
kenjiArai 16:f164f8912201 69 #define DW_SHORT sizeof(short)
kenjiArai 16:f164f8912201 70 #define DW_LONG sizeof(long)
kenjiArai 15:065fbeddc305 71
kenjiArai 15:065fbeddc305 72 typedef unsigned long DWORD;
kenjiArai 15:065fbeddc305 73 typedef unsigned short WORD;
kenjiArai 15:065fbeddc305 74 typedef unsigned char BYTE;
kenjiArai 15:065fbeddc305 75 typedef unsigned int UINT;
kenjiArai 15:065fbeddc305 76
kenjiArai 15:065fbeddc305 77 // RAM -------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 78 // Memory management
kenjiArai 15:065fbeddc305 79 unsigned long SystemFrequency;
kenjiArai 15:065fbeddc305 80
kenjiArai 15:065fbeddc305 81 #if USE_MEM
kenjiArai 15:065fbeddc305 82 // RAM -------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 83 static MEMO mem;
kenjiArai 15:065fbeddc305 84
kenjiArai 15:065fbeddc305 85 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 86 // Memory range data
kenjiArai 15:065fbeddc305 87 const uint32_t mem_range[][2] = { // Memory access range
kenjiArai 15:065fbeddc305 88 { 0x00000000, 0x00007fff }, // On-chip non-volatile memory //32KB Flash memory
kenjiArai 15:065fbeddc305 89 { 0x10000000, 0x10000fff }, // On-chip SRAM //4KB local RAM
kenjiArai 15:065fbeddc305 90 { 0x1fff0000, 0x1fff3fff }, // Boot ROM //16KB Boot ROM
kenjiArai 15:065fbeddc305 91 { 0x40000000, 0x4007ffff }, // IO area
kenjiArai 15:065fbeddc305 92 { 0x50000000, 0x501fffff } // IO area
kenjiArai 15:065fbeddc305 93 };
kenjiArai 15:065fbeddc305 94
kenjiArai 18:b3a27f681171 95 static const char *const rmsg0 = "FLASH ";
kenjiArai 18:b3a27f681171 96 static const char *const rmsg1 = "SRAM ";
kenjiArai 18:b3a27f681171 97 static const char *const rmsg2 = "BOOT ROM ";
kenjiArai 18:b3a27f681171 98 static const char *const rmsg3 = "IO ";
kenjiArai 18:b3a27f681171 99 static const char *const rmsg4 = "IO ";
kenjiArai 15:065fbeddc305 100 #endif // USE_MEM
kenjiArai 15:065fbeddc305 101
kenjiArai 15:065fbeddc305 102 #if USE_EEP
kenjiArai 15:065fbeddc305 103 // RAM -------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 104 static MEMO eepmem;
kenjiArai 15:065fbeddc305 105
kenjiArai 15:065fbeddc305 106 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 107 const uint32_t eepmem_range[2] = { /* Memory access range */
kenjiArai 15:065fbeddc305 108 0x00000, 0x1ffff /* EEPROM 1Mbits 128Kbytes */
kenjiArai 15:065fbeddc305 109 };
kenjiArai 15:065fbeddc305 110 #endif
kenjiArai 15:065fbeddc305 111
kenjiArai 15:065fbeddc305 112 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 18:b3a27f681171 113 static const char *const mon_msg_hw = "HW monitor only for mbed LPC1114FN28";
kenjiArai 15:065fbeddc305 114
kenjiArai 15:065fbeddc305 115 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 116 extern char linebuf[];
kenjiArai 15:065fbeddc305 117 extern int buf_size;
kenjiArai 15:065fbeddc305 118
kenjiArai 15:065fbeddc305 119 extern void put_rn ( void );
kenjiArai 15:065fbeddc305 120 extern void put_r ( void );
kenjiArai 15:065fbeddc305 121 extern void put_lin ( void );
kenjiArai 15:065fbeddc305 122 extern void put_spc( uint8_t n);
kenjiArai 15:065fbeddc305 123 extern void get_line (char *buff, int len);
kenjiArai 15:065fbeddc305 124 extern int xatoi (char **str, unsigned long *res);
kenjiArai 15:065fbeddc305 125
kenjiArai 15:065fbeddc305 126 //-------------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 127 // Control Program
kenjiArai 15:065fbeddc305 128 //-------------------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 129 // Help Massage
kenjiArai 15:065fbeddc305 130 void msg_hlp_hw (void){
kenjiArai 15:065fbeddc305 131 PRINTF(mon_msg_hw);
kenjiArai 15:065fbeddc305 132 put_rn();
kenjiArai 15:065fbeddc305 133 #if USE_MEM
kenjiArai 15:065fbeddc305 134 PRINTF("m - Entry Memory Mode");
kenjiArai 15:065fbeddc305 135 put_rn();
kenjiArai 15:065fbeddc305 136 PRINTF("m>? -> Help ");
kenjiArai 15:065fbeddc305 137 put_rn();
kenjiArai 15:065fbeddc305 138 #endif // USE_MEM
kenjiArai 15:065fbeddc305 139 #if USE_EEP
kenjiArai 15:065fbeddc305 140 PRINTF("e -Enter EEPROM Memory Mode ");
kenjiArai 15:065fbeddc305 141 put_rn();
kenjiArai 15:065fbeddc305 142 PRINTF("e>? -> Help ");
kenjiArai 15:065fbeddc305 143 put_rn();
kenjiArai 15:065fbeddc305 144 #endif // USE_EEP
kenjiArai 15:065fbeddc305 145 #if USE_REG_SPI_UART
kenjiArai 15:065fbeddc305 146 PRINTF("r - Show SPI & UART Reg.");
kenjiArai 15:065fbeddc305 147 put_rn();
kenjiArai 15:065fbeddc305 148 PRINTF("r>? -> Help ");
kenjiArai 15:065fbeddc305 149 put_rn();
kenjiArai 15:065fbeddc305 150 #endif // USE_REG_SPI_UART
kenjiArai 15:065fbeddc305 151 #if USE_PORT
kenjiArai 15:065fbeddc305 152 PRINTF("p - Show port configration");
kenjiArai 15:065fbeddc305 153 put_rn();
kenjiArai 15:065fbeddc305 154 #endif // USE_PORT
kenjiArai 15:065fbeddc305 155 #if USE_REG_I2C
kenjiArai 15:065fbeddc305 156 PRINTF("i - Show I2C Reg.");
kenjiArai 15:065fbeddc305 157 put_rn();
kenjiArai 15:065fbeddc305 158 #endif // USE_REG_I2C
kenjiArai 15:065fbeddc305 159 #if USE_SYS
kenjiArai 15:065fbeddc305 160 PRINTF("sf - System Clock");
kenjiArai 15:065fbeddc305 161 put_rn();
kenjiArai 15:065fbeddc305 162 PRINTF("sc - System / CPU information");
kenjiArai 15:065fbeddc305 163 put_rn();
kenjiArai 15:065fbeddc305 164 #endif // USE_SYS
kenjiArai 15:065fbeddc305 165 #if USE_RPT
kenjiArai 15:065fbeddc305 166 PRINTF("/ [a],[p] commands every 1 sec Exit =hit any key (not ENTER key) ");
kenjiArai 15:065fbeddc305 167 put_rn();
kenjiArai 15:065fbeddc305 168 #endif
kenjiArai 15:065fbeddc305 169 #if DEBUG
kenjiArai 15:065fbeddc305 170 PRINTF("x Special command for Debug ");
kenjiArai 15:065fbeddc305 171 put_rn();
kenjiArai 15:065fbeddc305 172 #endif // DEBUG
kenjiArai 15:065fbeddc305 173 PRINTF("q - Quit (back to called routine)");
kenjiArai 15:065fbeddc305 174 put_rn();
kenjiArai 15:065fbeddc305 175 }
kenjiArai 15:065fbeddc305 176
kenjiArai 15:065fbeddc305 177 // No function
kenjiArai 15:065fbeddc305 178 static void not_yet_impliment( void ){
kenjiArai 15:065fbeddc305 179 PRINTF( "Not implimented yet" );
kenjiArai 15:065fbeddc305 180 put_rn();
kenjiArai 15:065fbeddc305 181 }
kenjiArai 15:065fbeddc305 182
kenjiArai 18:b3a27f681171 183 const char *const imsg2 = "-->Control Reg.";
kenjiArai 18:b3a27f681171 184 const char *const imsg3 = "-->Status Reg.";
kenjiArai 18:b3a27f681171 185 const char *const imsg4 = "-->Data Reg.";
kenjiArai 18:b3a27f681171 186 //static const char *const imsg5 = "-->Baud rate Reg.";
kenjiArai 18:b3a27f681171 187 //static const char *const imsg6 = "-->Own address Reg.";
kenjiArai 18:b3a27f681171 188 const char *const imsg7 = "-->Clock control Reg.";
kenjiArai 18:b3a27f681171 189 //static const char *const imsg8 = "-->TRISE Reg.";
kenjiArai 15:065fbeddc305 190
kenjiArai 18:b3a27f681171 191 static const char *const io_port_name0 = "PIO0_";
kenjiArai 18:b3a27f681171 192 static const char *const io_port_name1 = "PIO1_";
kenjiArai 18:b3a27f681171 193 static const char *const iomsg0 = "Func->select ";
kenjiArai 18:b3a27f681171 194 static const char *const iomsg1 = "IO";
kenjiArai 18:b3a27f681171 195 static const char *const iomsg2 = "Reserved";
kenjiArai 18:b3a27f681171 196 static const char *const iomsg30 = "B0_MAT";
kenjiArai 18:b3a27f681171 197 static const char *const iomsg31 = "B1_MAT";
kenjiArai 18:b3a27f681171 198 static const char *const iomsg4 = "Std/F-md I2C";
kenjiArai 18:b3a27f681171 199 static const char *const iomsg5 = "func. R";
kenjiArai 18:b3a27f681171 200 static const char *const iomsg6 = "D-Mode";
kenjiArai 18:b3a27f681171 201 static const char *const iomsg7 = "A-Mode";
kenjiArai 15:065fbeddc305 202
kenjiArai 15:065fbeddc305 203 // Show 16bit register contents
kenjiArai 15:065fbeddc305 204 void reg_print(uint16_t size, uint16_t reg){
kenjiArai 15:065fbeddc305 205 uint16_t i, j, k, n;
kenjiArai 15:065fbeddc305 206
kenjiArai 15:065fbeddc305 207 if (size == 8){
kenjiArai 15:065fbeddc305 208 PRINTF(" 7, 6, 5, 4, 3, 2, 1, 0");
kenjiArai 15:065fbeddc305 209 put_rn();
kenjiArai 15:065fbeddc305 210 i = 8;
kenjiArai 15:065fbeddc305 211 n = 0x80;
kenjiArai 15:065fbeddc305 212 } else if (size == 16){
kenjiArai 15:065fbeddc305 213 PRINTF( "15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0" );
kenjiArai 15:065fbeddc305 214 put_rn();
kenjiArai 15:065fbeddc305 215 i = 16;
kenjiArai 15:065fbeddc305 216 n = 0x8000;
kenjiArai 15:065fbeddc305 217 } else {
kenjiArai 15:065fbeddc305 218 PRINTF("0x%08x", reg);
kenjiArai 15:065fbeddc305 219 return;
kenjiArai 15:065fbeddc305 220 }
kenjiArai 15:065fbeddc305 221 PUTC(' ');
kenjiArai 15:065fbeddc305 222 for (; i>0; i--){
kenjiArai 15:065fbeddc305 223 k = n >> (size-i);
kenjiArai 15:065fbeddc305 224 j = reg & k;
kenjiArai 15:065fbeddc305 225 if (j){
kenjiArai 15:065fbeddc305 226 PUTC('1');
kenjiArai 15:065fbeddc305 227 } else {
kenjiArai 15:065fbeddc305 228 PUTC('0');
kenjiArai 15:065fbeddc305 229 }
kenjiArai 15:065fbeddc305 230 PUTC(' ');
kenjiArai 15:065fbeddc305 231 PUTC(' ');
kenjiArai 15:065fbeddc305 232 }
kenjiArai 15:065fbeddc305 233 PRINTF(" (0x%04x)", reg);
kenjiArai 15:065fbeddc305 234 }
kenjiArai 15:065fbeddc305 235
kenjiArai 15:065fbeddc305 236 #if USE_PORT
kenjiArai 15:065fbeddc305 237 void io_mode(uint32_t reg){
kenjiArai 15:065fbeddc305 238 PRINTF("MODE->");
kenjiArai 15:065fbeddc305 239 switch (reg){
kenjiArai 15:065fbeddc305 240 case 0:
kenjiArai 15:065fbeddc305 241 PRINTF("Inactive");
kenjiArai 15:065fbeddc305 242 break;
kenjiArai 15:065fbeddc305 243 case 1:
kenjiArai 15:065fbeddc305 244 PRINTF("P-DWN");
kenjiArai 15:065fbeddc305 245 break;
kenjiArai 15:065fbeddc305 246 case 2:
kenjiArai 15:065fbeddc305 247 PRINTF("P-UP");
kenjiArai 15:065fbeddc305 248 break;
kenjiArai 15:065fbeddc305 249 case 3:
kenjiArai 15:065fbeddc305 250 PRINTF("Repeater");
kenjiArai 15:065fbeddc305 251 break;
kenjiArai 15:065fbeddc305 252 }
kenjiArai 15:065fbeddc305 253 }
kenjiArai 15:065fbeddc305 254
kenjiArai 15:065fbeddc305 255 void io_hys(uint32_t reg){
kenjiArai 15:065fbeddc305 256 PRINTF("HIS->");
kenjiArai 15:065fbeddc305 257 switch (reg){
kenjiArai 15:065fbeddc305 258 case 0:
kenjiArai 15:065fbeddc305 259 PRINTF("Dis");
kenjiArai 15:065fbeddc305 260 break;
kenjiArai 15:065fbeddc305 261 case 1:
kenjiArai 15:065fbeddc305 262 PRINTF("Ena");
kenjiArai 15:065fbeddc305 263 break;
kenjiArai 15:065fbeddc305 264 }
kenjiArai 15:065fbeddc305 265 }
kenjiArai 15:065fbeddc305 266
kenjiArai 15:065fbeddc305 267 void io_od(uint32_t reg){
kenjiArai 15:065fbeddc305 268 PRINTF("OD->");
kenjiArai 15:065fbeddc305 269 switch (reg){
kenjiArai 15:065fbeddc305 270 case 0:
kenjiArai 15:065fbeddc305 271 PRINTF("no OD");
kenjiArai 15:065fbeddc305 272 break;
kenjiArai 15:065fbeddc305 273 case 1:
kenjiArai 15:065fbeddc305 274 PRINTF("OD");
kenjiArai 15:065fbeddc305 275 break;
kenjiArai 15:065fbeddc305 276 }
kenjiArai 15:065fbeddc305 277 }
kenjiArai 15:065fbeddc305 278
kenjiArai 15:065fbeddc305 279 void io_mode_hys_od(uint32_t reg){
kenjiArai 15:065fbeddc305 280 io_mode ((reg >> 3) & 0x3);
kenjiArai 15:065fbeddc305 281 put_lin();
kenjiArai 15:065fbeddc305 282 io_hys (( reg >> 5) & 0x1);
kenjiArai 15:065fbeddc305 283 put_lin();
kenjiArai 15:065fbeddc305 284 io_od (( reg >> 10) & 0x1);
kenjiArai 15:065fbeddc305 285 }
kenjiArai 15:065fbeddc305 286
kenjiArai 15:065fbeddc305 287 // I/O Config IO0_x
kenjiArai 15:065fbeddc305 288 void io_config0(void){
kenjiArai 15:065fbeddc305 289 uint32_t r0;
kenjiArai 15:065fbeddc305 290
kenjiArai 15:065fbeddc305 291 // P0_0
kenjiArai 15:065fbeddc305 292 r0 = LPC_IOCON->RESET_PIO0_0;
kenjiArai 15:065fbeddc305 293 PRINTF("RESET_%s0(dp23)", io_port_name0);
kenjiArai 15:065fbeddc305 294 put_spc(1);
kenjiArai 15:065fbeddc305 295 reg_print( SIZE_X, r0 );
kenjiArai 15:065fbeddc305 296 put_spc(2);
kenjiArai 15:065fbeddc305 297 PRINTF( iomsg0 );
kenjiArai 15:065fbeddc305 298 if ((r0 & 0x7) == 0){ PRINTF("RESET");
kenjiArai 15:065fbeddc305 299 } else { PRINTF( iomsg1 ); }
kenjiArai 15:065fbeddc305 300 put_lin();
kenjiArai 15:065fbeddc305 301 io_mode_hys_od( r0 );
kenjiArai 15:065fbeddc305 302 put_rn();
kenjiArai 15:065fbeddc305 303 // P0_1
kenjiArai 15:065fbeddc305 304 r0 = LPC_IOCON->PIO0_1;
kenjiArai 15:065fbeddc305 305 PRINTF("%s1(dp24)", io_port_name0);
kenjiArai 15:065fbeddc305 306 put_spc(3);
kenjiArai 15:065fbeddc305 307 reg_print( SIZE_X, r0 );
kenjiArai 15:065fbeddc305 308 put_spc(2);
kenjiArai 15:065fbeddc305 309 PRINTF( iomsg0 );
kenjiArai 15:065fbeddc305 310 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 311 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 312 case 1: PRINTF("CLKOUT"); break;
kenjiArai 15:065fbeddc305 313 case 2: PRINTF("32%s2", iomsg30); break;
kenjiArai 15:065fbeddc305 314 }
kenjiArai 15:065fbeddc305 315 put_lin();
kenjiArai 15:065fbeddc305 316 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 317 put_rn();
kenjiArai 15:065fbeddc305 318 // P0_2
kenjiArai 15:065fbeddc305 319 r0 = LPC_IOCON->PIO0_2;
kenjiArai 15:065fbeddc305 320 PRINTF("%s2(dp25)",io_port_name0);
kenjiArai 15:065fbeddc305 321 put_spc(3);
kenjiArai 15:065fbeddc305 322 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 323 put_spc(2);
kenjiArai 15:065fbeddc305 324 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 325 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 326 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 327 case 1: PRINTF("SSEL0"); break;
kenjiArai 15:065fbeddc305 328 case 2: PRINTF("16B0_CAP0"); break;
kenjiArai 15:065fbeddc305 329 }
kenjiArai 15:065fbeddc305 330 put_lin();
kenjiArai 15:065fbeddc305 331 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 332 put_rn();
kenjiArai 15:065fbeddc305 333 // P0_3
kenjiArai 15:065fbeddc305 334 r0 = LPC_IOCON->PIO0_3;
kenjiArai 15:065fbeddc305 335 PRINTF("%s3(dp26)",io_port_name0);
kenjiArai 15:065fbeddc305 336 put_spc(3);
kenjiArai 15:065fbeddc305 337 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 338 put_spc(2);
kenjiArai 15:065fbeddc305 339 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 340 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 341 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 342 }
kenjiArai 15:065fbeddc305 343 put_lin();
kenjiArai 15:065fbeddc305 344 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 345 put_rn();
kenjiArai 15:065fbeddc305 346 // P0_4
kenjiArai 15:065fbeddc305 347 r0 = LPC_IOCON->PIO0_4;
kenjiArai 15:065fbeddc305 348 PRINTF("%s4(dp27)",io_port_name0);
kenjiArai 15:065fbeddc305 349 put_spc(3);
kenjiArai 15:065fbeddc305 350 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 351 put_spc(2);
kenjiArai 15:065fbeddc305 352 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 353 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 354 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 355 case 1: PRINTF("SCL"); break;
kenjiArai 15:065fbeddc305 356 }
kenjiArai 15:065fbeddc305 357 put_lin();
kenjiArai 15:065fbeddc305 358 switch (( r0 >> 8 ) & 0x3){
kenjiArai 15:065fbeddc305 359 case 0: PRINTF(iomsg4); break;
kenjiArai 15:065fbeddc305 360 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 361 case 2: PRINTF("Fast md"); break;
kenjiArai 15:065fbeddc305 362 case 3: PRINTF(iomsg2 ; break;
kenjiArai 15:065fbeddc305 363 }
kenjiArai 15:065fbeddc305 364 put_rn();
kenjiArai 15:065fbeddc305 365 // P0_5
kenjiArai 15:065fbeddc305 366 r0 = LPC_IOCON->PIO0_5;
kenjiArai 15:065fbeddc305 367 PRINTF("%s5(dp5)",io_port_name0);
kenjiArai 15:065fbeddc305 368 put_spc(4);
kenjiArai 15:065fbeddc305 369 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 370 put_spc(2);
kenjiArai 15:065fbeddc305 371 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 372 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 373 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 374 case 1: PRINTF("SDA"); break;
kenjiArai 15:065fbeddc305 375 }
kenjiArai 15:065fbeddc305 376 put_lin();
kenjiArai 15:065fbeddc305 377 switch ( ( r0 >> 8 ) & 0x3 ){
kenjiArai 15:065fbeddc305 378 case 0: PRINTF(iomsg4); break;
kenjiArai 15:065fbeddc305 379 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 380 case 2: PRINTF("Fast md"); break;
kenjiArai 15:065fbeddc305 381 case 3: PRINTF(iomsg2); break;
kenjiArai 15:065fbeddc305 382 }
kenjiArai 15:065fbeddc305 383 put_rn();
kenjiArai 15:065fbeddc305 384 // P0_6
kenjiArai 15:065fbeddc305 385 r0 = LPC_IOCON->PIO0_6;
kenjiArai 15:065fbeddc305 386 PRINTF("%s6(dp6)", io_port_name0);
kenjiArai 15:065fbeddc305 387 put_spc(4);
kenjiArai 15:065fbeddc305 388 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 389 put_spc(2);
kenjiArai 15:065fbeddc305 390 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 391 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 392 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 393 case 1: PRINTF(iomsg2); break;
kenjiArai 15:065fbeddc305 394 case 2: PRINTF("SCK0"); break;
kenjiArai 15:065fbeddc305 395 }
kenjiArai 15:065fbeddc305 396 put_lin();
kenjiArai 15:065fbeddc305 397 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 398 put_rn();
kenjiArai 15:065fbeddc305 399 // P0_7
kenjiArai 15:065fbeddc305 400 r0 = LPC_IOCON->PIO0_7;
kenjiArai 15:065fbeddc305 401 PRINTF("%s7(dp28)", io_port_name0);
kenjiArai 15:065fbeddc305 402 put_spc(3);
kenjiArai 15:065fbeddc305 403 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 404 put_spc(2);
kenjiArai 15:065fbeddc305 405 PRINTF(iomsg0 ;
kenjiArai 15:065fbeddc305 406 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 407 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 408 case 1: PRINTF("CTS"); break;
kenjiArai 15:065fbeddc305 409 }
kenjiArai 15:065fbeddc305 410 put_lin();
kenjiArai 15:065fbeddc305 411 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 412 put_rn();
kenjiArai 15:065fbeddc305 413 // P0_8
kenjiArai 15:065fbeddc305 414 r0 = LPC_IOCON->PIO0_8;
kenjiArai 15:065fbeddc305 415 PRINTF("%s8(dp1)", io_port_name0);
kenjiArai 15:065fbeddc305 416 put_spc(4);
kenjiArai 15:065fbeddc305 417 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 418 put_spc(2);
kenjiArai 15:065fbeddc305 419 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 420 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 421 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 422 case 1: PRINTF("MISO0"); break;
kenjiArai 15:065fbeddc305 423 case 2: PRINTF("16%s0", iomsg30); break;
kenjiArai 15:065fbeddc305 424 }
kenjiArai 15:065fbeddc305 425 put_lin();
kenjiArai 15:065fbeddc305 426 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 427 put_rn();
kenjiArai 15:065fbeddc305 428 // P0_9
kenjiArai 15:065fbeddc305 429 r0 = LPC_IOCON->PIO0_9;
kenjiArai 15:065fbeddc305 430 PRINTF("%s9(dp2)", io_port_name0);
kenjiArai 15:065fbeddc305 431 put_spc(4);
kenjiArai 15:065fbeddc305 432 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 433 put_spc(2);
kenjiArai 15:065fbeddc305 434 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 435 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 436 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 437 case 1: PRINTF("MOSI0"); break;
kenjiArai 15:065fbeddc305 438 case 2: PRINTF("16%s1", iomsg30); break;
kenjiArai 15:065fbeddc305 439 }
kenjiArai 15:065fbeddc305 440 put_lin();
kenjiArai 15:065fbeddc305 441 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 442 put_rn();
kenjiArai 15:065fbeddc305 443 // P0_10
kenjiArai 15:065fbeddc305 444 r0 = LPC_IOCON->SWCLK_PIO0_10;
kenjiArai 15:065fbeddc305 445 PRINTF("SWCLK_%s10(dp3)", io_port_name0);
kenjiArai 15:065fbeddc305 446 put_spc(1);
kenjiArai 15:065fbeddc305 447 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 448 put_spc(2);
kenjiArai 15:065fbeddc305 449 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 450 switch (r0 & 0x7 {
kenjiArai 15:065fbeddc305 451 case 0: PRINTF("SWCLK"); break;
kenjiArai 15:065fbeddc305 452 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 453 case 2: PRINTF("SCK0"); break;
kenjiArai 15:065fbeddc305 454 case 3: PRINTF("16%s2", iomsg30); break;
kenjiArai 15:065fbeddc305 455 }
kenjiArai 15:065fbeddc305 456 put_lin();
kenjiArai 15:065fbeddc305 457 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 458 put_rn();
kenjiArai 15:065fbeddc305 459 // P0_11
kenjiArai 15:065fbeddc305 460 r0 = LPC_IOCON->R_PIO0_11;
kenjiArai 15:065fbeddc305 461 PRINTF("R_%s11(dp4)", io_port_name0);
kenjiArai 15:065fbeddc305 462 put_spc(1);
kenjiArai 15:065fbeddc305 463 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 464 put_spc(2);
kenjiArai 15:065fbeddc305 465 PRINTF( iomsg0 );
kenjiArai 15:065fbeddc305 466 switch ( r0 & 0x7 ){
kenjiArai 15:065fbeddc305 467 case 0: PRINTF(iomsg5); break;
kenjiArai 15:065fbeddc305 468 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 469 case 2: PRINTF("AD0"); break;
kenjiArai 15:065fbeddc305 470 case 3: PRINTF("32%s3", iomsg30); break;
kenjiArai 15:065fbeddc305 471 }
kenjiArai 15:065fbeddc305 472 put_lin();
kenjiArai 15:065fbeddc305 473 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 474 if ( r0 & 0x80 ){ PRINTF(", %s", iomsg6);
kenjiArai 15:065fbeddc305 475 } else { PRINTF(", %s", iomsg7);
kenjiArai 15:065fbeddc305 476 }
kenjiArai 15:065fbeddc305 477 put_rn();
kenjiArai 15:065fbeddc305 478 }
kenjiArai 15:065fbeddc305 479
kenjiArai 15:065fbeddc305 480 // I/O Config IO1_x
kenjiArai 15:065fbeddc305 481 void io_config1(void){
kenjiArai 15:065fbeddc305 482 uint32_t r0;
kenjiArai 15:065fbeddc305 483
kenjiArai 15:065fbeddc305 484 // P1_0
kenjiArai 15:065fbeddc305 485 r0 = LPC_IOCON->R_PIO1_0;
kenjiArai 15:065fbeddc305 486 PRINTF("R_%s0(dp9)", io_port_name1);
kenjiArai 15:065fbeddc305 487 put_spc(2);
kenjiArai 15:065fbeddc305 488 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 489 put_spc(2);
kenjiArai 15:065fbeddc305 490 PRINTF( iomsg0 );
kenjiArai 15:065fbeddc305 491 switch ( r0 & 0x7 ){
kenjiArai 15:065fbeddc305 492 case 0: PRINTF(iomsg5); break;
kenjiArai 15:065fbeddc305 493 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 494 case 2: PRINTF("AD1"); break;
kenjiArai 15:065fbeddc305 495 case 3: PRINTF("32B1_CAP0"); break;
kenjiArai 15:065fbeddc305 496 }
kenjiArai 15:065fbeddc305 497 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 498 if (r0 & 0x80){ PRINTF(", %s", iomsg6);
kenjiArai 15:065fbeddc305 499 } else { PRINTF(", %s", iomsg7);
kenjiArai 15:065fbeddc305 500 }
kenjiArai 15:065fbeddc305 501 put_rn();
kenjiArai 15:065fbeddc305 502 // P1_1
kenjiArai 15:065fbeddc305 503 r0 = LPC_IOCON->R_PIO1_1;
kenjiArai 15:065fbeddc305 504 PRINTF("R_%s1(dp10)", io_port_name1);
kenjiArai 15:065fbeddc305 505 put_spc(1);
kenjiArai 15:065fbeddc305 506 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 507 put_spc(2);
kenjiArai 15:065fbeddc305 508 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 509 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 510 case 0: PRINTF(iomsg5); break;
kenjiArai 15:065fbeddc305 511 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 512 case 2: PRINTF("AD2"); break;
kenjiArai 15:065fbeddc305 513 case 3: PRINTF("32%s0", iomsg31); break;
kenjiArai 15:065fbeddc305 514 }
kenjiArai 15:065fbeddc305 515 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 516 if (r0 & 0x80){ PRINTF(", %s", iomsg6);
kenjiArai 15:065fbeddc305 517 } else { PRINTF(", %s", iomsg7);
kenjiArai 15:065fbeddc305 518 }
kenjiArai 15:065fbeddc305 519 put_rn();
kenjiArai 15:065fbeddc305 520 // P1_2
kenjiArai 15:065fbeddc305 521 r0 = LPC_IOCON->R_PIO1_2;
kenjiArai 15:065fbeddc305 522 PRINTF("R_%s2(dp11)", io_port_name1);
kenjiArai 15:065fbeddc305 523 put_spc(1);
kenjiArai 15:065fbeddc305 524 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 525 put_spc(2);
kenjiArai 15:065fbeddc305 526 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 527 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 528 case 0: PRINTF(iomsg5); break;
kenjiArai 15:065fbeddc305 529 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 530 case 2: PRINTF("AD3"); break;
kenjiArai 15:065fbeddc305 531 case 3: PRINTF("32%s1", iomsg31); break;
kenjiArai 15:065fbeddc305 532 }
kenjiArai 15:065fbeddc305 533 io_mode_hys_od( r0 );
kenjiArai 15:065fbeddc305 534 if (r0 & 0x80){ PRINTF(", %s", iomsg6);
kenjiArai 15:065fbeddc305 535 } else { PRINTF(", %s", iomsg7);
kenjiArai 15:065fbeddc305 536 }
kenjiArai 15:065fbeddc305 537 put_rn();
kenjiArai 15:065fbeddc305 538 // P1_3
kenjiArai 15:065fbeddc305 539 r0 = LPC_IOCON->SWDIO_PIO1_3;
kenjiArai 15:065fbeddc305 540 PRINTF("SWDIO_%s3(dp12)",io_port_name1);
kenjiArai 15:065fbeddc305 541 put_spc(1);
kenjiArai 15:065fbeddc305 542 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 543 put_spc(3);
kenjiArai 15:065fbeddc305 544 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 545 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 546 case 0: PRINTF("SWDIO"); break;
kenjiArai 15:065fbeddc305 547 case 1: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 548 case 2: PRINTF("AD4"); break;
kenjiArai 15:065fbeddc305 549 case 3: PRINTF("32%s2", iomsg31); break;
kenjiArai 15:065fbeddc305 550 }
kenjiArai 15:065fbeddc305 551 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 552 if (r0 & 0x80){ PRINTF(", %s", iomsg6);
kenjiArai 15:065fbeddc305 553 } else { PRINTF(", %s", iomsg7);
kenjiArai 15:065fbeddc305 554 }
kenjiArai 15:065fbeddc305 555 put_rn();
kenjiArai 15:065fbeddc305 556 // P1_4
kenjiArai 15:065fbeddc305 557 r0 = LPC_IOCON->PIO1_4;
kenjiArai 15:065fbeddc305 558 PRINTF("%s4(dp13)",io_port_name1);
kenjiArai 15:065fbeddc305 559 put_spc(3);
kenjiArai 15:065fbeddc305 560 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 561 put_spc(2);
kenjiArai 15:065fbeddc305 562 PRINTF( iomsg0 );
kenjiArai 15:065fbeddc305 563 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 564 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 565 case 1: PRINTF("AD5"); break;
kenjiArai 15:065fbeddc305 566 case 2: PRINTF("32%s3", iomsg31); break;
kenjiArai 15:065fbeddc305 567 }
kenjiArai 15:065fbeddc305 568 put_lin();
kenjiArai 15:065fbeddc305 569 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 570 put_rn();
kenjiArai 15:065fbeddc305 571 // P1_5
kenjiArai 15:065fbeddc305 572 r0 = LPC_IOCON->PIO1_5;
kenjiArai 15:065fbeddc305 573 PRINTF("%s5(dp14)",io_port_name1);
kenjiArai 15:065fbeddc305 574 put_spc(3);
kenjiArai 15:065fbeddc305 575 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 576 put_spc(2);
kenjiArai 15:065fbeddc305 577 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 578 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 579 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 580 case 1: PRINTF("RTS"); break;
kenjiArai 15:065fbeddc305 581 case 2: PRINTF("32B0_CAP0"); break;
kenjiArai 15:065fbeddc305 582 }
kenjiArai 15:065fbeddc305 583 put_lin();
kenjiArai 15:065fbeddc305 584 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 585 put_rn();
kenjiArai 15:065fbeddc305 586 // P1_6
kenjiArai 15:065fbeddc305 587 r0 = LPC_IOCON->PIO1_6;
kenjiArai 15:065fbeddc305 588 PRINTF("%s6(dp15)", io_port_name1);
kenjiArai 15:065fbeddc305 589 put_spc(3);
kenjiArai 15:065fbeddc305 590 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 591 put_spc(2);
kenjiArai 15:065fbeddc305 592 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 593 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 594 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 595 case 1: PRINTF("RXD"); break;
kenjiArai 15:065fbeddc305 596 case 2: PRINTF( "32%s0", iomsg30 ); break;
kenjiArai 15:065fbeddc305 597 }
kenjiArai 15:065fbeddc305 598 put_lin();
kenjiArai 15:065fbeddc305 599 io_mode_hys_od( r0 );
kenjiArai 15:065fbeddc305 600 put_rn();
kenjiArai 15:065fbeddc305 601 // P1_7
kenjiArai 15:065fbeddc305 602 r0 = LPC_IOCON->PIO1_7;
kenjiArai 15:065fbeddc305 603 PRINTF("%s7(dp16)", io_port_name1);
kenjiArai 15:065fbeddc305 604 put_spc(3);
kenjiArai 15:065fbeddc305 605 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 606 put_spc(2);
kenjiArai 15:065fbeddc305 607 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 608 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 609 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 610 case 1: PRINTF("TXD"); break;
kenjiArai 15:065fbeddc305 611 case 2: PRINTF("32%s1", iomsg30); break;
kenjiArai 15:065fbeddc305 612 }
kenjiArai 15:065fbeddc305 613 put_lin();
kenjiArai 15:065fbeddc305 614 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 615 put_rn();
kenjiArai 15:065fbeddc305 616 // P1_8
kenjiArai 15:065fbeddc305 617 r0 = LPC_IOCON->PIO1_8;
kenjiArai 15:065fbeddc305 618 PRINTF("%s8(dp17)", io_port_name1);
kenjiArai 15:065fbeddc305 619 put_spc(3);
kenjiArai 15:065fbeddc305 620 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 621 put_spc(2);
kenjiArai 15:065fbeddc305 622 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 623 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 624 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 625 case 1: PRINTF("32%s1", iomsg30); break;
kenjiArai 15:065fbeddc305 626 }
kenjiArai 15:065fbeddc305 627 put_lin();
kenjiArai 15:065fbeddc305 628 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 629 put_rn();
kenjiArai 15:065fbeddc305 630 // P1_9
kenjiArai 15:065fbeddc305 631 r0 = LPC_IOCON->PIO1_9;
kenjiArai 15:065fbeddc305 632 PRINTF("%s9(dp18)", io_port_name1);
kenjiArai 15:065fbeddc305 633 put_spc(3);
kenjiArai 15:065fbeddc305 634 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 635 put_spc(2);
kenjiArai 15:065fbeddc305 636 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 637 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 638 case 0: PRINTF(iomsg1); break;
kenjiArai 15:065fbeddc305 639 case 1: PRINTF("16%s0", iomsg31); break;
kenjiArai 15:065fbeddc305 640 case 2: PRINTF("MOSI1"); break;
kenjiArai 15:065fbeddc305 641 }
kenjiArai 15:065fbeddc305 642 put_lin();
kenjiArai 15:065fbeddc305 643 io_mode_hys_od(r0);
kenjiArai 15:065fbeddc305 644 put_rn();
kenjiArai 15:065fbeddc305 645 }
kenjiArai 15:065fbeddc305 646 #endif // USE_PORT
kenjiArai 15:065fbeddc305 647
kenjiArai 15:065fbeddc305 648 #if USE_REG_SPI_UART
kenjiArai 15:065fbeddc305 649 void spi_reg(int no){
kenjiArai 15:065fbeddc305 650 uint32_t n, r0, r1 ,r2, r3, r4, r5, r6, r7, r8;
kenjiArai 15:065fbeddc305 651
kenjiArai 15:065fbeddc305 652 if (no == SPI_0){
kenjiArai 15:065fbeddc305 653 n = 0;
kenjiArai 15:065fbeddc305 654 r0 = LPC_SSP0->CR1;
kenjiArai 15:065fbeddc305 655 r1 = LPC_SSP0->DR;
kenjiArai 15:065fbeddc305 656 r2 = LPC_SSP0->SR;
kenjiArai 15:065fbeddc305 657 r3 = LPC_SSP0->CPSR;
kenjiArai 15:065fbeddc305 658 r4 = LPC_SSP0->IMSC;
kenjiArai 15:065fbeddc305 659 r5 = LPC_SSP0->RIS;
kenjiArai 15:065fbeddc305 660 r6 = LPC_SSP0->MIS;
kenjiArai 15:065fbeddc305 661 r7 = LPC_SSP0->ICR;
kenjiArai 15:065fbeddc305 662 r8 = LPC_SSP0->CR0;
kenjiArai 15:065fbeddc305 663 } else if (no == SPI_1){
kenjiArai 15:065fbeddc305 664 n = 1;
kenjiArai 15:065fbeddc305 665 r0 = LPC_SSP1->CR1;
kenjiArai 15:065fbeddc305 666 r1 = LPC_SSP1->DR;
kenjiArai 15:065fbeddc305 667 r2 = LPC_SSP1->SR;
kenjiArai 15:065fbeddc305 668 r3 = LPC_SSP1->CPSR;
kenjiArai 15:065fbeddc305 669 r4 = LPC_SSP1->IMSC;
kenjiArai 15:065fbeddc305 670 r5 = LPC_SSP1->RIS;
kenjiArai 15:065fbeddc305 671 r6 = LPC_SSP1->MIS;
kenjiArai 15:065fbeddc305 672 r7 = LPC_SSP1->ICR;
kenjiArai 15:065fbeddc305 673 r8 = LPC_SSP1->CR0;
kenjiArai 15:065fbeddc305 674 } else {
kenjiArai 15:065fbeddc305 675 return;
kenjiArai 15:065fbeddc305 676 }
kenjiArai 15:065fbeddc305 677 PRINTF("Show SSP%1d(SPI%1d) Registers", n, n);
kenjiArai 15:065fbeddc305 678 put_rn();
kenjiArai 15:065fbeddc305 679 PRINTF("CR0");
kenjiArai 15:065fbeddc305 680 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 681 reg_print(SIZE8, r8);
kenjiArai 15:065fbeddc305 682 put_rn();
kenjiArai 15:065fbeddc305 683 PRINTF("CR1");
kenjiArai 15:065fbeddc305 684 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 685 reg_print(SIZE8, r0);
kenjiArai 15:065fbeddc305 686 put_rn();
kenjiArai 15:065fbeddc305 687 PRINTF("DR");
kenjiArai 15:065fbeddc305 688 PRINTF(imsg4);
kenjiArai 15:065fbeddc305 689 reg_print(SIZE8, r1);
kenjiArai 15:065fbeddc305 690 put_rn();
kenjiArai 15:065fbeddc305 691 PRINTF("SR");
kenjiArai 15:065fbeddc305 692 PRINTF(imsg3);
kenjiArai 15:065fbeddc305 693 reg_print(SIZE8, r2);
kenjiArai 15:065fbeddc305 694 put_rn();
kenjiArai 15:065fbeddc305 695 PRINTF("CPSR");
kenjiArai 15:065fbeddc305 696 PRINTF(imsg7);
kenjiArai 15:065fbeddc305 697 reg_print(SIZE8, r3);
kenjiArai 15:065fbeddc305 698 put_rn();
kenjiArai 15:065fbeddc305 699 PRINTF("IMSC");
kenjiArai 15:065fbeddc305 700 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 701 reg_print(SIZE8, r4);
kenjiArai 15:065fbeddc305 702 put_rn();
kenjiArai 15:065fbeddc305 703 PRINTF("RIS");
kenjiArai 15:065fbeddc305 704 PRINTF(imsg3);
kenjiArai 15:065fbeddc305 705 reg_print(SIZE8, r5);
kenjiArai 15:065fbeddc305 706 put_rn();
kenjiArai 15:065fbeddc305 707 PRINTF("MIS");
kenjiArai 15:065fbeddc305 708 PRINTF(imsg3);
kenjiArai 15:065fbeddc305 709 reg_print(SIZE8, r6);
kenjiArai 15:065fbeddc305 710 put_rn();
kenjiArai 15:065fbeddc305 711 PRINTF("ICR");
kenjiArai 15:065fbeddc305 712 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 713 reg_print(SIZE8, r7);
kenjiArai 15:065fbeddc305 714 put_rn();
kenjiArai 15:065fbeddc305 715 }
kenjiArai 15:065fbeddc305 716
kenjiArai 15:065fbeddc305 717 void uart_reg(void){
kenjiArai 15:065fbeddc305 718 uint32_t r0,r1,r2,r3,r4,r5,r6;
kenjiArai 15:065fbeddc305 719
kenjiArai 15:065fbeddc305 720 // clear LCR[DLAB] to read registers
kenjiArai 15:065fbeddc305 721 LPC_UART->LCR &= ~(1 << 7);
kenjiArai 15:065fbeddc305 722 r0 = LPC_UART->RBR;
kenjiArai 15:065fbeddc305 723 r1 = LPC_UART->IER;
kenjiArai 15:065fbeddc305 724 r2 = LPC_UART->IIR;
kenjiArai 15:065fbeddc305 725 r3 = LPC_UART->TER;
kenjiArai 15:065fbeddc305 726 // set LCR[DLAB] to enable writing to divider registers
kenjiArai 15:065fbeddc305 727 LPC_UART->LCR |= (1 << 7);
kenjiArai 15:065fbeddc305 728 r4 = LPC_UART->DLL;
kenjiArai 15:065fbeddc305 729 r5 = LPC_UART->DLM;
kenjiArai 15:065fbeddc305 730 r6 = LPC_UART->FDR;
kenjiArai 15:065fbeddc305 731 // clear LCR[DLAB]
kenjiArai 15:065fbeddc305 732 LPC_UART->LCR &= ~(1 << 7);
kenjiArai 15:065fbeddc305 733 // Print each register
kenjiArai 15:065fbeddc305 734 PRINTF("Show UART Registers");
kenjiArai 15:065fbeddc305 735 put_rn();
kenjiArai 15:065fbeddc305 736 PRINTF("RBR");
kenjiArai 15:065fbeddc305 737 PRINTF(imsg4);
kenjiArai 15:065fbeddc305 738 reg_print(SIZE8, r0);
kenjiArai 15:065fbeddc305 739 put_rn();
kenjiArai 15:065fbeddc305 740 PRINTF("THR--Write only");
kenjiArai 15:065fbeddc305 741 PRINTF(imsg4);
kenjiArai 15:065fbeddc305 742 put_rn();
kenjiArai 15:065fbeddc305 743 PRINTF("DLL");
kenjiArai 15:065fbeddc305 744 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 745 reg_print(SIZE8, r4);
kenjiArai 15:065fbeddc305 746 put_rn();
kenjiArai 15:065fbeddc305 747 PRINTF("DLM");
kenjiArai 15:065fbeddc305 748 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 749 reg_print(SIZE8, r5);
kenjiArai 15:065fbeddc305 750 put_rn();
kenjiArai 15:065fbeddc305 751 PRINTF("IER");
kenjiArai 15:065fbeddc305 752 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 753 reg_print(SIZE8, r1);
kenjiArai 15:065fbeddc305 754 put_rn();
kenjiArai 15:065fbeddc305 755 PRINTF("IIR");
kenjiArai 15:065fbeddc305 756 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 757 reg_print(SIZE8, r2);
kenjiArai 15:065fbeddc305 758 put_rn();
kenjiArai 15:065fbeddc305 759 PRINTF("FCR--Write only");
kenjiArai 15:065fbeddc305 760 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 761 put_rn();
kenjiArai 15:065fbeddc305 762 PRINTF("LCR,MCR,MSR,SCR,ACR--Not support");
kenjiArai 15:065fbeddc305 763 put_rn();
kenjiArai 15:065fbeddc305 764 PRINTF("FDR");
kenjiArai 15:065fbeddc305 765 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 766 reg_print(SIZE8, r6);
kenjiArai 15:065fbeddc305 767 put_rn();
kenjiArai 15:065fbeddc305 768 PRINTF("TER");
kenjiArai 15:065fbeddc305 769 PRINTF(imsg3);
kenjiArai 15:065fbeddc305 770 reg_print(SIZE8, r3);
kenjiArai 15:065fbeddc305 771 put_rn();
kenjiArai 15:065fbeddc305 772 PRINTF("RS485CTRL,485ADRMATCH,485DLY--Not support");
kenjiArai 15:065fbeddc305 773 put_rn();
kenjiArai 15:065fbeddc305 774 }
kenjiArai 15:065fbeddc305 775 #endif //USE_REG_SPI_UART
kenjiArai 15:065fbeddc305 776
kenjiArai 15:065fbeddc305 777 #if USE_SYS
kenjiArai 15:065fbeddc305 778 void cpu_inf (void){
kenjiArai 15:065fbeddc305 779 unsigned long m1, m2;
kenjiArai 15:065fbeddc305 780
kenjiArai 15:065fbeddc305 781 m1 = SCB->CPUID;
kenjiArai 15:065fbeddc305 782 m2 = (m1 >> 24);
kenjiArai 15:065fbeddc305 783 if (m2 == 0x41) {
kenjiArai 15:065fbeddc305 784 put_r();
kenjiArai 15:065fbeddc305 785 PRINTF("CPU = ARM ");
kenjiArai 15:065fbeddc305 786 } else {
kenjiArai 15:065fbeddc305 787 put_r();
kenjiArai 15:065fbeddc305 788 PRINTF("CPU = NOT ARM ");
kenjiArai 15:065fbeddc305 789 }
kenjiArai 15:065fbeddc305 790 m2 = (m1 >> 4) & 0xfff;
kenjiArai 15:065fbeddc305 791 if (m2 == 0xc23) {
kenjiArai 15:065fbeddc305 792 PRINTF("Cortex-M3");
kenjiArai 15:065fbeddc305 793 put_rn();
kenjiArai 15:065fbeddc305 794 } else if (m2 == 0xc20){
kenjiArai 15:065fbeddc305 795 PRINTF("Cortex-M0");
kenjiArai 15:065fbeddc305 796 put_rn();
kenjiArai 15:065fbeddc305 797 } else {
kenjiArai 15:065fbeddc305 798 PRINTF("NOT Cortex-M3,M0");
kenjiArai 15:065fbeddc305 799 put_rn();
kenjiArai 15:065fbeddc305 800 }
kenjiArai 15:065fbeddc305 801 m2 = (m1 >> 20) & 0x0f;
kenjiArai 18:b3a27f681171 802 PRINTF("Variant:%x", (int)m2);
kenjiArai 15:065fbeddc305 803 put_rn();
kenjiArai 15:065fbeddc305 804 m2 = m1 & 0x7;
kenjiArai 18:b3a27f681171 805 PRINTF("Revision:%x", (int)m2);
kenjiArai 15:065fbeddc305 806 put_rn();
kenjiArai 15:065fbeddc305 807 }
kenjiArai 15:065fbeddc305 808
kenjiArai 15:065fbeddc305 809 // Calculate CPU System Clock Frequency /refrence: system_LPCxx.c
kenjiArai 18:b3a27f681171 810 static const char *const fmsg0 = "Internal RC Oscillator";
kenjiArai 18:b3a27f681171 811 static const char *const fmsg1 = "Xtal Osc Clock";
kenjiArai 18:b3a27f681171 812 static const char *const fmsg2 = "Watch dog Osc Clock";
kenjiArai 18:b3a27f681171 813 static const char *const fmsg3 = "with PLL";
kenjiArai 18:b3a27f681171 814 static const char *const fmsg4 = "System Clock =";
kenjiArai 18:b3a27f681171 815 static const char *const fmsg5 = "PLL Post divider ratio =";
kenjiArai 18:b3a27f681171 816 static const char *const fmsg6 = "feedback devider =";
kenjiArai 18:b3a27f681171 817 static const char *const fmsg7 = "NO Clock ?!";
kenjiArai 15:065fbeddc305 818
kenjiArai 15:065fbeddc305 819 void get_freq_w_print (void){ // Get Core Clock Frequency
kenjiArai 15:065fbeddc305 820 uint32_t wdt_osc = 0, pll_fct0 = 0, pll_fct1 = 0;
kenjiArai 15:065fbeddc305 821
kenjiArai 15:065fbeddc305 822 // Determine clock frequency according to clock register values
kenjiArai 15:065fbeddc305 823 switch ((LPC_SYSCON->WDTOSCCTRL >> 5) & 0x0F) {
kenjiArai 15:065fbeddc305 824 case 0: wdt_osc = 400000; break;
kenjiArai 15:065fbeddc305 825 case 1: wdt_osc = 500000; break;
kenjiArai 15:065fbeddc305 826 case 2: wdt_osc = 800000; break;
kenjiArai 15:065fbeddc305 827 case 3: wdt_osc = 1100000; break;
kenjiArai 15:065fbeddc305 828 case 4: wdt_osc = 1400000; break;
kenjiArai 15:065fbeddc305 829 case 5: wdt_osc = 1600000; break;
kenjiArai 15:065fbeddc305 830 case 6: wdt_osc = 1800000; break;
kenjiArai 15:065fbeddc305 831 case 7: wdt_osc = 2000000; break;
kenjiArai 15:065fbeddc305 832 case 8: wdt_osc = 2200000; break;
kenjiArai 15:065fbeddc305 833 case 9: wdt_osc = 2400000; break;
kenjiArai 15:065fbeddc305 834 case 10: wdt_osc = 2600000; break;
kenjiArai 15:065fbeddc305 835 case 11: wdt_osc = 2700000; break;
kenjiArai 15:065fbeddc305 836 case 12: wdt_osc = 2900000; break;
kenjiArai 15:065fbeddc305 837 case 13: wdt_osc = 3100000; break;
kenjiArai 15:065fbeddc305 838 case 14: wdt_osc = 3200000; break;
kenjiArai 15:065fbeddc305 839 case 15: wdt_osc = 3400000; break;
kenjiArai 15:065fbeddc305 840 }
kenjiArai 15:065fbeddc305 841 wdt_osc /= ((LPC_SYSCON->WDTOSCCTRL & 0x1F) << 1) + 2;
kenjiArai 15:065fbeddc305 842 put_r();
kenjiArai 15:065fbeddc305 843 switch (LPC_SYSCON->MAINCLKSEL & 0x03) {
kenjiArai 15:065fbeddc305 844 case 0: // Internal RC oscillator
kenjiArai 15:065fbeddc305 845 SystemCoreClock = __IRC_OSC_CLK;
kenjiArai 15:065fbeddc305 846 PRINTF("%s = %dHz", fmsg0, SystemCoreClock);
kenjiArai 15:065fbeddc305 847 break;
kenjiArai 15:065fbeddc305 848 case 1: // Input Clock to System PLL
kenjiArai 15:065fbeddc305 849 switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
kenjiArai 15:065fbeddc305 850 case 0: // Internal RC oscillator
kenjiArai 15:065fbeddc305 851 SystemCoreClock = __IRC_OSC_CLK;
kenjiArai 15:065fbeddc305 852 PRINTF("%s = %dHz", fmsg0, SystemCoreClock);
kenjiArai 15:065fbeddc305 853 break;
kenjiArai 15:065fbeddc305 854 case 1: // System oscillator
kenjiArai 15:065fbeddc305 855 SystemCoreClock = __SYS_OSC_CLK;
kenjiArai 15:065fbeddc305 856 PRINTF("%s = %dHz", fmsg1, SystemCoreClock );
kenjiArai 15:065fbeddc305 857 break;
kenjiArai 15:065fbeddc305 858 case 2: // WDT Oscillator
kenjiArai 15:065fbeddc305 859 SystemCoreClock = wdt_osc;
kenjiArai 15:065fbeddc305 860 PRINTF("%s = %dHz", fmsg2, wdt_osc );
kenjiArai 15:065fbeddc305 861 break;
kenjiArai 15:065fbeddc305 862 case 3: // Reserved
kenjiArai 15:065fbeddc305 863 SystemCoreClock = 0;
kenjiArai 15:065fbeddc305 864 PRINTF(fmsg7);
kenjiArai 15:065fbeddc305 865 break;
kenjiArai 15:065fbeddc305 866 }
kenjiArai 15:065fbeddc305 867 break;
kenjiArai 15:065fbeddc305 868 case 2: // WDT Oscillator
kenjiArai 15:065fbeddc305 869 SystemCoreClock = wdt_osc;
kenjiArai 15:065fbeddc305 870 PRINTF("%s = %dHz", fmsg2, wdt_osc );
kenjiArai 15:065fbeddc305 871 break;
kenjiArai 15:065fbeddc305 872 case 3: // System PLL Clock Out
kenjiArai 15:065fbeddc305 873 switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
kenjiArai 15:065fbeddc305 874 case 0: // Internal RC oscillator
kenjiArai 15:065fbeddc305 875 if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
kenjiArai 15:065fbeddc305 876 SystemCoreClock = __IRC_OSC_CLK;
kenjiArai 15:065fbeddc305 877 PRINTF("%s = %dHz", fmsg0, SystemCoreClock);
kenjiArai 15:065fbeddc305 878 } else {
kenjiArai 15:065fbeddc305 879 pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
kenjiArai 15:065fbeddc305 880 pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
kenjiArai 15:065fbeddc305 881 SystemCoreClock = __IRC_OSC_CLK * pll_fct0;
kenjiArai 18:b3a27f681171 882 PRINTF("Use Internal RC = %dHz", (int)__IRC_OSC_CLK);
kenjiArai 15:065fbeddc305 883 put_rn();
kenjiArai 15:065fbeddc305 884 PRINTF("%s %s = %dHz", fmsg0, fmsg3, SystemCoreClock);
kenjiArai 15:065fbeddc305 885 put_rn();
kenjiArai 15:065fbeddc305 886 PRINTF("%s %d, %s %d", fmsg5, pll_fct1, fmsg6, pll_fct0);
kenjiArai 15:065fbeddc305 887 }
kenjiArai 15:065fbeddc305 888 break;
kenjiArai 15:065fbeddc305 889 case 1: // System oscillator
kenjiArai 15:065fbeddc305 890 if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
kenjiArai 15:065fbeddc305 891 SystemCoreClock = __SYS_OSC_CLK;
kenjiArai 15:065fbeddc305 892 PRINTF("%s = %dHz", fmsg1, SystemCoreClock );
kenjiArai 15:065fbeddc305 893 } else {
kenjiArai 15:065fbeddc305 894 pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
kenjiArai 15:065fbeddc305 895 pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
kenjiArai 15:065fbeddc305 896 SystemCoreClock = __SYS_OSC_CLK * pll_fct0;
kenjiArai 18:b3a27f681171 897 PRINTF("Use XTAL = %dHz", (int)__XTAL);
kenjiArai 15:065fbeddc305 898 put_rn();
kenjiArai 15:065fbeddc305 899 PRINTF("%s %s = %dHz", fmsg1, fmsg3, SystemCoreClock);
kenjiArai 15:065fbeddc305 900 put_rn();
kenjiArai 15:065fbeddc305 901 PRINTF("%s %d, %s %d", fmsg5, pll_fct1, fmsg6, pll_fct0);
kenjiArai 15:065fbeddc305 902 }
kenjiArai 15:065fbeddc305 903 break;
kenjiArai 15:065fbeddc305 904 case 2: // WDT Oscillator
kenjiArai 15:065fbeddc305 905 if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
kenjiArai 15:065fbeddc305 906 SystemCoreClock = wdt_osc;
kenjiArai 15:065fbeddc305 907 PRINTF("%s = %dHz", fmsg2, wdt_osc );
kenjiArai 15:065fbeddc305 908 } else {
kenjiArai 15:065fbeddc305 909 pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
kenjiArai 15:065fbeddc305 910 pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
kenjiArai 15:065fbeddc305 911 SystemCoreClock = wdt_osc * pll_fct0;
kenjiArai 15:065fbeddc305 912 PRINTF("Use WDT OSC = %dHz", wdt_osc);
kenjiArai 15:065fbeddc305 913 put_rn();
kenjiArai 15:065fbeddc305 914 PRINTF("%s %s = %dHz", fmsg2, fmsg3, SystemCoreClock);
kenjiArai 15:065fbeddc305 915 put_rn();
kenjiArai 15:065fbeddc305 916 PRINTF("%s %d, %s %d", fmsg5, pll_fct1, fmsg6, pll_fct0);
kenjiArai 15:065fbeddc305 917 }
kenjiArai 15:065fbeddc305 918 break;
kenjiArai 15:065fbeddc305 919 case 3: // Reserved
kenjiArai 15:065fbeddc305 920 SystemCoreClock = 0;
kenjiArai 15:065fbeddc305 921 PRINTF("fmsg7");
kenjiArai 15:065fbeddc305 922 break;
kenjiArai 15:065fbeddc305 923 }
kenjiArai 15:065fbeddc305 924 break;
kenjiArai 15:065fbeddc305 925 }
kenjiArai 15:065fbeddc305 926 SystemCoreClock /= LPC_SYSCON->SYSAHBCLKDIV;
kenjiArai 15:065fbeddc305 927 put_rn();
kenjiArai 15:065fbeddc305 928 PRINTF("%s %dHz", fmsg4, SystemCoreClock);
kenjiArai 15:065fbeddc305 929 put_rn();
kenjiArai 15:065fbeddc305 930 }
kenjiArai 15:065fbeddc305 931 #endif //USE_SYS
kenjiArai 15:065fbeddc305 932
kenjiArai 15:065fbeddc305 933 void get_freq (void){ // Get Core Clock Frequency
kenjiArai 15:065fbeddc305 934 uint32_t wdt_osc = 0, pll_fct0 = 0, pll_fct1 = 0;
kenjiArai 15:065fbeddc305 935
kenjiArai 15:065fbeddc305 936 // Determine clock frequency according to clock register values
kenjiArai 15:065fbeddc305 937 switch ((LPC_SYSCON->WDTOSCCTRL >> 5) & 0x0F) {
kenjiArai 15:065fbeddc305 938 case 0: wdt_osc = 400000; break;
kenjiArai 15:065fbeddc305 939 case 1: wdt_osc = 500000; break;
kenjiArai 15:065fbeddc305 940 case 2: wdt_osc = 800000; break;
kenjiArai 15:065fbeddc305 941 case 3: wdt_osc = 1100000; break;
kenjiArai 15:065fbeddc305 942 case 4: wdt_osc = 1400000; break;
kenjiArai 15:065fbeddc305 943 case 5: wdt_osc = 1600000; break;
kenjiArai 15:065fbeddc305 944 case 6: wdt_osc = 1800000; break;
kenjiArai 15:065fbeddc305 945 case 7: wdt_osc = 2000000; break;
kenjiArai 15:065fbeddc305 946 case 8: wdt_osc = 2200000; break;
kenjiArai 15:065fbeddc305 947 case 9: wdt_osc = 2400000; break;
kenjiArai 15:065fbeddc305 948 case 10: wdt_osc = 2600000; break;
kenjiArai 15:065fbeddc305 949 case 11: wdt_osc = 2700000; break;
kenjiArai 15:065fbeddc305 950 case 12: wdt_osc = 2900000; break;
kenjiArai 15:065fbeddc305 951 case 13: wdt_osc = 3100000; break;
kenjiArai 15:065fbeddc305 952 case 14: wdt_osc = 3200000; break;
kenjiArai 15:065fbeddc305 953 case 15: wdt_osc = 3400000; break;
kenjiArai 15:065fbeddc305 954 }
kenjiArai 15:065fbeddc305 955 wdt_osc /= ((LPC_SYSCON->WDTOSCCTRL & 0x1F) << 1) + 2;
kenjiArai 15:065fbeddc305 956 switch (LPC_SYSCON->MAINCLKSEL & 0x03) {
kenjiArai 15:065fbeddc305 957 case 0: // Internal RC oscillator
kenjiArai 15:065fbeddc305 958 SystemCoreClock = __IRC_OSC_CLK;
kenjiArai 15:065fbeddc305 959 break;
kenjiArai 15:065fbeddc305 960 case 1: // Input Clock to System PLL
kenjiArai 15:065fbeddc305 961 switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
kenjiArai 15:065fbeddc305 962 case 0: // Internal RC oscillator
kenjiArai 15:065fbeddc305 963 SystemCoreClock = __IRC_OSC_CLK;
kenjiArai 15:065fbeddc305 964 break;
kenjiArai 15:065fbeddc305 965 case 1: // System oscillator
kenjiArai 15:065fbeddc305 966 SystemCoreClock = __SYS_OSC_CLK;
kenjiArai 15:065fbeddc305 967 break;
kenjiArai 15:065fbeddc305 968 case 2: // WDT Oscillator
kenjiArai 15:065fbeddc305 969 SystemCoreClock = wdt_osc;
kenjiArai 15:065fbeddc305 970 break;
kenjiArai 15:065fbeddc305 971 case 3: // Reserved
kenjiArai 15:065fbeddc305 972 SystemCoreClock = 0;
kenjiArai 15:065fbeddc305 973 break;
kenjiArai 15:065fbeddc305 974 }
kenjiArai 15:065fbeddc305 975 break;
kenjiArai 15:065fbeddc305 976 case 2: // WDT Oscillator
kenjiArai 15:065fbeddc305 977 SystemCoreClock = wdt_osc;
kenjiArai 15:065fbeddc305 978 break;
kenjiArai 15:065fbeddc305 979 case 3: // System PLL Clock Out
kenjiArai 15:065fbeddc305 980 switch (LPC_SYSCON->SYSPLLCLKSEL & 0x03) {
kenjiArai 15:065fbeddc305 981 case 0: // Internal RC oscillator
kenjiArai 15:065fbeddc305 982 if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
kenjiArai 15:065fbeddc305 983 SystemCoreClock = __IRC_OSC_CLK;
kenjiArai 15:065fbeddc305 984 } else {
kenjiArai 15:065fbeddc305 985 pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
kenjiArai 15:065fbeddc305 986 pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
kenjiArai 15:065fbeddc305 987 SystemCoreClock = __IRC_OSC_CLK * pll_fct0;
kenjiArai 15:065fbeddc305 988 }
kenjiArai 15:065fbeddc305 989 break;
kenjiArai 15:065fbeddc305 990 case 1: // System oscillator
kenjiArai 15:065fbeddc305 991 if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
kenjiArai 15:065fbeddc305 992 SystemCoreClock = __SYS_OSC_CLK;
kenjiArai 15:065fbeddc305 993 } else {
kenjiArai 15:065fbeddc305 994 pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
kenjiArai 15:065fbeddc305 995 pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
kenjiArai 15:065fbeddc305 996 SystemCoreClock = __SYS_OSC_CLK * pll_fct0;
kenjiArai 15:065fbeddc305 997 }
kenjiArai 15:065fbeddc305 998 break;
kenjiArai 15:065fbeddc305 999 case 2: // WDT Oscillator
kenjiArai 15:065fbeddc305 1000 if (LPC_SYSCON->SYSPLLCTRL & 0x180) {
kenjiArai 15:065fbeddc305 1001 SystemCoreClock = wdt_osc;
kenjiArai 15:065fbeddc305 1002 } else {
kenjiArai 15:065fbeddc305 1003 pll_fct0 = (LPC_SYSCON->SYSPLLCTRL & 0x01F) + 1;
kenjiArai 15:065fbeddc305 1004 pll_fct1 = (LPC_SYSCON->SYSPLLCTRL & 0x060) >> 5UL;
kenjiArai 15:065fbeddc305 1005 SystemCoreClock = wdt_osc * pll_fct0;
kenjiArai 15:065fbeddc305 1006 }
kenjiArai 15:065fbeddc305 1007 break;
kenjiArai 15:065fbeddc305 1008 case 3: // Reserved
kenjiArai 15:065fbeddc305 1009 SystemCoreClock = 0;
kenjiArai 15:065fbeddc305 1010 break;
kenjiArai 15:065fbeddc305 1011 }
kenjiArai 15:065fbeddc305 1012 break;
kenjiArai 15:065fbeddc305 1013 }
kenjiArai 15:065fbeddc305 1014 SystemCoreClock /= LPC_SYSCON->SYSAHBCLKDIV;
kenjiArai 15:065fbeddc305 1015 }
kenjiArai 15:065fbeddc305 1016
kenjiArai 15:065fbeddc305 1017 #if USE_REG_I2C
kenjiArai 15:065fbeddc305 1018 void i2c_io_reg (void){
kenjiArai 15:065fbeddc305 1019 uint32_t r0;
kenjiArai 15:065fbeddc305 1020
kenjiArai 15:065fbeddc305 1021 PRINTF("<Show IO Pin>");
kenjiArai 15:065fbeddc305 1022 put_rn();
kenjiArai 15:065fbeddc305 1023 // P0_4
kenjiArai 15:065fbeddc305 1024 r0 = LPC_IOCON->PIO0_4;
kenjiArai 15:065fbeddc305 1025 reg_print(SIZE_X, r0);
kenjiArai 15:065fbeddc305 1026 put_spc(2);
kenjiArai 15:065fbeddc305 1027 PRINTF("%s4(dp27)",io_port_name0);
kenjiArai 15:065fbeddc305 1028 put_spc(2);
kenjiArai 15:065fbeddc305 1029 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 1030 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 1031 case 0:
kenjiArai 15:065fbeddc305 1032 PRINTF(iomsg1);
kenjiArai 15:065fbeddc305 1033 break;
kenjiArai 15:065fbeddc305 1034 case 1:
kenjiArai 15:065fbeddc305 1035 PRINTF("SCL");
kenjiArai 15:065fbeddc305 1036 break;
kenjiArai 15:065fbeddc305 1037 }
kenjiArai 15:065fbeddc305 1038 put_lin();
kenjiArai 15:065fbeddc305 1039 switch (( r0 >> 8 ) & 0x3){
kenjiArai 15:065fbeddc305 1040 case 0:
kenjiArai 15:065fbeddc305 1041 PRINTF(iomsg4);
kenjiArai 15:065fbeddc305 1042 break;
kenjiArai 15:065fbeddc305 1043 case 1:
kenjiArai 15:065fbeddc305 1044 PRINTF(iomsg1);
kenjiArai 15:065fbeddc305 1045 break;
kenjiArai 15:065fbeddc305 1046 case 2:
kenjiArai 15:065fbeddc305 1047 PRINTF("Fast md");
kenjiArai 15:065fbeddc305 1048 break;
kenjiArai 15:065fbeddc305 1049 case 3:
kenjiArai 15:065fbeddc305 1050 PRINTF(iomsg2);
kenjiArai 15:065fbeddc305 1051 break;
kenjiArai 15:065fbeddc305 1052 }
kenjiArai 15:065fbeddc305 1053 put_rn();
kenjiArai 15:065fbeddc305 1054 // P0_5
kenjiArai 15:065fbeddc305 1055 r0 = LPC_IOCON->PIO0_5;
kenjiArai 15:065fbeddc305 1056 reg_print( SIZE_X, r0 );
kenjiArai 15:065fbeddc305 1057 put_spc(2);
kenjiArai 15:065fbeddc305 1058 PRINTF("%s5(dp5)",io_port_name0);
kenjiArai 15:065fbeddc305 1059 put_spc(3);
kenjiArai 15:065fbeddc305 1060 PRINTF(iomsg0);
kenjiArai 15:065fbeddc305 1061 switch (r0 & 0x7){
kenjiArai 15:065fbeddc305 1062 case 0:
kenjiArai 15:065fbeddc305 1063 PRINTF(iomsg1);
kenjiArai 15:065fbeddc305 1064 break;
kenjiArai 15:065fbeddc305 1065 case 1:
kenjiArai 15:065fbeddc305 1066 PRINTF("SDA");
kenjiArai 15:065fbeddc305 1067 break;
kenjiArai 15:065fbeddc305 1068 }
kenjiArai 15:065fbeddc305 1069 put_lin();
kenjiArai 15:065fbeddc305 1070 switch ((r0 >> 8 ) & 0x3){
kenjiArai 15:065fbeddc305 1071 case 0:
kenjiArai 15:065fbeddc305 1072 PRINTF(iomsg4);
kenjiArai 15:065fbeddc305 1073 break;
kenjiArai 15:065fbeddc305 1074 case 1:
kenjiArai 15:065fbeddc305 1075 PRINTF(iomsg1);
kenjiArai 15:065fbeddc305 1076 break;
kenjiArai 15:065fbeddc305 1077 case 2:
kenjiArai 15:065fbeddc305 1078 PRINTF("Fast md");
kenjiArai 15:065fbeddc305 1079 break;
kenjiArai 15:065fbeddc305 1080 case 3:
kenjiArai 15:065fbeddc305 1081 PRINTF(iomsg2);
kenjiArai 15:065fbeddc305 1082 break;
kenjiArai 15:065fbeddc305 1083 }
kenjiArai 15:065fbeddc305 1084 put_rn();
kenjiArai 15:065fbeddc305 1085 }
kenjiArai 15:065fbeddc305 1086
kenjiArai 15:065fbeddc305 1087 void i2c_reg (void){
kenjiArai 15:065fbeddc305 1088 uint32_t r0,r1,r2,r3,r4,r5,r6,r7;
kenjiArai 15:065fbeddc305 1089
kenjiArai 15:065fbeddc305 1090 r0 = LPC_I2C->CONSET;
kenjiArai 15:065fbeddc305 1091 r1 = LPC_I2C->STAT;
kenjiArai 15:065fbeddc305 1092 r2 = LPC_I2C->DAT;
kenjiArai 15:065fbeddc305 1093 r3 = LPC_I2C->SCLH;
kenjiArai 15:065fbeddc305 1094 r4 = LPC_I2C->SCLL;
kenjiArai 15:065fbeddc305 1095 r5 = LPC_I2C->CONCLR;
kenjiArai 15:065fbeddc305 1096 r6 = LPC_I2C->MMCTRL;
kenjiArai 15:065fbeddc305 1097 r7 = LPC_I2C->DATA_BUFFER;
kenjiArai 15:065fbeddc305 1098
kenjiArai 15:065fbeddc305 1099 PRINTF("<Show I2C Registers>");
kenjiArai 15:065fbeddc305 1100 put_rn();
kenjiArai 15:065fbeddc305 1101 reg_print(SIZE8, r0);
kenjiArai 15:065fbeddc305 1102 put_spc(2);
kenjiArai 15:065fbeddc305 1103 PRINTF("CONSET");
kenjiArai 15:065fbeddc305 1104 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 1105 put_rn();
kenjiArai 15:065fbeddc305 1106 reg_print(SIZE8, r1);
kenjiArai 15:065fbeddc305 1107 put_spc(2);
kenjiArai 15:065fbeddc305 1108 PRINTF("STAT");
kenjiArai 15:065fbeddc305 1109 PRINTF(imsg3);
kenjiArai 15:065fbeddc305 1110 put_rn();
kenjiArai 15:065fbeddc305 1111 reg_print(SIZE8, r2);
kenjiArai 15:065fbeddc305 1112 put_spc(2);
kenjiArai 15:065fbeddc305 1113 PRINTF("DAT");
kenjiArai 15:065fbeddc305 1114 PRINTF(imsg4);
kenjiArai 15:065fbeddc305 1115 put_rn();
kenjiArai 15:065fbeddc305 1116 put_spc(2);
kenjiArai 15:065fbeddc305 1117 PRINTF("ADR0--Not support");
kenjiArai 15:065fbeddc305 1118 put_rn();
kenjiArai 15:065fbeddc305 1119 reg_print(SIZE8, r3);
kenjiArai 15:065fbeddc305 1120 put_spc(2);
kenjiArai 15:065fbeddc305 1121 PRINTF("SCLH");
kenjiArai 15:065fbeddc305 1122 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 1123 put_rn();
kenjiArai 15:065fbeddc305 1124 reg_print(SIZE8, r4);
kenjiArai 15:065fbeddc305 1125 put_spc(2);
kenjiArai 15:065fbeddc305 1126 PRINTF("SCLL");
kenjiArai 15:065fbeddc305 1127 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 1128 put_rn();
kenjiArai 15:065fbeddc305 1129 reg_print(SIZE8, r5);
kenjiArai 15:065fbeddc305 1130 put_spc(2);
kenjiArai 15:065fbeddc305 1131 PRINTF("CONCLR");
kenjiArai 15:065fbeddc305 1132 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 1133 put_rn();
kenjiArai 15:065fbeddc305 1134 reg_print(SIZE8, r6);
kenjiArai 15:065fbeddc305 1135 put_spc(2);
kenjiArai 15:065fbeddc305 1136 PRINTF("MMCTRL");
kenjiArai 15:065fbeddc305 1137 PRINTF(imsg2);
kenjiArai 15:065fbeddc305 1138 put_rn();
kenjiArai 15:065fbeddc305 1139 put_spc(2);
kenjiArai 15:065fbeddc305 1140 PRINTF("ADR1,2,3--Not support");
kenjiArai 15:065fbeddc305 1141 put_rn();
kenjiArai 15:065fbeddc305 1142 reg_print(SIZE8, r7);
kenjiArai 15:065fbeddc305 1143 put_spc(2);
kenjiArai 15:065fbeddc305 1144 PRINTF("DATA_BUFFER");
kenjiArai 15:065fbeddc305 1145 PRINTF(imsg7);
kenjiArai 15:065fbeddc305 1146 put_rn();
kenjiArai 15:065fbeddc305 1147 put_spc(2);
kenjiArai 15:065fbeddc305 1148 PRINTF("MASK0,1,2,3--Not support");
kenjiArai 15:065fbeddc305 1149 put_rn();
kenjiArai 15:065fbeddc305 1150 }
kenjiArai 15:065fbeddc305 1151
kenjiArai 15:065fbeddc305 1152 void i2c_freq (void){
kenjiArai 15:065fbeddc305 1153 uint32_t r0,r1;
kenjiArai 15:065fbeddc305 1154
kenjiArai 15:065fbeddc305 1155 r0 = LPC_I2C->SCLH;
kenjiArai 15:065fbeddc305 1156 r1 = LPC_I2C->SCLL;
kenjiArai 15:065fbeddc305 1157 get_freq();
kenjiArai 15:065fbeddc305 1158 PRINTF("<I2C Status>");
kenjiArai 15:065fbeddc305 1159 put_rn();
kenjiArai 15:065fbeddc305 1160 PRINTF("Freq. = I2CPCLK/(SCLH+SCLL) = %d/(%d+%d) = %d Hz",
kenjiArai 15:065fbeddc305 1161 SystemCoreClock, r0, r1, SystemCoreClock/(r0+r1));
kenjiArai 15:065fbeddc305 1162 put_rn();
kenjiArai 15:065fbeddc305 1163 r0 = LPC_I2C->CONSET;
kenjiArai 15:065fbeddc305 1164 PRINTF("I2C I/F ");
kenjiArai 15:065fbeddc305 1165 if ( r0 & 0x40 ) {
kenjiArai 15:065fbeddc305 1166 PRINTF("Enabled");
kenjiArai 15:065fbeddc305 1167 } else {
kenjiArai 15:065fbeddc305 1168 PRINTF("disabled");
kenjiArai 15:065fbeddc305 1169 }
kenjiArai 15:065fbeddc305 1170 put_rn();
kenjiArai 15:065fbeddc305 1171 }
kenjiArai 15:065fbeddc305 1172 #endif
kenjiArai 15:065fbeddc305 1173
kenjiArai 15:065fbeddc305 1174 #if USE_MEM
kenjiArai 15:065fbeddc305 1175 // Range check for Memory dump
kenjiArai 15:065fbeddc305 1176 static void check_range (MEMO * mem){
kenjiArai 15:065fbeddc305 1177 uint8_t i;
kenjiArai 15:065fbeddc305 1178 uint32_t m;
kenjiArai 15:065fbeddc305 1179
kenjiArai 15:065fbeddc305 1180 mem->mflg = ERR_NOTHING;
kenjiArai 15:065fbeddc305 1181 for (i = 0 ; i < 5 ; i++) {
kenjiArai 15:065fbeddc305 1182 if (mem->mstr >= mem_range[i][0]) {
kenjiArai 15:065fbeddc305 1183 if (mem->mstr < mem_range[i][1]) {
kenjiArai 15:065fbeddc305 1184 m = mem->mstr + mem->msiz;
kenjiArai 15:065fbeddc305 1185 if (m < mem_range[i][1]) {
kenjiArai 15:065fbeddc305 1186 return; // no modification
kenjiArai 15:065fbeddc305 1187 } else {
kenjiArai 15:065fbeddc305 1188 m = mem_range[i][1];
kenjiArai 15:065fbeddc305 1189 mem->msiz = m - mem->mstr + 1;
kenjiArai 15:065fbeddc305 1190 mem->mflg = ERR_MODIFY_SIZ;
kenjiArai 15:065fbeddc305 1191 return; // modified size
kenjiArai 15:065fbeddc305 1192 }
kenjiArai 15:065fbeddc305 1193 }
kenjiArai 15:065fbeddc305 1194 }
kenjiArai 15:065fbeddc305 1195 }
kenjiArai 15:065fbeddc305 1196 mem->mflg = ERR_OUT_OF_RANGE;
kenjiArai 15:065fbeddc305 1197 mem->mstr = 0;
kenjiArai 15:065fbeddc305 1198 mem->msiz = 0;
kenjiArai 15:065fbeddc305 1199 return ;
kenjiArai 15:065fbeddc305 1200 }
kenjiArai 15:065fbeddc305 1201
kenjiArai 15:065fbeddc305 1202 // Memory dump error massage
kenjiArai 15:065fbeddc305 1203 void error_print (unsigned char flg){
kenjiArai 15:065fbeddc305 1204 switch (flg) {
kenjiArai 15:065fbeddc305 1205 case ERR_MODIFY_SIZ :
kenjiArai 15:065fbeddc305 1206 put_r();
kenjiArai 15:065fbeddc305 1207 PRINTF("Reach to out of range ");
kenjiArai 15:065fbeddc305 1208 put_rn();
kenjiArai 15:065fbeddc305 1209 break;
kenjiArai 15:065fbeddc305 1210 case ERR_OUT_OF_RANGE :
kenjiArai 15:065fbeddc305 1211 put_r();
kenjiArai 15:065fbeddc305 1212 PRINTF("Not in a memory area ");
kenjiArai 15:065fbeddc305 1213 put_rn();
kenjiArai 15:065fbeddc305 1214 break;
kenjiArai 15:065fbeddc305 1215 case ERR_NOTHING :
kenjiArai 15:065fbeddc305 1216 default :
kenjiArai 15:065fbeddc305 1217 ;
kenjiArai 15:065fbeddc305 1218 }
kenjiArai 15:065fbeddc305 1219 }
kenjiArai 15:065fbeddc305 1220
kenjiArai 15:065fbeddc305 1221 // Print memory contents
kenjiArai 15:065fbeddc305 1222 void put_dump (const unsigned char *buff, unsigned long ofs, int cnt){
kenjiArai 15:065fbeddc305 1223 int n;
kenjiArai 15:065fbeddc305 1224
kenjiArai 15:065fbeddc305 1225 PRINTF("%08lX ", ofs);
kenjiArai 15:065fbeddc305 1226 for(n = 0; n < cnt; n++) { PRINTF(" %02X", buff[n]); }
kenjiArai 15:065fbeddc305 1227 PUTC(' ');
kenjiArai 15:065fbeddc305 1228 for(n = 0; n < cnt; n++) {
kenjiArai 15:065fbeddc305 1229 if ((buff[n] < 0x20)||(buff[n] >= 0x7F)) { PUTC('.');
kenjiArai 15:065fbeddc305 1230 } else { PUTC(buff[n]); }
kenjiArai 15:065fbeddc305 1231 }
kenjiArai 15:065fbeddc305 1232 put_rn();
kenjiArai 15:065fbeddc305 1233 }
kenjiArai 15:065fbeddc305 1234
kenjiArai 15:065fbeddc305 1235 // dump memory with error check
kenjiArai 15:065fbeddc305 1236 void dump_w_err_ckeck (char **ptr, MEMO * mem){
kenjiArai 15:065fbeddc305 1237 check_range (mem);
kenjiArai 15:065fbeddc305 1238 for (*ptr=(char*)mem->mstr; mem->msiz >= 16; *ptr += 16, mem->msiz -= 16) {
kenjiArai 15:065fbeddc305 1239 put_r();
kenjiArai 15:065fbeddc305 1240 put_dump((unsigned char*)*ptr, (unsigned int)*ptr, 16);
kenjiArai 15:065fbeddc305 1241 }
kenjiArai 15:065fbeddc305 1242 if (mem->msiz) { put_dump((unsigned char*)*ptr, (unsigned int)*ptr, mem->msiz);
kenjiArai 15:065fbeddc305 1243 }
kenjiArai 15:065fbeddc305 1244 error_print(mem->mflg);
kenjiArai 15:065fbeddc305 1245 }
kenjiArai 15:065fbeddc305 1246
kenjiArai 15:065fbeddc305 1247 static void mem_inf (char *ptr){
kenjiArai 15:065fbeddc305 1248 put_r();
kenjiArai 15:065fbeddc305 1249 PRINTF("Mem. Mode d <address> [<count>], s, <ret> or f, q, ?");
kenjiArai 15:065fbeddc305 1250 put_rn();
kenjiArai 15:065fbeddc305 1251 mem.mstr = mem_range[0][0]; // default start address = Flash
kenjiArai 15:065fbeddc305 1252 mem.msiz =256;
kenjiArai 15:065fbeddc305 1253 mem.mold = 0;
kenjiArai 15:065fbeddc305 1254 mem.mtmp = 0;
kenjiArai 15:065fbeddc305 1255 mem.mflg = 0;
kenjiArai 15:065fbeddc305 1256 for (; mem.mflg != 0xff;) {
kenjiArai 15:065fbeddc305 1257 PRINTF("m>");
kenjiArai 15:065fbeddc305 1258 ptr = linebuf;
kenjiArai 15:065fbeddc305 1259 get_line(ptr, buf_size);
kenjiArai 15:065fbeddc305 1260 put_r();
kenjiArai 15:065fbeddc305 1261 switch(*ptr++){
kenjiArai 15:065fbeddc305 1262 case 'd' : // d <address> [<count>] - Dump memory
kenjiArai 15:065fbeddc305 1263 mem.mtmp = mem.mstr;
kenjiArai 15:065fbeddc305 1264 if (!xatoi(&ptr, &mem.mstr)) {
kenjiArai 15:065fbeddc305 1265 mem.mstr = mem.mtmp;
kenjiArai 15:065fbeddc305 1266 }
kenjiArai 15:065fbeddc305 1267 if (!xatoi(&ptr, &mem.msiz)) {
kenjiArai 15:065fbeddc305 1268 mem.msiz = 256;
kenjiArai 15:065fbeddc305 1269 }
kenjiArai 15:065fbeddc305 1270 mem.mtmp = mem.msiz;
kenjiArai 15:065fbeddc305 1271 dump_w_err_ckeck(&ptr, &mem);
kenjiArai 15:065fbeddc305 1272 mem.mold = mem.mstr;
kenjiArai 15:065fbeddc305 1273 mem.mstr += mem.mtmp;
kenjiArai 15:065fbeddc305 1274 break;
kenjiArai 15:065fbeddc305 1275 case 'f' : // next
kenjiArai 15:065fbeddc305 1276 case 'n' :
kenjiArai 15:065fbeddc305 1277 case 0x0d :
kenjiArai 15:065fbeddc305 1278 mem.msiz = 256;
kenjiArai 15:065fbeddc305 1279 mem.mtmp = mem.msiz;
kenjiArai 15:065fbeddc305 1280 dump_w_err_ckeck(&ptr, &mem);
kenjiArai 15:065fbeddc305 1281 mem.mold = mem.mstr;
kenjiArai 15:065fbeddc305 1282 mem.mstr += 256;
kenjiArai 15:065fbeddc305 1283 break;
kenjiArai 15:065fbeddc305 1284 case 'q' : // quit
kenjiArai 15:065fbeddc305 1285 mem.mflg = 0xff;
kenjiArai 15:065fbeddc305 1286 break;
kenjiArai 15:065fbeddc305 1287 case 'b' : // Back to more
kenjiArai 15:065fbeddc305 1288 if (mem.mold == 0){
kenjiArai 15:065fbeddc305 1289 ;
kenjiArai 15:065fbeddc305 1290 } else {
kenjiArai 15:065fbeddc305 1291 mem.mold -= 256;
kenjiArai 15:065fbeddc305 1292 }
kenjiArai 15:065fbeddc305 1293 case 'k' : // keep previous address
kenjiArai 15:065fbeddc305 1294 mem.mstr = mem.mold;
kenjiArai 15:065fbeddc305 1295 mem.msiz = 256;
kenjiArai 15:065fbeddc305 1296 mem.mtmp = mem.msiz;
kenjiArai 15:065fbeddc305 1297 dump_w_err_ckeck(&ptr, &mem);
kenjiArai 15:065fbeddc305 1298 mem.mstr += 256;
kenjiArai 15:065fbeddc305 1299 break;
kenjiArai 15:065fbeddc305 1300 case 'a' : // start RAM top
kenjiArai 15:065fbeddc305 1301 mem.mstr = mem_range[1][0];
kenjiArai 15:065fbeddc305 1302 mem.msiz =256;
kenjiArai 15:065fbeddc305 1303 mem.mold = 0;
kenjiArai 15:065fbeddc305 1304 mem.mtmp = 0;
kenjiArai 15:065fbeddc305 1305 mem.mflg = 0;
kenjiArai 15:065fbeddc305 1306 dump_w_err_ckeck(&ptr, &mem);
kenjiArai 15:065fbeddc305 1307 mem.mstr += 256;
kenjiArai 15:065fbeddc305 1308 break;
kenjiArai 15:065fbeddc305 1309 case 'o' : // start ROM top
kenjiArai 15:065fbeddc305 1310 mem.mstr = mem_range[0][0];
kenjiArai 15:065fbeddc305 1311 mem.msiz =256;
kenjiArai 15:065fbeddc305 1312 mem.mold = 0;
kenjiArai 15:065fbeddc305 1313 mem.mtmp = 0;
kenjiArai 15:065fbeddc305 1314 mem.mflg = 0;
kenjiArai 15:065fbeddc305 1315 dump_w_err_ckeck(&ptr, &mem);
kenjiArai 15:065fbeddc305 1316 mem.mstr += 256;
kenjiArai 15:065fbeddc305 1317 break;
kenjiArai 15:065fbeddc305 1318 case 's' :
kenjiArai 15:065fbeddc305 1319 PRINTF("Memory Configuration");
kenjiArai 15:065fbeddc305 1320 put_rn();
kenjiArai 15:065fbeddc305 1321 PRINTF("%s0x%08lx to 0x%08lx ", rmsg0, mem_range[0][0], mem_range[0][1]);
kenjiArai 15:065fbeddc305 1322 put_rn();
kenjiArai 15:065fbeddc305 1323 PRINTF("%s0x%08lx to 0x%08lx ", rmsg1, mem_range[1][0], mem_range[1][1]);
kenjiArai 15:065fbeddc305 1324 put_rn();
kenjiArai 15:065fbeddc305 1325 PRINTF("%s0x%08lx to 0x%08lx ", rmsg2, mem_range[2][0], mem_range[2][1]);
kenjiArai 15:065fbeddc305 1326 put_rn();
kenjiArai 15:065fbeddc305 1327 PRINTF("%s0x%08lx to 0x%08lx ", rmsg3, mem_range[3][0], mem_range[3][1]);
kenjiArai 15:065fbeddc305 1328 put_rn();
kenjiArai 15:065fbeddc305 1329 PRINTF("%s0x%08lx to 0x%08lx ", rmsg4, mem_range[4][0], mem_range[4][1]);
kenjiArai 15:065fbeddc305 1330 put_rn();
kenjiArai 15:065fbeddc305 1331 break;
kenjiArai 15:065fbeddc305 1332 case '?' :
kenjiArai 15:065fbeddc305 1333 PRINTF("d <address> [<count>] - Dump memory");
kenjiArai 15:065fbeddc305 1334 put_rn();
kenjiArai 15:065fbeddc305 1335 PRINTF("s - Show memory structure ");
kenjiArai 15:065fbeddc305 1336 put_rn();
kenjiArai 15:065fbeddc305 1337 PRINTF("o - Dump memory / start from ROM top");
kenjiArai 15:065fbeddc305 1338 put_rn();
kenjiArai 15:065fbeddc305 1339 PRINTF("a - Dump memory / start from RAM top");
kenjiArai 15:065fbeddc305 1340 put_rn();
kenjiArai 15:065fbeddc305 1341 PRINTF("k - Dump memory / keep same 256bytes");
kenjiArai 15:065fbeddc305 1342 put_rn();
kenjiArai 15:065fbeddc305 1343 PRINTF("b - Dump memory / before 256bytes");
kenjiArai 15:065fbeddc305 1344 put_rn();
kenjiArai 15:065fbeddc305 1345 PRINTF("<RET> or f, n - Dump memory / next 256bytes");
kenjiArai 15:065fbeddc305 1346 put_rn();
kenjiArai 15:065fbeddc305 1347 PRINTF("q - Exit memory mode");
kenjiArai 15:065fbeddc305 1348 put_rn();
kenjiArai 15:065fbeddc305 1349 break;
kenjiArai 15:065fbeddc305 1350 default:
kenjiArai 15:065fbeddc305 1351 PUTC('?');
kenjiArai 15:065fbeddc305 1352 put_rn();
kenjiArai 15:065fbeddc305 1353 }
kenjiArai 15:065fbeddc305 1354 }
kenjiArai 15:065fbeddc305 1355 PRINTF("Return to Normal Mode");
kenjiArai 15:065fbeddc305 1356 }
kenjiArai 15:065fbeddc305 1357 #endif //USE_MEM
kenjiArai 15:065fbeddc305 1358
kenjiArai 15:065fbeddc305 1359 #if USE_EEP
kenjiArai 15:065fbeddc305 1360 static void mem_chk_msg (char mflg){
kenjiArai 15:065fbeddc305 1361 switch (mflg) {
kenjiArai 15:065fbeddc305 1362 case ERR_MODIFY_SIZ :
kenjiArai 15:065fbeddc305 1363 PRINTF(" Reached out of range");
kenjiArai 15:065fbeddc305 1364 put_rn();
kenjiArai 15:065fbeddc305 1365 break;
kenjiArai 15:065fbeddc305 1366 case ERR_OUT_OF_RANGE :
kenjiArai 15:065fbeddc305 1367 PRINTF(" Not in a memory area");
kenjiArai 15:065fbeddc305 1368 put_rn();
kenjiArai 15:065fbeddc305 1369 break;
kenjiArai 15:065fbeddc305 1370 case ERR_NOTHING :
kenjiArai 15:065fbeddc305 1371 default :
kenjiArai 15:065fbeddc305 1372 ;
kenjiArai 15:065fbeddc305 1373 }
kenjiArai 15:065fbeddc305 1374 }
kenjiArai 15:065fbeddc305 1375
kenjiArai 15:065fbeddc305 1376 void put_eep_dump (
kenjiArai 15:065fbeddc305 1377 uint32_t addr, // Heading address value
kenjiArai 15:065fbeddc305 1378 uint8_t len // Number of items to be dumped
kenjiArai 15:065fbeddc305 1379 ){
kenjiArai 15:065fbeddc305 1380 uint32_t i;
kenjiArai 15:065fbeddc305 1381 uint8_t eep[16];
kenjiArai 18:b3a27f681171 1382 //?????????????????????????????????????????????????????????????????????????
kenjiArai 18:b3a27f681171 1383 #warning "?????"
kenjiArai 18:b3a27f681171 1384 PRINTF("%08x ", (int)addr); // address
kenjiArai 15:065fbeddc305 1385 for (i = 0; i < len; i++) { // Hexdecimal dump
kenjiArai 15:065fbeddc305 1386 eep[i] = xat24c1024.read(addr++);
kenjiArai 15:065fbeddc305 1387 PRINTF(" %02x", eep[i]);
kenjiArai 15:065fbeddc305 1388 }
kenjiArai 15:065fbeddc305 1389 PUTC(' ');
kenjiArai 15:065fbeddc305 1390 for (i = 0; i < len; i++){ // ASCII dump
kenjiArai 15:065fbeddc305 1391 PUTC((eep[i] >= ' ' && eep[i] <= '~') ? eep[i] : '.');
kenjiArai 15:065fbeddc305 1392 }
kenjiArai 15:065fbeddc305 1393 put_rn();
kenjiArai 15:065fbeddc305 1394 }
kenjiArai 15:065fbeddc305 1395
kenjiArai 15:065fbeddc305 1396 static void check_eeprange (MEMO * eepmem){
kenjiArai 15:065fbeddc305 1397 uint32_t m;
kenjiArai 15:065fbeddc305 1398
kenjiArai 15:065fbeddc305 1399 m = sizeof(eepmem_range) / sizeof(*eepmem_range);
kenjiArai 15:065fbeddc305 1400 eepmem->mflg = ERR_NOTHING;
kenjiArai 15:065fbeddc305 1401 if (eepmem->mstr >= eepmem_range[0]){
kenjiArai 15:065fbeddc305 1402 if (eepmem->mstr < eepmem_range[1]){
kenjiArai 15:065fbeddc305 1403 m = eepmem->mstr + eepmem->msiz;
kenjiArai 15:065fbeddc305 1404 if (m < eepmem_range[1]){
kenjiArai 15:065fbeddc305 1405 return; // no modification
kenjiArai 15:065fbeddc305 1406 } else {
kenjiArai 15:065fbeddc305 1407 m = eepmem_range[1];
kenjiArai 15:065fbeddc305 1408 eepmem->msiz = m - eepmem->mstr + 1;
kenjiArai 15:065fbeddc305 1409 eepmem->mflg = ERR_MODIFY_SIZ;
kenjiArai 15:065fbeddc305 1410 return; // modified size
kenjiArai 15:065fbeddc305 1411 }
kenjiArai 15:065fbeddc305 1412 }
kenjiArai 15:065fbeddc305 1413 }
kenjiArai 15:065fbeddc305 1414 eepmem->mflg = ERR_OUT_OF_RANGE;
kenjiArai 15:065fbeddc305 1415 eepmem->mstr = 0;
kenjiArai 15:065fbeddc305 1416 eepmem->msiz = 0;
kenjiArai 15:065fbeddc305 1417 return ;
kenjiArai 15:065fbeddc305 1418 }
kenjiArai 15:065fbeddc305 1419
kenjiArai 15:065fbeddc305 1420 static void eepmem_inf (char *ptr){
kenjiArai 15:065fbeddc305 1421 uint8_t c, dt;
kenjiArai 15:065fbeddc305 1422 unsigned long p1, p2, p3;
kenjiArai 15:065fbeddc305 1423
kenjiArai 15:065fbeddc305 1424 put_r();
kenjiArai 15:065fbeddc305 1425 PRINTF("Enter EEPROM 1) d <address> 256bytes, 2) s, 3) <ret>, 4) q 5) ?");
kenjiArai 15:065fbeddc305 1426 put_rn();
kenjiArai 15:065fbeddc305 1427 eepmem.mstr = eepmem_range[0]; // start head of table
kenjiArai 15:065fbeddc305 1428 eepmem.msiz =256;
kenjiArai 15:065fbeddc305 1429 eepmem.mold = 0;
kenjiArai 15:065fbeddc305 1430 eepmem.mtmp = 0;
kenjiArai 15:065fbeddc305 1431 eepmem.mflg = 0;
kenjiArai 15:065fbeddc305 1432 eepmem.mbhw = DW_CHAR;
kenjiArai 15:065fbeddc305 1433 for (; eepmem.mflg != 0xff;) {
kenjiArai 15:065fbeddc305 1434 PRINTF("e>");
kenjiArai 15:065fbeddc305 1435 ptr = linebuf;
kenjiArai 15:065fbeddc305 1436 get_line(ptr, buf_size);
kenjiArai 15:065fbeddc305 1437 put_r();
kenjiArai 15:065fbeddc305 1438 switch(*ptr++){
kenjiArai 15:065fbeddc305 1439 case 'd' : // d <address> - Dump memory
kenjiArai 15:065fbeddc305 1440 eepmem.mtmp = eepmem.mstr; // save defult start addres
kenjiArai 15:065fbeddc305 1441 if (!xatoi(&ptr, &eepmem.mstr)){
kenjiArai 15:065fbeddc305 1442 eepmem.mstr = eepmem.mtmp; // recover defult address
kenjiArai 15:065fbeddc305 1443 }
kenjiArai 15:065fbeddc305 1444 eepmem.msiz = 256;
kenjiArai 15:065fbeddc305 1445 eepmem.msiz /= eepmem.mbhw;
kenjiArai 15:065fbeddc305 1446 eepmem.mtmp = eepmem.msiz * eepmem.mbhw;
kenjiArai 15:065fbeddc305 1447 check_eeprange (&eepmem);
kenjiArai 15:065fbeddc305 1448 for (ptr=(char*)eepmem.mstr;
kenjiArai 15:065fbeddc305 1449 eepmem.msiz >= 16/eepmem.mbhw;
kenjiArai 15:065fbeddc305 1450 ptr += 16, eepmem.msiz -= 16/eepmem.mbhw)
kenjiArai 15:065fbeddc305 1451 {
kenjiArai 15:065fbeddc305 1452 put_eep_dump((UINT)ptr, 16/eepmem.mbhw);
kenjiArai 15:065fbeddc305 1453 }
kenjiArai 15:065fbeddc305 1454 if (eepmem.msiz){
kenjiArai 15:065fbeddc305 1455 put_eep_dump((UINT)ptr, eepmem.msiz);
kenjiArai 15:065fbeddc305 1456 }
kenjiArai 15:065fbeddc305 1457 mem_chk_msg( eepmem.mflg );
kenjiArai 15:065fbeddc305 1458 eepmem.mold = eepmem.mstr;
kenjiArai 15:065fbeddc305 1459 eepmem.mstr += eepmem.mtmp;
kenjiArai 15:065fbeddc305 1460 break;
kenjiArai 15:065fbeddc305 1461 case 'f' : // next
kenjiArai 15:065fbeddc305 1462 case 'n' :
kenjiArai 15:065fbeddc305 1463 case 0x0d : // CR
kenjiArai 15:065fbeddc305 1464 eepmem.msiz = 256/eepmem.mbhw;
kenjiArai 15:065fbeddc305 1465 eepmem.mtmp = eepmem.msiz;
kenjiArai 15:065fbeddc305 1466 check_eeprange (&eepmem);
kenjiArai 15:065fbeddc305 1467 for (ptr=(char*)eepmem.mstr;
kenjiArai 15:065fbeddc305 1468 eepmem.msiz >= 16/eepmem.mbhw;
kenjiArai 15:065fbeddc305 1469 ptr += 16, eepmem.msiz -= 16/eepmem.mbhw)
kenjiArai 15:065fbeddc305 1470 {
kenjiArai 15:065fbeddc305 1471 put_eep_dump((UINT)ptr, 16/eepmem.mbhw);
kenjiArai 15:065fbeddc305 1472 }
kenjiArai 15:065fbeddc305 1473 mem_chk_msg(eepmem.mflg);
kenjiArai 15:065fbeddc305 1474 eepmem.mold = eepmem.mstr;
kenjiArai 15:065fbeddc305 1475 eepmem.mstr += 256;
kenjiArai 15:065fbeddc305 1476 break;
kenjiArai 15:065fbeddc305 1477 case 'q' : // quit
kenjiArai 15:065fbeddc305 1478 eepmem.mflg = 0xff;
kenjiArai 15:065fbeddc305 1479 break;
kenjiArai 15:065fbeddc305 1480 case 'b' : // Back to more
kenjiArai 15:065fbeddc305 1481 if (eepmem.mold == 0){
kenjiArai 15:065fbeddc305 1482 ;
kenjiArai 15:065fbeddc305 1483 } else {
kenjiArai 15:065fbeddc305 1484 eepmem.mold -= 256;
kenjiArai 15:065fbeddc305 1485 }
kenjiArai 15:065fbeddc305 1486 case 'k' : // keep previous address
kenjiArai 15:065fbeddc305 1487 eepmem.mstr = eepmem.mold;
kenjiArai 15:065fbeddc305 1488 eepmem.msiz = 256/eepmem.mbhw;
kenjiArai 15:065fbeddc305 1489 eepmem.mtmp = eepmem.msiz;
kenjiArai 15:065fbeddc305 1490 check_eeprange (&eepmem);
kenjiArai 15:065fbeddc305 1491 for (ptr=(char*)eepmem.mstr; eepmem.msiz >= 16/eepmem.mbhw; ptr += 16,
kenjiArai 15:065fbeddc305 1492 eepmem.msiz -= 16/eepmem.mbhw){
kenjiArai 15:065fbeddc305 1493 put_eep_dump((UINT)ptr, 16/eepmem.mbhw);
kenjiArai 15:065fbeddc305 1494 }
kenjiArai 15:065fbeddc305 1495 mem_chk_msg(eepmem.mflg);
kenjiArai 15:065fbeddc305 1496 eepmem.mstr += 256;
kenjiArai 15:065fbeddc305 1497 break;
kenjiArai 15:065fbeddc305 1498 case 'e' : // e <address> [<value> ...] - Edit memory
kenjiArai 15:065fbeddc305 1499 ptr = linebuf;
kenjiArai 15:065fbeddc305 1500 get_line(ptr, buf_size);
kenjiArai 15:065fbeddc305 1501 p3 = DW_CHAR;
kenjiArai 15:065fbeddc305 1502 if (!xatoi(&ptr, &p1)){
kenjiArai 15:065fbeddc305 1503 PRINTF("? ->e <address> [<value> ...]");
kenjiArai 15:065fbeddc305 1504 put_rn();
kenjiArai 15:065fbeddc305 1505 break; // Get start address
kenjiArai 15:065fbeddc305 1506 }
kenjiArai 15:065fbeddc305 1507 if (xatoi(&ptr, &p2)) { // 2nd parameter is given
kenjiArai 15:065fbeddc305 1508 do {
kenjiArai 15:065fbeddc305 1509 xat24c1024.write((uint16_t)p1, (uint8_t)p2);
kenjiArai 18:b3a27f681171 1510 ThisThread::sleep_for(10ms);
kenjiArai 15:065fbeddc305 1511 dt = xat24c1024.read((uint16_t)p1);
kenjiArai 15:065fbeddc305 1512 if (dt != (uint8_t)p2){
kenjiArai 15:065fbeddc305 1513 PRINTF("?\r\n");
kenjiArai 15:065fbeddc305 1514 }
kenjiArai 15:065fbeddc305 1515 p1 += p3;
kenjiArai 15:065fbeddc305 1516 } while (xatoi(&ptr, &p2)); // Get next value
kenjiArai 15:065fbeddc305 1517 break;
kenjiArai 15:065fbeddc305 1518 }
kenjiArai 15:065fbeddc305 1519 for (;;) {// 2nd parameter is not given (interactive mode)
kenjiArai 18:b3a27f681171 1520 PRINTF("%08x 0x%02x-", (int)p1, *(BYTE*)p1);
kenjiArai 15:065fbeddc305 1521 ptr = linebuf;
kenjiArai 15:065fbeddc305 1522 get_line(ptr, buf_size);
kenjiArai 15:065fbeddc305 1523 if (*ptr == '.'){ break;}
kenjiArai 15:065fbeddc305 1524 if (*ptr == 0x1b){ break;}
kenjiArai 15:065fbeddc305 1525 if ((BYTE)*ptr >= ' ') {
kenjiArai 15:065fbeddc305 1526 if (!xatoi(&ptr, &p2)){ continue;}
kenjiArai 15:065fbeddc305 1527 xat24c1024.write((uint16_t)p1, (uint8_t)p2);
kenjiArai 18:b3a27f681171 1528 ThisThread::sleep_for(10ms);
kenjiArai 15:065fbeddc305 1529 dt = xat24c1024.read((uint16_t)p1);
kenjiArai 15:065fbeddc305 1530 if (dt != (uint8_t)p2){
kenjiArai 15:065fbeddc305 1531 PRINTF("?\r\n");
kenjiArai 15:065fbeddc305 1532 }
kenjiArai 15:065fbeddc305 1533 }
kenjiArai 15:065fbeddc305 1534 p1 += p3;
kenjiArai 15:065fbeddc305 1535 }
kenjiArai 15:065fbeddc305 1536 break;
kenjiArai 15:065fbeddc305 1537 case 's' :
kenjiArai 15:065fbeddc305 1538 PRINTF("AT24C1024B");
kenjiArai 15:065fbeddc305 1539 put_rn();
kenjiArai 18:b3a27f681171 1540 //?????????????????????????????????????????????????????????????????????????
kenjiArai 18:b3a27f681171 1541 #warning "?????"
kenjiArai 18:b3a27f681171 1542 PRINTF("EEPROM 0x%08lx to 0x%08lx", (int)eepmem_range[0], (int)eepmem_range[1]);
kenjiArai 15:065fbeddc305 1543 put_rn();
kenjiArai 15:065fbeddc305 1544 break;
kenjiArai 15:065fbeddc305 1545 case '?' :
kenjiArai 15:065fbeddc305 1546 PRINTF("d <address> -Dump memory");
kenjiArai 15:065fbeddc305 1547 PRINTF(" (e.g. >d 0x10f00<RET>)");
kenjiArai 15:065fbeddc305 1548 put_rn();
kenjiArai 15:065fbeddc305 1549 PRINTF("e <address> [<value> ...] - Edit memory");
kenjiArai 15:065fbeddc305 1550 put_rn();
kenjiArai 15:065fbeddc305 1551 PRINTF("s -Show memory structure");
kenjiArai 15:065fbeddc305 1552 put_rn();
kenjiArai 15:065fbeddc305 1553 PRINTF("<RET>-Dump memory, next 256 bytes (also 'f','n')");
kenjiArai 15:065fbeddc305 1554 put_rn();
kenjiArai 15:065fbeddc305 1555 PRINTF("k -Dump memory, same as before 256 bytes ('b' -256)");
kenjiArai 15:065fbeddc305 1556 put_rn();
kenjiArai 15:065fbeddc305 1557 PRINTF("q -Exit EEPROM mode" );
kenjiArai 15:065fbeddc305 1558 put_rn();
kenjiArai 15:065fbeddc305 1559 break;
kenjiArai 15:065fbeddc305 1560 default:
kenjiArai 15:065fbeddc305 1561 PUTC('?');
kenjiArai 15:065fbeddc305 1562 put_rn();
kenjiArai 15:065fbeddc305 1563 }
kenjiArai 15:065fbeddc305 1564 }
kenjiArai 15:065fbeddc305 1565 PRINTF("Return to Normal Mode");
kenjiArai 15:065fbeddc305 1566 }
kenjiArai 15:065fbeddc305 1567 #endif
kenjiArai 15:065fbeddc305 1568
kenjiArai 15:065fbeddc305 1569 //-----------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1570 // Monitor Main Program
kenjiArai 15:065fbeddc305 1571 //-----------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1572 int mon_hw (void) {
kenjiArai 15:065fbeddc305 1573 char *ptr;
kenjiArai 15:065fbeddc305 1574
kenjiArai 15:065fbeddc305 1575 put_r();
kenjiArai 15:065fbeddc305 1576 PRINTF("%s [Help:'?' key]", mon_msg_hw);
kenjiArai 15:065fbeddc305 1577 put_rn();
kenjiArai 15:065fbeddc305 1578 #if USE_SYS
kenjiArai 15:065fbeddc305 1579 get_freq();
kenjiArai 15:065fbeddc305 1580 #endif //USE_SYS
kenjiArai 15:065fbeddc305 1581 for (;;) {
kenjiArai 15:065fbeddc305 1582 put_r();
kenjiArai 15:065fbeddc305 1583 PUTC('>');
kenjiArai 15:065fbeddc305 1584 ptr = linebuf;
kenjiArai 15:065fbeddc305 1585 get_line(ptr, buf_size);
kenjiArai 15:065fbeddc305 1586 switch (*ptr++) {
kenjiArai 15:065fbeddc305 1587 #if USE_MEM
kenjiArai 15:065fbeddc305 1588 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1589 // Memory
kenjiArai 15:065fbeddc305 1590 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1591 case 'm' :
kenjiArai 15:065fbeddc305 1592 mem_inf(ptr);
kenjiArai 15:065fbeddc305 1593 put_rn();
kenjiArai 15:065fbeddc305 1594 break;
kenjiArai 15:065fbeddc305 1595 #endif // USE_MEM
kenjiArai 15:065fbeddc305 1596 #if USE_EEP
kenjiArai 15:065fbeddc305 1597 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1598 // EEPROM Memory
kenjiArai 15:065fbeddc305 1599 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1600 /* EEPROM Memory */
kenjiArai 15:065fbeddc305 1601 case 'e' :
kenjiArai 15:065fbeddc305 1602 eepmem_inf(ptr);
kenjiArai 15:065fbeddc305 1603 put_rn();
kenjiArai 15:065fbeddc305 1604 break;
kenjiArai 15:065fbeddc305 1605 #endif // USE_EEP
kenjiArai 15:065fbeddc305 1606 #if USE_REG_SPI_UART
kenjiArai 15:065fbeddc305 1607 //--------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1608 // Register
kenjiArai 15:065fbeddc305 1609 //--------------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1610 case 'r' :
kenjiArai 15:065fbeddc305 1611 uint8_t r_flg;
kenjiArai 15:065fbeddc305 1612 put_r();
kenjiArai 15:065fbeddc305 1613 PRINTF("Reg. Mode p,u,i,s,t,a,d,l,w,c & ?");
kenjiArai 15:065fbeddc305 1614 put_rn();
kenjiArai 15:065fbeddc305 1615 r_flg = 0;
kenjiArai 15:065fbeddc305 1616 for (; r_flg != 0xff;) {
kenjiArai 15:065fbeddc305 1617 PRINTF("r>");
kenjiArai 15:065fbeddc305 1618 ptr = linebuf;
kenjiArai 15:065fbeddc305 1619 get_line(ptr, sizeof(linebuf));
kenjiArai 15:065fbeddc305 1620 put_r();
kenjiArai 15:065fbeddc305 1621 switch(*ptr++){
kenjiArai 15:065fbeddc305 1622 case 'p' :
kenjiArai 15:065fbeddc305 1623 switch(*ptr++){
kenjiArai 15:065fbeddc305 1624 case '0' :
kenjiArai 15:065fbeddc305 1625 io_config0();
kenjiArai 15:065fbeddc305 1626 break;
kenjiArai 15:065fbeddc305 1627 case '1' :
kenjiArai 15:065fbeddc305 1628 io_config1();
kenjiArai 15:065fbeddc305 1629 break;
kenjiArai 15:065fbeddc305 1630 case '*' :
kenjiArai 15:065fbeddc305 1631 io_config0();
kenjiArai 15:065fbeddc305 1632 put_rn();
kenjiArai 15:065fbeddc305 1633 io_config1();
kenjiArai 15:065fbeddc305 1634 break;
kenjiArai 15:065fbeddc305 1635 case '?' :
kenjiArai 15:065fbeddc305 1636 default:
kenjiArai 15:065fbeddc305 1637 PRINTF("Enter p0,p1 and p* for all");
kenjiArai 15:065fbeddc305 1638 put_rn();
kenjiArai 15:065fbeddc305 1639 }
kenjiArai 15:065fbeddc305 1640 break;;
kenjiArai 15:065fbeddc305 1641 case 'u' :
kenjiArai 15:065fbeddc305 1642 uart_reg();
kenjiArai 15:065fbeddc305 1643 break;
kenjiArai 15:065fbeddc305 1644 //case 'i' :
kenjiArai 15:065fbeddc305 1645 // i2c_reg();
kenjiArai 15:065fbeddc305 1646 // break;
kenjiArai 15:065fbeddc305 1647 case 's' :
kenjiArai 15:065fbeddc305 1648 switch(*ptr++){
kenjiArai 15:065fbeddc305 1649 case '0' :
kenjiArai 15:065fbeddc305 1650 spi_reg(SPI_0);
kenjiArai 15:065fbeddc305 1651 break;
kenjiArai 15:065fbeddc305 1652 case '1' :
kenjiArai 15:065fbeddc305 1653 spi_reg(SPI_1);
kenjiArai 15:065fbeddc305 1654 break;
kenjiArai 15:065fbeddc305 1655 case '*' :
kenjiArai 15:065fbeddc305 1656 spi_reg(SPI_0);
kenjiArai 15:065fbeddc305 1657 put_rn();
kenjiArai 15:065fbeddc305 1658 spi_reg( SPI_1 );
kenjiArai 15:065fbeddc305 1659 break;
kenjiArai 15:065fbeddc305 1660 case '?' :
kenjiArai 15:065fbeddc305 1661 default:
kenjiArai 15:065fbeddc305 1662 PRINTF("Enter s0,s1 and s* for all");
kenjiArai 15:065fbeddc305 1663 put_rn();
kenjiArai 15:065fbeddc305 1664 }
kenjiArai 15:065fbeddc305 1665 break;
kenjiArai 15:065fbeddc305 1666 case 't' : //
kenjiArai 15:065fbeddc305 1667 not_yet_impliment();
kenjiArai 15:065fbeddc305 1668 break;
kenjiArai 15:065fbeddc305 1669 case 'a' : //
kenjiArai 15:065fbeddc305 1670 not_yet_impliment();
kenjiArai 15:065fbeddc305 1671 break;
kenjiArai 15:065fbeddc305 1672 case 'd' : //
kenjiArai 15:065fbeddc305 1673 not_yet_impliment();
kenjiArai 15:065fbeddc305 1674 break;
kenjiArai 15:065fbeddc305 1675 case 'w' : //
kenjiArai 15:065fbeddc305 1676 not_yet_impliment();
kenjiArai 15:065fbeddc305 1677 break;
kenjiArai 15:065fbeddc305 1678 case 'l' : //
kenjiArai 15:065fbeddc305 1679 not_yet_impliment();
kenjiArai 15:065fbeddc305 1680 break;
kenjiArai 15:065fbeddc305 1681 case 'c' : //
kenjiArai 15:065fbeddc305 1682 not_yet_impliment();
kenjiArai 15:065fbeddc305 1683 break;
kenjiArai 15:065fbeddc305 1684 case 'x' : //
kenjiArai 15:065fbeddc305 1685 not_yet_impliment();
kenjiArai 15:065fbeddc305 1686 break;
kenjiArai 15:065fbeddc305 1687 case 'y' : //
kenjiArai 15:065fbeddc305 1688 not_yet_impliment();
kenjiArai 15:065fbeddc305 1689 break;
kenjiArai 15:065fbeddc305 1690 case '?' :
kenjiArai 15:065fbeddc305 1691 PRINTF("p - I/O Pin Config");
kenjiArai 15:065fbeddc305 1692 put_rn();
kenjiArai 15:065fbeddc305 1693 PRINTF("u - UART");
kenjiArai 15:065fbeddc305 1694 put_rn();
kenjiArai 15:065fbeddc305 1695 PRINTF("i - I2C -> separate command 'i'");
kenjiArai 15:065fbeddc305 1696 put_rn();
kenjiArai 15:065fbeddc305 1697 PRINTF("s - SPI");
kenjiArai 15:065fbeddc305 1698 put_rn();
kenjiArai 15:065fbeddc305 1699 PRINTF("t - TIMER");
kenjiArai 15:065fbeddc305 1700 put_rn();
kenjiArai 15:065fbeddc305 1701 PRINTF("a - ADC");
kenjiArai 15:065fbeddc305 1702 put_rn();
kenjiArai 15:065fbeddc305 1703 PRINTF("d - DAC");
kenjiArai 15:065fbeddc305 1704 put_rn();
kenjiArai 15:065fbeddc305 1705 PRINTF("l - LDC");
kenjiArai 15:065fbeddc305 1706 put_rn();
kenjiArai 15:065fbeddc305 1707 PRINTF("w - WWDG");
kenjiArai 15:065fbeddc305 1708 put_rn();
kenjiArai 15:065fbeddc305 1709 PRINTF("c - COMP");
kenjiArai 15:065fbeddc305 1710 put_rn();
kenjiArai 15:065fbeddc305 1711 break;
kenjiArai 15:065fbeddc305 1712 case 'q' : // quit
kenjiArai 15:065fbeddc305 1713 r_flg = 0xff;
kenjiArai 15:065fbeddc305 1714 break;
kenjiArai 15:065fbeddc305 1715 default:
kenjiArai 15:065fbeddc305 1716 PUTC('?');
kenjiArai 15:065fbeddc305 1717 put_rn();
kenjiArai 15:065fbeddc305 1718 }
kenjiArai 15:065fbeddc305 1719 }
kenjiArai 15:065fbeddc305 1720 PRINTF("Return to Normal Mode");
kenjiArai 15:065fbeddc305 1721 put_rn();
kenjiArai 15:065fbeddc305 1722 break;
kenjiArai 15:065fbeddc305 1723 #endif // USE_REG_SPI_UART
kenjiArai 15:065fbeddc305 1724 #if USE_PORT
kenjiArai 15:065fbeddc305 1725 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1726 // Port configration
kenjiArai 15:065fbeddc305 1727 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1728 case 'p' : //
kenjiArai 15:065fbeddc305 1729 put_r();
kenjiArai 15:065fbeddc305 1730 switch(*ptr++){
kenjiArai 15:065fbeddc305 1731 case '0' :
kenjiArai 15:065fbeddc305 1732 io_config0();
kenjiArai 15:065fbeddc305 1733 break;
kenjiArai 15:065fbeddc305 1734 case '1' :
kenjiArai 15:065fbeddc305 1735 io_config1();
kenjiArai 15:065fbeddc305 1736 break;
kenjiArai 15:065fbeddc305 1737 case '*' :
kenjiArai 15:065fbeddc305 1738 io_config0();
kenjiArai 15:065fbeddc305 1739 put_rn();
kenjiArai 15:065fbeddc305 1740 io_config1();
kenjiArai 15:065fbeddc305 1741 break;
kenjiArai 15:065fbeddc305 1742 case '?' :
kenjiArai 15:065fbeddc305 1743 default:
kenjiArai 15:065fbeddc305 1744 PRINTF("Enter p0,p1 and p* for all");
kenjiArai 15:065fbeddc305 1745 put_rn();
kenjiArai 15:065fbeddc305 1746 }
kenjiArai 15:065fbeddc305 1747 break;
kenjiArai 15:065fbeddc305 1748 #endif // USE_PORT
kenjiArai 15:065fbeddc305 1749 #if USE_REG_I2C
kenjiArai 15:065fbeddc305 1750 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1751 // I2C register
kenjiArai 15:065fbeddc305 1752 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1753 case 'i' : //
kenjiArai 15:065fbeddc305 1754 put_r();
kenjiArai 15:065fbeddc305 1755 i2c_io_reg();
kenjiArai 15:065fbeddc305 1756 i2c_reg();
kenjiArai 15:065fbeddc305 1757 i2c_freq();
kenjiArai 15:065fbeddc305 1758 break;
kenjiArai 15:065fbeddc305 1759 #endif // USE_REG_I2C
kenjiArai 15:065fbeddc305 1760 #if USE_SYS
kenjiArai 15:065fbeddc305 1761 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1762 // System
kenjiArai 15:065fbeddc305 1763 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1764 case 's' : // System related information
kenjiArai 15:065fbeddc305 1765 switch (*ptr++) {
kenjiArai 15:065fbeddc305 1766 case 'f' : // sc - show system clock frequency
kenjiArai 15:065fbeddc305 1767 get_freq_w_print();
kenjiArai 15:065fbeddc305 1768 break;
kenjiArai 15:065fbeddc305 1769 case 'c' : // sc - show system CPU information
kenjiArai 15:065fbeddc305 1770 cpu_inf();
kenjiArai 15:065fbeddc305 1771 break;
kenjiArai 15:065fbeddc305 1772 case '?' :
kenjiArai 15:065fbeddc305 1773 default:
kenjiArai 15:065fbeddc305 1774 put_r();
kenjiArai 15:065fbeddc305 1775 PRINTF("sc - System CPU information");
kenjiArai 15:065fbeddc305 1776 put_rn();
kenjiArai 15:065fbeddc305 1777 PRINTF("sf - System Clock");
kenjiArai 15:065fbeddc305 1778 put_rn();
kenjiArai 15:065fbeddc305 1779 break;
kenjiArai 15:065fbeddc305 1780 }
kenjiArai 15:065fbeddc305 1781 break;
kenjiArai 15:065fbeddc305 1782 #endif // USE_SYS
kenjiArai 15:065fbeddc305 1783 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1784 // Help
kenjiArai 15:065fbeddc305 1785 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1786 case '?' :
kenjiArai 15:065fbeddc305 1787 put_r();
kenjiArai 15:065fbeddc305 1788 msg_hlp_hw();
kenjiArai 15:065fbeddc305 1789 break;
kenjiArai 15:065fbeddc305 1790 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1791 // Return to main routine
kenjiArai 15:065fbeddc305 1792 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1793 case 'q' : // Quit
kenjiArai 15:065fbeddc305 1794 PRINTF("\rReturn to monitor ");
kenjiArai 15:065fbeddc305 1795 return 0;
kenjiArai 15:065fbeddc305 1796 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1797 // Special command for DEBUG
kenjiArai 15:065fbeddc305 1798 //---------------------------------------------------------------------------------
kenjiArai 15:065fbeddc305 1799 #if DEBUG
kenjiArai 15:065fbeddc305 1800 case 'x' :
kenjiArai 15:065fbeddc305 1801 not_yet_impliment();
kenjiArai 15:065fbeddc305 1802 break;
kenjiArai 15:065fbeddc305 1803 #endif
kenjiArai 15:065fbeddc305 1804 }
kenjiArai 15:065fbeddc305 1805 }
kenjiArai 15:065fbeddc305 1806 }
kenjiArai 18:b3a27f681171 1807
kenjiArai 18:b3a27f681171 1808 #endif