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
Please see https://mbed.org/users/kenjiArai/notebook/mbed-lpc1114fn28-barometer-with-data-logging/#
mon_hw.cpp@16:f164f8912201, 2014-07-03 (annotated)
- 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?
User | Revision | Line number | New 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 | } |