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:
Thu Jul 03 22:01:25 2014 +0000
Revision:
16:f164f8912201
Parent:
15:065fbeddc305
Child:
18:b3a27f681171
Added monitor function and ring buffer function

Who changed what in which revision?

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