Debug tools / show registers, memory and system clock data

Dependencies:   mbed CheckRTC

Target mbed board

LPC1768
LPC1114FN28
ST Nucleo L152RE
ST NUcleo F401RE
ST Nucleo F411RE

Command structure

Top

1 - goto step1 -> no connection all pins
2 - goto step2 -> connects pin_x and pin_y (not impliment yet)
t - Check and set RTC
x - Goto HW monitor
q - Return to main

>1

l - Check LED
b - Check button
s - CPU system info & clock
o - CPU clock output (Bug fix, port_mco1_mco2_set() function. Thanks Topi Makinen on April 25th, 2015)

>x(Hardware level monitor)

m - Entry Memory Mode
m>? -> Aditinal functions can see by ?
r - Entry Register Mode
r>? -> Aditinal functions can see by ?
s - System Clock -> sf, System / CPU information -> sc
q - Quit (back to called routine)
p - Entry Port Mode
p>? -> Aditinal functions can see by ?

Usage

Please modify "mon_hw_config.h" file for your purpose.
Especially LPC114FN28 has small memory, you cannot run your own program together with this program.
You don't need any additional HW. Just connect with PC via terminal software.

CAUTION

Due to several CPU's and short development time, I cannot grantee the quality level and several functions are not available yet.
If you found the bug, please let me know. Thanks in advance.

Committer:
kenjiArai
Date:
Sun Apr 26 09:31:58 2015 +0000
Revision:
4:02980a730cfb
Parent:
2:b96103f9270e
Set output port PA8 & PC9 high speed mode

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kenjiArai 2:b96103f9270e 1 /*
kenjiArai 2:b96103f9270e 2 * mbed Application program for the mbed LPC1768 Board
kenjiArai 2:b96103f9270e 3 * Monitor program Ver.3 for only for LPC1768
kenjiArai 2:b96103f9270e 4 *
kenjiArai 2:b96103f9270e 5 * Copyright (c) 2010-2014 Kenji Arai / JH1PJL
kenjiArai 2:b96103f9270e 6 * http://www.page.sannet.ne.jp/kenjia/index.html
kenjiArai 2:b96103f9270e 7 * http://mbed.org/users/kenjiArai/
kenjiArai 2:b96103f9270e 8 * Started: May 9th, 2010
kenjiArai 2:b96103f9270e 9 * Created: May 15th, 2010
kenjiArai 2:b96103f9270e 10 * release as "monitor_01" http://mbed.org/users/kenjiArai/code/monitor_01/
kenjiArai 2:b96103f9270e 11 * restart: September 22nd, 2014
kenjiArai 2:b96103f9270e 12 * Revised: Nobember 2nd, 2014
kenjiArai 2:b96103f9270e 13 *
kenjiArai 2:b96103f9270e 14 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
kenjiArai 2:b96103f9270e 15 * INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE
kenjiArai 2:b96103f9270e 16 * AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,
kenjiArai 2:b96103f9270e 17 * DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
kenjiArai 2:b96103f9270e 18 * OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
kenjiArai 2:b96103f9270e 19 */
kenjiArai 2:b96103f9270e 20
kenjiArai 2:b96103f9270e 21 #if defined(TARGET_LPC1768)
kenjiArai 2:b96103f9270e 22
kenjiArai 2:b96103f9270e 23 // Include ---------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 24 #include "mbed.h"
kenjiArai 2:b96103f9270e 25 #include "mon_hw_config.h"
kenjiArai 2:b96103f9270e 26 #include "mon_hw_common.h"
kenjiArai 2:b96103f9270e 27
kenjiArai 2:b96103f9270e 28 // Object ----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 29
kenjiArai 2:b96103f9270e 30 // Definition ------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 31 // Define clocks
kenjiArai 2:b96103f9270e 32 #define XTAL (12000000UL) // Oscillator frequency
kenjiArai 2:b96103f9270e 33 #define OSC_CLK ( XTAL) // Main oscillator frequency
kenjiArai 2:b96103f9270e 34 #define RTC_CLK ( 32000UL) // RTC oscillator frequency
kenjiArai 2:b96103f9270e 35 #define IRC_OSC ( 4000000UL) // Internal RC oscillator frequency
kenjiArai 2:b96103f9270e 36
kenjiArai 2:b96103f9270e 37 // RAM -------------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 38 uint32_t SystemFrequency;
kenjiArai 2:b96103f9270e 39
kenjiArai 2:b96103f9270e 40 // ROM / Constant data ---------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 41 #if USE_MEM
kenjiArai 2:b96103f9270e 42 // Memory range data
kenjiArai 2:b96103f9270e 43 const uint32_t mem_range[][2] = { // Memory access range
kenjiArai 2:b96103f9270e 44 { 0x00000000, 0x0007ffff }, // On-chip non-volatile memory // 512KB Flash memory
kenjiArai 2:b96103f9270e 45 { 0x10000000, 0x10007fff }, // On-chip SRAM // 32KB local RAM
kenjiArai 2:b96103f9270e 46 { 0x1fff0000, 0x1fff1fff }, // Boot ROM // 8KB Boot ROM
kenjiArai 2:b96103f9270e 47 { 0x2007c000, 0x2007ffff }, // On-chip SRAM // 16KB AHB SRAM
kenjiArai 2:b96103f9270e 48 { 0x20080000, 0x20083fff } // On-chip SRAM // 16KB AHB SRAM
kenjiArai 2:b96103f9270e 49 };
kenjiArai 2:b96103f9270e 50 #endif // USE_MEM
kenjiArai 2:b96103f9270e 51
kenjiArai 2:b96103f9270e 52 char *const mon_msg = "HW monitor only for mbed LPC1768 created on "__DATE__","__TIME__"";
kenjiArai 2:b96103f9270e 53 char *const xmsg0 = "Not implimented yet";
kenjiArai 2:b96103f9270e 54
kenjiArai 2:b96103f9270e 55 char *const hmsg0 = "m - Entry Memory Mode";
kenjiArai 2:b96103f9270e 56 char *const hmsg1 = "m>? -> Help ";
kenjiArai 2:b96103f9270e 57 char *const hmsg2 = "r - Show PORT,I2C,SPI,UART & other Reg.";
kenjiArai 2:b96103f9270e 58 char *const hmsg3 = "r>? -> Help";
kenjiArai 2:b96103f9270e 59 char *const hmsg4 = "sf - System Clock";
kenjiArai 2:b96103f9270e 60 char *const hmsg5 = "sc - System / CPU information";
kenjiArai 2:b96103f9270e 61 char *const hmsg6 = "x - Special command for Debug";
kenjiArai 2:b96103f9270e 62 char *const hmsg7 = "q - Quit (back to called routine)";
kenjiArai 2:b96103f9270e 63
kenjiArai 2:b96103f9270e 64 // Function prototypes ---------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 65
kenjiArai 2:b96103f9270e 66 //-------------------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 67 // Control Program
kenjiArai 2:b96103f9270e 68 //-------------------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 69 // No function
kenjiArai 2:b96103f9270e 70 static void not_yet_impliment( void )
kenjiArai 2:b96103f9270e 71 {
kenjiArai 2:b96103f9270e 72 PRINTF(xmsg0);
kenjiArai 2:b96103f9270e 73 put_rn();
kenjiArai 2:b96103f9270e 74 }
kenjiArai 2:b96103f9270e 75
kenjiArai 2:b96103f9270e 76 // No function
kenjiArai 2:b96103f9270e 77 #if (USE_MEM==0)||(USE_PORT==0)||(USE_UART==0)||(USE_SPI==0)||(USE_I2C==0)||(USE_SYS==0)
kenjiArai 2:b96103f9270e 78 static void not_select( void )
kenjiArai 2:b96103f9270e 79 {
kenjiArai 2:b96103f9270e 80 PRINTF("Not select the function (refer mon_hw_config.h)");
kenjiArai 2:b96103f9270e 81 put_rn();
kenjiArai 2:b96103f9270e 82 }
kenjiArai 2:b96103f9270e 83 #endif
kenjiArai 2:b96103f9270e 84
kenjiArai 2:b96103f9270e 85 // Help Massage
kenjiArai 2:b96103f9270e 86 void msg_hlp_hw (void)
kenjiArai 2:b96103f9270e 87 {
kenjiArai 2:b96103f9270e 88 PRINTF(mon_msg);
kenjiArai 2:b96103f9270e 89 put_rn();
kenjiArai 2:b96103f9270e 90 PRINTF(hmsg0);
kenjiArai 2:b96103f9270e 91 put_rn();
kenjiArai 2:b96103f9270e 92 PRINTF(hmsg1);
kenjiArai 2:b96103f9270e 93 put_rn();
kenjiArai 2:b96103f9270e 94 PRINTF(hmsg2);
kenjiArai 2:b96103f9270e 95 put_rn();
kenjiArai 2:b96103f9270e 96 PRINTF(hmsg3);
kenjiArai 2:b96103f9270e 97 put_rn();
kenjiArai 2:b96103f9270e 98 PRINTF(hmsg4);
kenjiArai 2:b96103f9270e 99 put_rn();
kenjiArai 2:b96103f9270e 100 PRINTF(hmsg5);
kenjiArai 2:b96103f9270e 101 put_rn();
kenjiArai 2:b96103f9270e 102 PRINTF(hmsg6);
kenjiArai 2:b96103f9270e 103 put_rn();
kenjiArai 2:b96103f9270e 104 PRINTF(hmsg7);
kenjiArai 2:b96103f9270e 105 put_rn();
kenjiArai 2:b96103f9270e 106 }
kenjiArai 2:b96103f9270e 107
kenjiArai 2:b96103f9270e 108 #if USE_MEM
kenjiArai 2:b96103f9270e 109 char *const rmsg0 = "FLASH ";
kenjiArai 2:b96103f9270e 110 char *const rmsg1 = "SRAM ";
kenjiArai 2:b96103f9270e 111 char *const rmsg2 = "Boot ROM ";
kenjiArai 2:b96103f9270e 112 char *const rmsg3 = "AHB SRAM0 ";
kenjiArai 2:b96103f9270e 113 char *const rmsg4 = "AHB SRAM1 ";
kenjiArai 2:b96103f9270e 114
kenjiArai 2:b96103f9270e 115 #include "mon_hw_mem.h"
kenjiArai 2:b96103f9270e 116 #endif // USE_MEM
kenjiArai 2:b96103f9270e 117
kenjiArai 2:b96103f9270e 118 #if USE_PORT
kenjiArai 2:b96103f9270e 119 void io_condition(uint32_t reg0, uint32_t reg1, uint8_t shift)
kenjiArai 2:b96103f9270e 120 {
kenjiArai 2:b96103f9270e 121 PRINTF("IO->");
kenjiArai 2:b96103f9270e 122 if (reg0 & (1UL << shift)) {
kenjiArai 2:b96103f9270e 123 PRINTF("Output=");
kenjiArai 2:b96103f9270e 124 } else {
kenjiArai 2:b96103f9270e 125 PRINTF("Input =");
kenjiArai 2:b96103f9270e 126 }
kenjiArai 2:b96103f9270e 127 if (reg1 & (1UL << shift)) {
kenjiArai 2:b96103f9270e 128 PUTC('1');
kenjiArai 2:b96103f9270e 129 } else {
kenjiArai 2:b96103f9270e 130 PUTC('0');
kenjiArai 2:b96103f9270e 131 }
kenjiArai 2:b96103f9270e 132 }
kenjiArai 2:b96103f9270e 133
kenjiArai 2:b96103f9270e 134 void port_config_left(void)
kenjiArai 2:b96103f9270e 135 {
kenjiArai 2:b96103f9270e 136 uint32_t r0,r1;
kenjiArai 2:b96103f9270e 137
kenjiArai 2:b96103f9270e 138 // p5(P0.9)
kenjiArai 2:b96103f9270e 139 PRINTF("p 5(P0. 9):");
kenjiArai 2:b96103f9270e 140 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 141 r0 = (r0 >> 18) & 0x03;
kenjiArai 2:b96103f9270e 142 switch (r0) {
kenjiArai 2:b96103f9270e 143 case 0:
kenjiArai 2:b96103f9270e 144 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 145 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 146 io_condition(r0, r1, 9);
kenjiArai 2:b96103f9270e 147 break;
kenjiArai 2:b96103f9270e 148 case 1:
kenjiArai 2:b96103f9270e 149 PRINTF("I2STX_SDA");
kenjiArai 2:b96103f9270e 150 break;
kenjiArai 2:b96103f9270e 151 case 2:
kenjiArai 2:b96103f9270e 152 PRINTF("MOSI1");
kenjiArai 2:b96103f9270e 153 break;
kenjiArai 2:b96103f9270e 154 case 3:
kenjiArai 2:b96103f9270e 155 PRINTF("MAT2.3");
kenjiArai 2:b96103f9270e 156 break;
kenjiArai 2:b96103f9270e 157 }
kenjiArai 2:b96103f9270e 158 put_rn();
kenjiArai 2:b96103f9270e 159 // p6(P0.8)
kenjiArai 2:b96103f9270e 160 PRINTF("p 6(P0. 8):");
kenjiArai 2:b96103f9270e 161 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 162 r0 = (r0 >> 16) & 0x03;
kenjiArai 2:b96103f9270e 163 switch (r0) {
kenjiArai 2:b96103f9270e 164 case 0:
kenjiArai 2:b96103f9270e 165 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 166 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 167 io_condition(r0, r1, 8);
kenjiArai 2:b96103f9270e 168 break;
kenjiArai 2:b96103f9270e 169 case 1:
kenjiArai 2:b96103f9270e 170 PRINTF("I2STX_WS");
kenjiArai 2:b96103f9270e 171 break;
kenjiArai 2:b96103f9270e 172 case 2:
kenjiArai 2:b96103f9270e 173 PRINTF("MISO1");
kenjiArai 2:b96103f9270e 174 break;
kenjiArai 2:b96103f9270e 175 case 3:
kenjiArai 2:b96103f9270e 176 PRINTF("MAT2.2");
kenjiArai 2:b96103f9270e 177 break;
kenjiArai 2:b96103f9270e 178 }
kenjiArai 2:b96103f9270e 179 put_rn();
kenjiArai 2:b96103f9270e 180 // p7(P0.7)
kenjiArai 2:b96103f9270e 181 PRINTF("p 7(P0. 7):");
kenjiArai 2:b96103f9270e 182 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 183 r0 = (r0 >> 14) & 0x03;
kenjiArai 2:b96103f9270e 184 switch (r0) {
kenjiArai 2:b96103f9270e 185 case 0:
kenjiArai 2:b96103f9270e 186 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 187 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 188 io_condition(r0, r1, 7);
kenjiArai 2:b96103f9270e 189 break;
kenjiArai 2:b96103f9270e 190 case 1:
kenjiArai 2:b96103f9270e 191 PRINTF("I2STX_CLK");
kenjiArai 2:b96103f9270e 192 break;
kenjiArai 2:b96103f9270e 193 case 2:
kenjiArai 2:b96103f9270e 194 PRINTF("SCK1");
kenjiArai 2:b96103f9270e 195 break;
kenjiArai 2:b96103f9270e 196 case 3:
kenjiArai 2:b96103f9270e 197 PRINTF("MAT2.1");
kenjiArai 2:b96103f9270e 198 break;
kenjiArai 2:b96103f9270e 199 }
kenjiArai 2:b96103f9270e 200 put_rn();
kenjiArai 2:b96103f9270e 201 // p8(P0.6)
kenjiArai 2:b96103f9270e 202 PRINTF("p 8(P0. 6):");
kenjiArai 2:b96103f9270e 203 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 204 r0 = (r0 >> 12) & 0x03;
kenjiArai 2:b96103f9270e 205 switch (r0) {
kenjiArai 2:b96103f9270e 206 case 0:
kenjiArai 2:b96103f9270e 207 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 208 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 209 io_condition(r0, r1, 6);
kenjiArai 2:b96103f9270e 210 break;
kenjiArai 2:b96103f9270e 211 case 1:
kenjiArai 2:b96103f9270e 212 PRINTF("I2SRX_SDA");
kenjiArai 2:b96103f9270e 213 break;
kenjiArai 2:b96103f9270e 214 case 2:
kenjiArai 2:b96103f9270e 215 PRINTF("SSEL1");
kenjiArai 2:b96103f9270e 216 break;
kenjiArai 2:b96103f9270e 217 case 3:
kenjiArai 2:b96103f9270e 218 PRINTF("MAT2.0");
kenjiArai 2:b96103f9270e 219 break;
kenjiArai 2:b96103f9270e 220 }
kenjiArai 2:b96103f9270e 221 put_rn();
kenjiArai 2:b96103f9270e 222 // p9(P0.0)
kenjiArai 2:b96103f9270e 223 PRINTF("p 9(P0. 0):");
kenjiArai 2:b96103f9270e 224 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 225 r0 = (r0 >> 0) & 0x03;
kenjiArai 2:b96103f9270e 226 switch (r0) {
kenjiArai 2:b96103f9270e 227 case 0:
kenjiArai 2:b96103f9270e 228 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 229 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 230 io_condition(r0, r1, 0);
kenjiArai 2:b96103f9270e 231 break;
kenjiArai 2:b96103f9270e 232 case 1:
kenjiArai 2:b96103f9270e 233 PRINTF("RD1");
kenjiArai 2:b96103f9270e 234 break;
kenjiArai 2:b96103f9270e 235 case 2:
kenjiArai 2:b96103f9270e 236 PRINTF("TXD3");
kenjiArai 2:b96103f9270e 237 break;
kenjiArai 2:b96103f9270e 238 case 3:
kenjiArai 2:b96103f9270e 239 PRINTF("SDA1");
kenjiArai 2:b96103f9270e 240 break;
kenjiArai 2:b96103f9270e 241 }
kenjiArai 2:b96103f9270e 242 put_rn();
kenjiArai 2:b96103f9270e 243 // p10(P0.1)
kenjiArai 2:b96103f9270e 244 PRINTF("p10(P0. 1):");
kenjiArai 2:b96103f9270e 245 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 246 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 247 switch (r0) {
kenjiArai 2:b96103f9270e 248 case 0:
kenjiArai 2:b96103f9270e 249 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 250 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 251 io_condition(r0, r1, 1);
kenjiArai 2:b96103f9270e 252 break;
kenjiArai 2:b96103f9270e 253 case 1:
kenjiArai 2:b96103f9270e 254 PRINTF("TD1");
kenjiArai 2:b96103f9270e 255 break;
kenjiArai 2:b96103f9270e 256 case 2:
kenjiArai 2:b96103f9270e 257 PRINTF("RXD3");
kenjiArai 2:b96103f9270e 258 break;
kenjiArai 2:b96103f9270e 259 case 3:
kenjiArai 2:b96103f9270e 260 PRINTF("SCL1");
kenjiArai 2:b96103f9270e 261 break;
kenjiArai 2:b96103f9270e 262 }
kenjiArai 2:b96103f9270e 263 put_rn();
kenjiArai 2:b96103f9270e 264 // p11(P0.18)
kenjiArai 2:b96103f9270e 265 PRINTF("p11(P0.18):");
kenjiArai 2:b96103f9270e 266 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 267 r0 = (r0 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 268 switch (r0) {
kenjiArai 2:b96103f9270e 269 case 0:
kenjiArai 2:b96103f9270e 270 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 271 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 272 io_condition(r0, r1, 18);
kenjiArai 2:b96103f9270e 273 break;
kenjiArai 2:b96103f9270e 274 case 1:
kenjiArai 2:b96103f9270e 275 PRINTF("DCD1");
kenjiArai 2:b96103f9270e 276 break;
kenjiArai 2:b96103f9270e 277 case 2:
kenjiArai 2:b96103f9270e 278 PRINTF("MOSI0");
kenjiArai 2:b96103f9270e 279 break;
kenjiArai 2:b96103f9270e 280 case 3:
kenjiArai 2:b96103f9270e 281 PRINTF("MOSI");
kenjiArai 2:b96103f9270e 282 break;
kenjiArai 2:b96103f9270e 283 }
kenjiArai 2:b96103f9270e 284 put_rn();
kenjiArai 2:b96103f9270e 285 // p12(P0.17)
kenjiArai 2:b96103f9270e 286 PRINTF("p12(P0.17):");
kenjiArai 2:b96103f9270e 287 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 288 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 289 switch (r0) {
kenjiArai 2:b96103f9270e 290 case 0:
kenjiArai 2:b96103f9270e 291 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 292 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 293 io_condition(r0, r1, 17);
kenjiArai 2:b96103f9270e 294 break;
kenjiArai 2:b96103f9270e 295 case 1:
kenjiArai 2:b96103f9270e 296 PRINTF("CTS1");
kenjiArai 2:b96103f9270e 297 break;
kenjiArai 2:b96103f9270e 298 case 2:
kenjiArai 2:b96103f9270e 299 PRINTF("MISO0");
kenjiArai 2:b96103f9270e 300 break;
kenjiArai 2:b96103f9270e 301 case 3:
kenjiArai 2:b96103f9270e 302 PRINTF("MISO");
kenjiArai 2:b96103f9270e 303 break;
kenjiArai 2:b96103f9270e 304 }
kenjiArai 2:b96103f9270e 305 put_rn();
kenjiArai 2:b96103f9270e 306 // p13(P0.15)
kenjiArai 2:b96103f9270e 307 PRINTF("p13(P0.15):");
kenjiArai 2:b96103f9270e 308 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 309 r0 = (r0 >> 30) & 0x03;
kenjiArai 2:b96103f9270e 310 switch (r0) {
kenjiArai 2:b96103f9270e 311 case 0:
kenjiArai 2:b96103f9270e 312 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 313 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 314 io_condition(r0, r1, 15);
kenjiArai 2:b96103f9270e 315 break;
kenjiArai 2:b96103f9270e 316 case 1:
kenjiArai 2:b96103f9270e 317 PRINTF("TXD1");
kenjiArai 2:b96103f9270e 318 break;
kenjiArai 2:b96103f9270e 319 case 2:
kenjiArai 2:b96103f9270e 320 PRINTF("SCK0");
kenjiArai 2:b96103f9270e 321 break;
kenjiArai 2:b96103f9270e 322 case 3:
kenjiArai 2:b96103f9270e 323 PRINTF("SCK");
kenjiArai 2:b96103f9270e 324 break;
kenjiArai 2:b96103f9270e 325 }
kenjiArai 2:b96103f9270e 326 put_rn();
kenjiArai 2:b96103f9270e 327 // p14(P0.16)
kenjiArai 2:b96103f9270e 328 PRINTF("p14(P0.16):");
kenjiArai 2:b96103f9270e 329 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 330 r0 = (r0 >> 0) & 0x03;
kenjiArai 2:b96103f9270e 331 switch (r0) {
kenjiArai 2:b96103f9270e 332 case 0:
kenjiArai 2:b96103f9270e 333 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 334 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 335 io_condition(r0, r1, 16);
kenjiArai 2:b96103f9270e 336 break;
kenjiArai 2:b96103f9270e 337 case 1:
kenjiArai 2:b96103f9270e 338 PRINTF("RXD1");
kenjiArai 2:b96103f9270e 339 break;
kenjiArai 2:b96103f9270e 340 case 2:
kenjiArai 2:b96103f9270e 341 PRINTF("SSEL0");
kenjiArai 2:b96103f9270e 342 break;
kenjiArai 2:b96103f9270e 343 case 3:
kenjiArai 2:b96103f9270e 344 PRINTF("SSEL");
kenjiArai 2:b96103f9270e 345 break;
kenjiArai 2:b96103f9270e 346 }
kenjiArai 2:b96103f9270e 347 put_rn();
kenjiArai 2:b96103f9270e 348 // p15(P0.23)
kenjiArai 2:b96103f9270e 349 PRINTF("p15(P0.23):");
kenjiArai 2:b96103f9270e 350 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 351 r0 = (r0 >> 14) & 0x03;
kenjiArai 2:b96103f9270e 352 switch (r0) {
kenjiArai 2:b96103f9270e 353 case 0:
kenjiArai 2:b96103f9270e 354 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 355 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 356 io_condition(r0, r1, 23);
kenjiArai 2:b96103f9270e 357 break;
kenjiArai 2:b96103f9270e 358 case 1:
kenjiArai 2:b96103f9270e 359 PRINTF("AD0.0");
kenjiArai 2:b96103f9270e 360 break;
kenjiArai 2:b96103f9270e 361 case 2:
kenjiArai 2:b96103f9270e 362 PRINTF("I2SRX_CLK");
kenjiArai 2:b96103f9270e 363 break;
kenjiArai 2:b96103f9270e 364 case 3:
kenjiArai 2:b96103f9270e 365 PRINTF("CAP3.0");
kenjiArai 2:b96103f9270e 366 break;
kenjiArai 2:b96103f9270e 367 }
kenjiArai 2:b96103f9270e 368 put_rn();
kenjiArai 2:b96103f9270e 369 // p16(P0.24)
kenjiArai 2:b96103f9270e 370 PRINTF("p16(P0.24):");
kenjiArai 2:b96103f9270e 371 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 372 r0 = (r0 >> 16) & 0x03;
kenjiArai 2:b96103f9270e 373 switch (r0) {
kenjiArai 2:b96103f9270e 374 case 0:
kenjiArai 2:b96103f9270e 375 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 376 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 377 io_condition(r0, r1, 24);
kenjiArai 2:b96103f9270e 378 break;
kenjiArai 2:b96103f9270e 379 case 1:
kenjiArai 2:b96103f9270e 380 PRINTF("AD0.1");
kenjiArai 2:b96103f9270e 381 break;
kenjiArai 2:b96103f9270e 382 case 2:
kenjiArai 2:b96103f9270e 383 PRINTF("I2SRX_WS");
kenjiArai 2:b96103f9270e 384 break;
kenjiArai 2:b96103f9270e 385 case 3:
kenjiArai 2:b96103f9270e 386 PRINTF("CAP3.1");
kenjiArai 2:b96103f9270e 387 break;
kenjiArai 2:b96103f9270e 388 }
kenjiArai 2:b96103f9270e 389 put_rn();
kenjiArai 2:b96103f9270e 390 // p17(P0.25)
kenjiArai 2:b96103f9270e 391 PRINTF("p17(P0.25):");
kenjiArai 2:b96103f9270e 392 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 393 r0 = (r0 >> 18) & 0x03;
kenjiArai 2:b96103f9270e 394 switch (r0) {
kenjiArai 2:b96103f9270e 395 case 0:
kenjiArai 2:b96103f9270e 396 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 397 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 398 io_condition(r0, r1, 25);
kenjiArai 2:b96103f9270e 399 break;
kenjiArai 2:b96103f9270e 400 case 1:
kenjiArai 2:b96103f9270e 401 PRINTF("AD0.2");
kenjiArai 2:b96103f9270e 402 break;
kenjiArai 2:b96103f9270e 403 case 2:
kenjiArai 2:b96103f9270e 404 PRINTF("I2SRX_SDA");
kenjiArai 2:b96103f9270e 405 break;
kenjiArai 2:b96103f9270e 406 case 3:
kenjiArai 2:b96103f9270e 407 PRINTF("TXD3");
kenjiArai 2:b96103f9270e 408 break;
kenjiArai 2:b96103f9270e 409 }
kenjiArai 2:b96103f9270e 410 put_rn();
kenjiArai 2:b96103f9270e 411 // p18(P0.26)
kenjiArai 2:b96103f9270e 412 PRINTF("p18(P0.26):");
kenjiArai 2:b96103f9270e 413 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 414 r0 = (r0 >> 20) & 0x03;
kenjiArai 2:b96103f9270e 415 switch (r0) {
kenjiArai 2:b96103f9270e 416 case 0:
kenjiArai 2:b96103f9270e 417 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 418 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 419 io_condition(r0, r1, 26);
kenjiArai 2:b96103f9270e 420 break;
kenjiArai 2:b96103f9270e 421 case 1:
kenjiArai 2:b96103f9270e 422 PRINTF("AD0.3");
kenjiArai 2:b96103f9270e 423 break;
kenjiArai 2:b96103f9270e 424 case 2:
kenjiArai 2:b96103f9270e 425 PRINTF("AOUT");
kenjiArai 2:b96103f9270e 426 break;
kenjiArai 2:b96103f9270e 427 case 3:
kenjiArai 2:b96103f9270e 428 PRINTF("RXD3");
kenjiArai 2:b96103f9270e 429 break;
kenjiArai 2:b96103f9270e 430 }
kenjiArai 2:b96103f9270e 431 put_rn();
kenjiArai 2:b96103f9270e 432 // p19(P1.30)
kenjiArai 2:b96103f9270e 433 PRINTF("p19(P1.30):");
kenjiArai 2:b96103f9270e 434 r0 = LPC_PINCON->PINSEL3;
kenjiArai 2:b96103f9270e 435 r0 = (r0 >> 28) & 0x03;
kenjiArai 2:b96103f9270e 436 switch (r0) {
kenjiArai 2:b96103f9270e 437 case 0:
kenjiArai 2:b96103f9270e 438 r0 = LPC_GPIO1->FIODIR;
kenjiArai 2:b96103f9270e 439 r1 = LPC_GPIO1->FIOPIN;
kenjiArai 2:b96103f9270e 440 io_condition(r0, r1, 30);
kenjiArai 2:b96103f9270e 441 break;
kenjiArai 2:b96103f9270e 442 case 1:
kenjiArai 2:b96103f9270e 443 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 444 break;
kenjiArai 2:b96103f9270e 445 case 2:
kenjiArai 2:b96103f9270e 446 PRINTF("VBUS");
kenjiArai 2:b96103f9270e 447 break;
kenjiArai 2:b96103f9270e 448 case 3:
kenjiArai 2:b96103f9270e 449 PRINTF("AD0.4");
kenjiArai 2:b96103f9270e 450 break;
kenjiArai 2:b96103f9270e 451 }
kenjiArai 2:b96103f9270e 452 put_rn();
kenjiArai 2:b96103f9270e 453 // p20(P1.31)
kenjiArai 2:b96103f9270e 454 PRINTF("p20(P1.31):");
kenjiArai 2:b96103f9270e 455 r0 = LPC_PINCON->PINSEL3;
kenjiArai 2:b96103f9270e 456 r0 = (r0 >> 30) & 0x03;
kenjiArai 2:b96103f9270e 457 switch (r0) {
kenjiArai 2:b96103f9270e 458 case 0:
kenjiArai 2:b96103f9270e 459 r0 = LPC_GPIO1->FIODIR;
kenjiArai 2:b96103f9270e 460 r1 = LPC_GPIO1->FIOPIN;
kenjiArai 2:b96103f9270e 461 io_condition(r0, r1, 31);
kenjiArai 2:b96103f9270e 462 break;
kenjiArai 2:b96103f9270e 463 case 1:
kenjiArai 2:b96103f9270e 464 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 465 break;
kenjiArai 2:b96103f9270e 466 case 2:
kenjiArai 2:b96103f9270e 467 PRINTF("SCK1");
kenjiArai 2:b96103f9270e 468 break;
kenjiArai 2:b96103f9270e 469 case 3:
kenjiArai 2:b96103f9270e 470 PRINTF("AD0.5");
kenjiArai 2:b96103f9270e 471 break;
kenjiArai 2:b96103f9270e 472 }
kenjiArai 2:b96103f9270e 473 put_rn();
kenjiArai 2:b96103f9270e 474 }
kenjiArai 2:b96103f9270e 475
kenjiArai 2:b96103f9270e 476 void port_config_right(void)
kenjiArai 2:b96103f9270e 477 {
kenjiArai 2:b96103f9270e 478 uint32_t r0, r1;
kenjiArai 2:b96103f9270e 479
kenjiArai 2:b96103f9270e 480 // p30(P0.4)
kenjiArai 2:b96103f9270e 481 PRINTF("p30(P0. 4):");
kenjiArai 2:b96103f9270e 482 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 483 r0 = (r0 >> 8) & 0x03;
kenjiArai 2:b96103f9270e 484 switch (r0) {
kenjiArai 2:b96103f9270e 485 case 0:
kenjiArai 2:b96103f9270e 486 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 487 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 488 io_condition(r0, r1, 4);
kenjiArai 2:b96103f9270e 489 break;
kenjiArai 2:b96103f9270e 490 case 1:
kenjiArai 2:b96103f9270e 491 PRINTF("I2SRX_CLK");
kenjiArai 2:b96103f9270e 492 break;
kenjiArai 2:b96103f9270e 493 case 2:
kenjiArai 2:b96103f9270e 494 PRINTF("RD2");
kenjiArai 2:b96103f9270e 495 break;
kenjiArai 2:b96103f9270e 496 case 3:
kenjiArai 2:b96103f9270e 497 PRINTF("CAP2.0");
kenjiArai 2:b96103f9270e 498 break;
kenjiArai 2:b96103f9270e 499 }
kenjiArai 2:b96103f9270e 500 put_rn();
kenjiArai 2:b96103f9270e 501 // p29(P0.5)
kenjiArai 2:b96103f9270e 502 PRINTF("p29(P0. 5):");
kenjiArai 2:b96103f9270e 503 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 504 r0 = (r0 >> 10) & 0x03;
kenjiArai 2:b96103f9270e 505 switch (r0) {
kenjiArai 2:b96103f9270e 506 case 0:
kenjiArai 2:b96103f9270e 507 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 508 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 509 io_condition(r0, r1, 5);
kenjiArai 2:b96103f9270e 510 break;
kenjiArai 2:b96103f9270e 511 case 1:
kenjiArai 2:b96103f9270e 512 PRINTF("I2SRX_WS");
kenjiArai 2:b96103f9270e 513 break;
kenjiArai 2:b96103f9270e 514 case 2:
kenjiArai 2:b96103f9270e 515 PRINTF("TD2");
kenjiArai 2:b96103f9270e 516 break;
kenjiArai 2:b96103f9270e 517 case 3:
kenjiArai 2:b96103f9270e 518 PRINTF("CAP2.1");
kenjiArai 2:b96103f9270e 519 break;
kenjiArai 2:b96103f9270e 520 }
kenjiArai 2:b96103f9270e 521 put_rn();
kenjiArai 2:b96103f9270e 522 // p28(P0.10)
kenjiArai 2:b96103f9270e 523 PRINTF("p28(P0.10):");
kenjiArai 2:b96103f9270e 524 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 525 r0 = (r0 >> 20) & 0x03;
kenjiArai 2:b96103f9270e 526 switch (r0) {
kenjiArai 2:b96103f9270e 527 case 0:
kenjiArai 2:b96103f9270e 528 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 529 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 530 io_condition(r0, r1, 10);
kenjiArai 2:b96103f9270e 531 break;
kenjiArai 2:b96103f9270e 532 case 1:
kenjiArai 2:b96103f9270e 533 PRINTF("TXD2");
kenjiArai 2:b96103f9270e 534 break;
kenjiArai 2:b96103f9270e 535 case 2:
kenjiArai 2:b96103f9270e 536 PRINTF("SDA2");
kenjiArai 2:b96103f9270e 537 break;
kenjiArai 2:b96103f9270e 538 case 3:
kenjiArai 2:b96103f9270e 539 PRINTF("MAT3.0");
kenjiArai 2:b96103f9270e 540 break;
kenjiArai 2:b96103f9270e 541 }
kenjiArai 2:b96103f9270e 542 put_rn();
kenjiArai 2:b96103f9270e 543 // p27(P0.11)
kenjiArai 2:b96103f9270e 544 PRINTF("p27(P0.11):");
kenjiArai 2:b96103f9270e 545 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 546 r0 = (r0 >> 22) & 0x03;
kenjiArai 2:b96103f9270e 547 switch (r0) {
kenjiArai 2:b96103f9270e 548 case 0:
kenjiArai 2:b96103f9270e 549 r0 = LPC_GPIO0->FIODIR;
kenjiArai 2:b96103f9270e 550 r1 = LPC_GPIO0->FIOPIN;
kenjiArai 2:b96103f9270e 551 io_condition(r0, r1, 11);
kenjiArai 2:b96103f9270e 552 break;
kenjiArai 2:b96103f9270e 553 case 1:
kenjiArai 2:b96103f9270e 554 PRINTF("RXD2");
kenjiArai 2:b96103f9270e 555 break;
kenjiArai 2:b96103f9270e 556 case 2:
kenjiArai 2:b96103f9270e 557 PRINTF("SCL2");
kenjiArai 2:b96103f9270e 558 break;
kenjiArai 2:b96103f9270e 559 case 3:
kenjiArai 2:b96103f9270e 560 PRINTF("MAT3.1");
kenjiArai 2:b96103f9270e 561 break;
kenjiArai 2:b96103f9270e 562 }
kenjiArai 2:b96103f9270e 563 put_rn();
kenjiArai 2:b96103f9270e 564 // p26(P2.0)
kenjiArai 2:b96103f9270e 565 PRINTF("p26(P2. 0):");
kenjiArai 2:b96103f9270e 566 r0 = LPC_PINCON->PINSEL4;
kenjiArai 2:b96103f9270e 567 r0 = (r0 >> 0) & 0x03;
kenjiArai 2:b96103f9270e 568 switch (r0) {
kenjiArai 2:b96103f9270e 569 case 0:
kenjiArai 2:b96103f9270e 570 r0 = LPC_GPIO2->FIODIR;
kenjiArai 2:b96103f9270e 571 r1 = LPC_GPIO2->FIOPIN;
kenjiArai 2:b96103f9270e 572 io_condition(r0, r1, 0);
kenjiArai 2:b96103f9270e 573 break;
kenjiArai 2:b96103f9270e 574 case 1:
kenjiArai 2:b96103f9270e 575 PRINTF("PWM1.1");
kenjiArai 2:b96103f9270e 576 break;
kenjiArai 2:b96103f9270e 577 case 2:
kenjiArai 2:b96103f9270e 578 PRINTF("TXD1");
kenjiArai 2:b96103f9270e 579 break;
kenjiArai 2:b96103f9270e 580 case 3:
kenjiArai 2:b96103f9270e 581 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 582 break;
kenjiArai 2:b96103f9270e 583 }
kenjiArai 2:b96103f9270e 584 put_rn();
kenjiArai 2:b96103f9270e 585 // p25(P2.1)
kenjiArai 2:b96103f9270e 586 PRINTF("p25(P2. 1):");
kenjiArai 2:b96103f9270e 587 r0 = LPC_PINCON->PINSEL4;
kenjiArai 2:b96103f9270e 588 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 589 switch (r0) {
kenjiArai 2:b96103f9270e 590 case 0:
kenjiArai 2:b96103f9270e 591 r0 = LPC_GPIO2->FIODIR;
kenjiArai 2:b96103f9270e 592 r1 = LPC_GPIO2->FIOPIN;
kenjiArai 2:b96103f9270e 593 io_condition(r0, r1, 1);
kenjiArai 2:b96103f9270e 594 break;
kenjiArai 2:b96103f9270e 595 case 1:
kenjiArai 2:b96103f9270e 596 PRINTF("PWM1.2");
kenjiArai 2:b96103f9270e 597 break;
kenjiArai 2:b96103f9270e 598 case 2:
kenjiArai 2:b96103f9270e 599 PRINTF("RXD1");
kenjiArai 2:b96103f9270e 600 break;
kenjiArai 2:b96103f9270e 601 case 3:
kenjiArai 2:b96103f9270e 602 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 603 break;
kenjiArai 2:b96103f9270e 604 }
kenjiArai 2:b96103f9270e 605 put_rn();
kenjiArai 2:b96103f9270e 606 // p24(P2.2)
kenjiArai 2:b96103f9270e 607 PRINTF("p24(P2. 2):");
kenjiArai 2:b96103f9270e 608 r0 = LPC_PINCON->PINSEL4;
kenjiArai 2:b96103f9270e 609 r0 = (r0 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 610 switch (r0) {
kenjiArai 2:b96103f9270e 611 case 0:
kenjiArai 2:b96103f9270e 612 r0 = LPC_GPIO2->FIODIR;
kenjiArai 2:b96103f9270e 613 r1 = LPC_GPIO2->FIOPIN;
kenjiArai 2:b96103f9270e 614 io_condition(r0, r1, 2);
kenjiArai 2:b96103f9270e 615 break;
kenjiArai 2:b96103f9270e 616 case 1:
kenjiArai 2:b96103f9270e 617 PRINTF("PWM1.3");
kenjiArai 2:b96103f9270e 618 break;
kenjiArai 2:b96103f9270e 619 case 2:
kenjiArai 2:b96103f9270e 620 PRINTF("CTS1");
kenjiArai 2:b96103f9270e 621 break;
kenjiArai 2:b96103f9270e 622 case 3:
kenjiArai 2:b96103f9270e 623 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 624 break;
kenjiArai 2:b96103f9270e 625 }
kenjiArai 2:b96103f9270e 626 put_rn();
kenjiArai 2:b96103f9270e 627 // p23(P2.3)
kenjiArai 2:b96103f9270e 628 PRINTF("p23(P2. 3):");
kenjiArai 2:b96103f9270e 629 r0 = LPC_PINCON->PINSEL4;
kenjiArai 2:b96103f9270e 630 r0 = (r0 >> 6) & 0x03;
kenjiArai 2:b96103f9270e 631 switch (r0) {
kenjiArai 2:b96103f9270e 632 case 0:
kenjiArai 2:b96103f9270e 633 r0 = LPC_GPIO2->FIODIR;
kenjiArai 2:b96103f9270e 634 r1 = LPC_GPIO2->FIOPIN;
kenjiArai 2:b96103f9270e 635 io_condition(r0, r1, 3);
kenjiArai 2:b96103f9270e 636 break;
kenjiArai 2:b96103f9270e 637 case 1:
kenjiArai 2:b96103f9270e 638 PRINTF("PWM1.4");
kenjiArai 2:b96103f9270e 639 break;
kenjiArai 2:b96103f9270e 640 case 2:
kenjiArai 2:b96103f9270e 641 PRINTF("DCD1");
kenjiArai 2:b96103f9270e 642 break;
kenjiArai 2:b96103f9270e 643 case 3:
kenjiArai 2:b96103f9270e 644 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 645 break;
kenjiArai 2:b96103f9270e 646 }
kenjiArai 2:b96103f9270e 647 put_rn();
kenjiArai 2:b96103f9270e 648 // p22(P2.4)
kenjiArai 2:b96103f9270e 649 PRINTF("p22(P2. 4):");
kenjiArai 2:b96103f9270e 650 r0 = LPC_PINCON->PINSEL4;
kenjiArai 2:b96103f9270e 651 r0 = (r0 >> 8) & 0x03;
kenjiArai 2:b96103f9270e 652 switch (r0) {
kenjiArai 2:b96103f9270e 653 case 0:
kenjiArai 2:b96103f9270e 654 r0 = LPC_GPIO2->FIODIR;
kenjiArai 2:b96103f9270e 655 r1 = LPC_GPIO2->FIOPIN;
kenjiArai 2:b96103f9270e 656 io_condition(r0, r1, 4);
kenjiArai 2:b96103f9270e 657 break;
kenjiArai 2:b96103f9270e 658 case 1:
kenjiArai 2:b96103f9270e 659 PRINTF("PWM1.5");
kenjiArai 2:b96103f9270e 660 break;
kenjiArai 2:b96103f9270e 661 case 2:
kenjiArai 2:b96103f9270e 662 PRINTF("DSR1");
kenjiArai 2:b96103f9270e 663 break;
kenjiArai 2:b96103f9270e 664 case 3:
kenjiArai 2:b96103f9270e 665 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 666 break;
kenjiArai 2:b96103f9270e 667 }
kenjiArai 2:b96103f9270e 668 put_rn();
kenjiArai 2:b96103f9270e 669 // p21(P2.5)
kenjiArai 2:b96103f9270e 670 PRINTF("p21(P2. 5):");
kenjiArai 2:b96103f9270e 671 r0 = LPC_PINCON->PINSEL4;
kenjiArai 2:b96103f9270e 672 r0 = (r0 >> 10) & 0x03;
kenjiArai 2:b96103f9270e 673 switch (r0) {
kenjiArai 2:b96103f9270e 674 case 0:
kenjiArai 2:b96103f9270e 675 r0 = LPC_GPIO2->FIODIR;
kenjiArai 2:b96103f9270e 676 r1 = LPC_GPIO2->FIOPIN;
kenjiArai 2:b96103f9270e 677 io_condition(r0, r1, 5);
kenjiArai 2:b96103f9270e 678 break;
kenjiArai 2:b96103f9270e 679 case 1:
kenjiArai 2:b96103f9270e 680 PRINTF("PWM1.6");
kenjiArai 2:b96103f9270e 681 break;
kenjiArai 2:b96103f9270e 682 case 2:
kenjiArai 2:b96103f9270e 683 PRINTF("DTR1");
kenjiArai 2:b96103f9270e 684 break;
kenjiArai 2:b96103f9270e 685 case 3:
kenjiArai 2:b96103f9270e 686 PRINTF("Reserved");
kenjiArai 2:b96103f9270e 687 break;
kenjiArai 2:b96103f9270e 688 }
kenjiArai 2:b96103f9270e 689 put_rn();
kenjiArai 2:b96103f9270e 690 }
kenjiArai 2:b96103f9270e 691 #endif // USE_PORT
kenjiArai 2:b96103f9270e 692
kenjiArai 2:b96103f9270e 693 //#if USE_SYS
kenjiArai 2:b96103f9270e 694 void cpu_inf ( void )
kenjiArai 2:b96103f9270e 695 {
kenjiArai 2:b96103f9270e 696 unsigned long m1, m2;
kenjiArai 2:b96103f9270e 697
kenjiArai 2:b96103f9270e 698 m1 = SCB->CPUID;
kenjiArai 2:b96103f9270e 699 m2 = ( m1 >> 24 );
kenjiArai 2:b96103f9270e 700 if ( m2 == 0x41 ) {
kenjiArai 2:b96103f9270e 701 put_r();
kenjiArai 2:b96103f9270e 702 PRINTF("CPU = ARM ");
kenjiArai 2:b96103f9270e 703 } else {
kenjiArai 2:b96103f9270e 704 put_r();
kenjiArai 2:b96103f9270e 705 PRINTF("CPU = NOT ARM ");
kenjiArai 2:b96103f9270e 706 }
kenjiArai 2:b96103f9270e 707 m2 = ( m1 >> 4 ) & 0xfff;
kenjiArai 2:b96103f9270e 708 if ( m2 == 0xc23 ) {
kenjiArai 2:b96103f9270e 709 PRINTF("Cortex-M3");
kenjiArai 2:b96103f9270e 710 put_rn();
kenjiArai 2:b96103f9270e 711 } else {
kenjiArai 2:b96103f9270e 712 PRINTF("NOT Cortex-M3");
kenjiArai 2:b96103f9270e 713 put_rn();
kenjiArai 2:b96103f9270e 714 }
kenjiArai 2:b96103f9270e 715 m2 = ( m1 >> 20 ) & 0x0f;
kenjiArai 2:b96103f9270e 716 PRINTF("Variant:%x", m2);
kenjiArai 2:b96103f9270e 717 put_rn();
kenjiArai 2:b96103f9270e 718 m2 = m1 & 0x7;
kenjiArai 2:b96103f9270e 719 PRINTF("Revision:%x", m2);
kenjiArai 2:b96103f9270e 720 put_rn();
kenjiArai 2:b96103f9270e 721 }
kenjiArai 2:b96103f9270e 722 //#endif // USE_SYS
kenjiArai 2:b96103f9270e 723
kenjiArai 2:b96103f9270e 724 // Calculate CPU System Clock Frequency
kenjiArai 2:b96103f9270e 725 void get_freq ( int pr )
kenjiArai 2:b96103f9270e 726 {
kenjiArai 2:b96103f9270e 727 if(pr) {
kenjiArai 2:b96103f9270e 728 put_r();
kenjiArai 2:b96103f9270e 729 PRINTF("System Clock = %dHz",SystemFrequency );
kenjiArai 2:b96103f9270e 730 put_rn();
kenjiArai 2:b96103f9270e 731 }
kenjiArai 2:b96103f9270e 732 if (((LPC_SC->PLL0STAT >> 24) & 3) == 3) {/* If PLL0 enabled and connected */
kenjiArai 2:b96103f9270e 733 if(pr) {
kenjiArai 2:b96103f9270e 734 PRINTF("PLL0 enabled");
kenjiArai 2:b96103f9270e 735 put_rn();
kenjiArai 2:b96103f9270e 736 }
kenjiArai 2:b96103f9270e 737 switch (LPC_SC->CLKSRCSEL & 0x03) {
kenjiArai 2:b96103f9270e 738 case 0: /* Internal RC oscillator => PLL0 */
kenjiArai 2:b96103f9270e 739 case 3: /* Reserved, default to Internal RC */
kenjiArai 2:b96103f9270e 740 if(pr) {
kenjiArai 2:b96103f9270e 741 PRINTF("Internal RC Oscillator");
kenjiArai 2:b96103f9270e 742 put_rn();
kenjiArai 2:b96103f9270e 743 }
kenjiArai 2:b96103f9270e 744 SystemFrequency = (IRC_OSC *
kenjiArai 2:b96103f9270e 745 (((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1))) /
kenjiArai 2:b96103f9270e 746 (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)) /
kenjiArai 2:b96103f9270e 747 ((LPC_SC->CCLKCFG & 0xFF)+ 1));
kenjiArai 2:b96103f9270e 748 break;
kenjiArai 2:b96103f9270e 749 case 1: /* Main oscillator => PLL0 */
kenjiArai 2:b96103f9270e 750 if(pr) {
kenjiArai 2:b96103f9270e 751 PRINTF("Xtal Osc Clock = %dHz",XTAL );
kenjiArai 2:b96103f9270e 752 put_rn();
kenjiArai 2:b96103f9270e 753 }
kenjiArai 2:b96103f9270e 754 SystemFrequency = (OSC_CLK *
kenjiArai 2:b96103f9270e 755 (((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1))) /
kenjiArai 2:b96103f9270e 756 (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)) /
kenjiArai 2:b96103f9270e 757 ((LPC_SC->CCLKCFG & 0xFF)+ 1));
kenjiArai 2:b96103f9270e 758 break;
kenjiArai 2:b96103f9270e 759 case 2: /* RTC oscillator => PLL0 */
kenjiArai 2:b96103f9270e 760 if(pr) {
kenjiArai 2:b96103f9270e 761 PRINTF("RTC Xtal Oscillator f = %dHz", RTC_CLK );
kenjiArai 2:b96103f9270e 762 put_rn();
kenjiArai 2:b96103f9270e 763 }
kenjiArai 2:b96103f9270e 764 SystemFrequency = (RTC_CLK *
kenjiArai 2:b96103f9270e 765 (((2 * ((LPC_SC->PLL0STAT & 0x7FFF) + 1))) /
kenjiArai 2:b96103f9270e 766 (((LPC_SC->PLL0STAT >> 16) & 0xFF) + 1)) /
kenjiArai 2:b96103f9270e 767 ((LPC_SC->CCLKCFG & 0xFF)+ 1));
kenjiArai 2:b96103f9270e 768 break;
kenjiArai 2:b96103f9270e 769 }
kenjiArai 2:b96103f9270e 770 } else {
kenjiArai 2:b96103f9270e 771 if(pr) {
kenjiArai 2:b96103f9270e 772 PRINTF("PLL0 disabled");
kenjiArai 2:b96103f9270e 773 }
kenjiArai 2:b96103f9270e 774 switch (LPC_SC->CLKSRCSEL & 0x03) {
kenjiArai 2:b96103f9270e 775 case 0: /* Internal RC oscillator => PLL0 */
kenjiArai 2:b96103f9270e 776 case 3: /* Reserved, default to Internal RC */
kenjiArai 2:b96103f9270e 777 if(pr) {
kenjiArai 2:b96103f9270e 778 PRINTF("Internal RC Oscillator");
kenjiArai 2:b96103f9270e 779 put_rn();
kenjiArai 2:b96103f9270e 780 }
kenjiArai 2:b96103f9270e 781 SystemFrequency = IRC_OSC / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
kenjiArai 2:b96103f9270e 782 break;
kenjiArai 2:b96103f9270e 783 case 1: /* Main oscillator => PLL0 */
kenjiArai 2:b96103f9270e 784 if(pr) {
kenjiArai 2:b96103f9270e 785 PRINTF("Xtal Osc Clock = %dHz",XTAL );
kenjiArai 2:b96103f9270e 786 put_rn();
kenjiArai 2:b96103f9270e 787 }
kenjiArai 2:b96103f9270e 788 SystemFrequency = OSC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
kenjiArai 2:b96103f9270e 789 break;
kenjiArai 2:b96103f9270e 790 case 2: /* RTC oscillator => PLL0 */
kenjiArai 2:b96103f9270e 791 if(pr) {
kenjiArai 2:b96103f9270e 792 PRINTF("RTC Xtal Oscillator f = %dHz", RTC_CLK );
kenjiArai 2:b96103f9270e 793 put_rn();
kenjiArai 2:b96103f9270e 794 }
kenjiArai 2:b96103f9270e 795 SystemFrequency = RTC_CLK / ((LPC_SC->CCLKCFG & 0xFF)+ 1);
kenjiArai 2:b96103f9270e 796 break;
kenjiArai 2:b96103f9270e 797 }
kenjiArai 2:b96103f9270e 798 }
kenjiArai 2:b96103f9270e 799 }
kenjiArai 2:b96103f9270e 800
kenjiArai 2:b96103f9270e 801 #if (USE_UART==1)||(USE_SPI==1)||(USE_I2C==1)
kenjiArai 2:b96103f9270e 802 char *const uismsg0 = "is enable";
kenjiArai 2:b96103f9270e 803 char *const uismsg1 = "is disable";
kenjiArai 2:b96103f9270e 804 char *const uismsg2 = "(mbed pins are not avairable)";
kenjiArai 2:b96103f9270e 805 char *const uismsg3 = "Other";
kenjiArai 2:b96103f9270e 806 #endif
kenjiArai 2:b96103f9270e 807
kenjiArai 2:b96103f9270e 808 #if USE_UART
kenjiArai 2:b96103f9270e 809 // Show 16bit register contents
kenjiArai 2:b96103f9270e 810 void reg_print(uint16_t size, uint16_t reg)
kenjiArai 2:b96103f9270e 811 {
kenjiArai 2:b96103f9270e 812 uint16_t i, j, k, n;
kenjiArai 2:b96103f9270e 813
kenjiArai 2:b96103f9270e 814 if (size == 8) {
kenjiArai 2:b96103f9270e 815 PRINTF(" 7, 6, 5, 4, 3, 2, 1, 0");
kenjiArai 2:b96103f9270e 816 put_rn();
kenjiArai 2:b96103f9270e 817 i = 8;
kenjiArai 2:b96103f9270e 818 n = 0x80;
kenjiArai 2:b96103f9270e 819 } else if (size == 16) {
kenjiArai 2:b96103f9270e 820 PRINTF( "15,14,13,12,11,10, 9, 8, 7, 6, 5, 4, 3, 2, 1, 0" );
kenjiArai 2:b96103f9270e 821 put_rn();
kenjiArai 2:b96103f9270e 822 i = 16;
kenjiArai 2:b96103f9270e 823 n = 0x8000;
kenjiArai 2:b96103f9270e 824 } else {
kenjiArai 2:b96103f9270e 825 PRINTF("0x%08x", reg);
kenjiArai 2:b96103f9270e 826 return;
kenjiArai 2:b96103f9270e 827 }
kenjiArai 2:b96103f9270e 828 PUTC(' ');
kenjiArai 2:b96103f9270e 829 for (; i>0; i--) {
kenjiArai 2:b96103f9270e 830 k = n >> (size-i);
kenjiArai 2:b96103f9270e 831 j = reg & k;
kenjiArai 2:b96103f9270e 832 if (j) {
kenjiArai 2:b96103f9270e 833 PUTC('1');
kenjiArai 2:b96103f9270e 834 } else {
kenjiArai 2:b96103f9270e 835 PUTC('0');
kenjiArai 2:b96103f9270e 836 }
kenjiArai 2:b96103f9270e 837 PUTC(' ');
kenjiArai 2:b96103f9270e 838 PUTC(' ');
kenjiArai 2:b96103f9270e 839 }
kenjiArai 2:b96103f9270e 840 PRINTF(" (0x%04x)", reg);
kenjiArai 2:b96103f9270e 841 }
kenjiArai 2:b96103f9270e 842
kenjiArai 2:b96103f9270e 843 void uart_reg(uint8_t uart)
kenjiArai 2:b96103f9270e 844 {
kenjiArai 2:b96103f9270e 845 uint32_t c_lcr,c_fdr,c_dll,c_dlm;
kenjiArai 2:b96103f9270e 846 uint32_t divaddval,mulval,div,baud;
kenjiArai 2:b96103f9270e 847
kenjiArai 2:b96103f9270e 848 PRINTF("<Show UART%d status>", uart);
kenjiArai 2:b96103f9270e 849 put_rn();
kenjiArai 2:b96103f9270e 850 c_lcr = c_fdr = c_dll = c_dlm = 0;
kenjiArai 2:b96103f9270e 851 divaddval = mulval = div = baud = 0;
kenjiArai 2:b96103f9270e 852 get_freq(0);
kenjiArai 2:b96103f9270e 853 switch (uart) {
kenjiArai 2:b96103f9270e 854 case 0:
kenjiArai 2:b96103f9270e 855 if (LPC_SC->PCONP & (1UL<<3)) {
kenjiArai 2:b96103f9270e 856 c_fdr = LPC_UART0->FDR;
kenjiArai 2:b96103f9270e 857 c_lcr = LPC_UART0->LCR;
kenjiArai 2:b96103f9270e 858 // set LCR[DLAB] to enable writing to divider registers
kenjiArai 2:b96103f9270e 859 LPC_UART0->LCR |= (1 << 7);
kenjiArai 2:b96103f9270e 860 c_dll = LPC_UART0->DLL;
kenjiArai 2:b96103f9270e 861 c_dlm = LPC_UART0->DLM;
kenjiArai 2:b96103f9270e 862 // clear LCR[DLAB]
kenjiArai 2:b96103f9270e 863 LPC_UART0->LCR &= ~(1 << 7);
kenjiArai 2:b96103f9270e 864 div = (LPC_SC->PCLKSEL0 >> 6) & 0x3;
kenjiArai 2:b96103f9270e 865 }
kenjiArai 2:b96103f9270e 866 break;
kenjiArai 2:b96103f9270e 867 case 1:
kenjiArai 2:b96103f9270e 868 if (LPC_SC->PCONP & (1UL<<4)) {
kenjiArai 2:b96103f9270e 869 c_fdr = LPC_UART1->FDR;
kenjiArai 2:b96103f9270e 870 c_lcr = LPC_UART1->LCR;
kenjiArai 2:b96103f9270e 871 // set LCR[DLAB] to enable writing to divider registers
kenjiArai 2:b96103f9270e 872 LPC_UART1->LCR |= (1 << 7);
kenjiArai 2:b96103f9270e 873 c_dll = LPC_UART1->DLL;
kenjiArai 2:b96103f9270e 874 c_dlm = LPC_UART1->DLM;
kenjiArai 2:b96103f9270e 875 // clear LCR[DLAB]
kenjiArai 2:b96103f9270e 876 LPC_UART1->LCR &= ~(1 << 7);
kenjiArai 2:b96103f9270e 877 div = (LPC_SC->PCLKSEL0 >> 8) & 0x3;
kenjiArai 2:b96103f9270e 878 }
kenjiArai 2:b96103f9270e 879 break;
kenjiArai 2:b96103f9270e 880 case 2:
kenjiArai 2:b96103f9270e 881 if (LPC_SC->PCONP & (1UL<<24)) {
kenjiArai 2:b96103f9270e 882 c_fdr = LPC_UART2->FDR;
kenjiArai 2:b96103f9270e 883 c_lcr = LPC_UART2->LCR;
kenjiArai 2:b96103f9270e 884 // set LCR[DLAB] to enable writing to divider registers
kenjiArai 2:b96103f9270e 885 LPC_UART2->LCR |= (1 << 7);
kenjiArai 2:b96103f9270e 886 c_dll = LPC_UART2->DLL;
kenjiArai 2:b96103f9270e 887 c_dlm = LPC_UART2->DLM;
kenjiArai 2:b96103f9270e 888 // clear LCR[DLAB]
kenjiArai 2:b96103f9270e 889 LPC_UART2->LCR &= ~(1 << 7);
kenjiArai 2:b96103f9270e 890 div = (LPC_SC->PCLKSEL1 >> 16) & 0x3;
kenjiArai 2:b96103f9270e 891 }
kenjiArai 2:b96103f9270e 892 break;
kenjiArai 2:b96103f9270e 893 case 3:
kenjiArai 2:b96103f9270e 894 if (LPC_SC->PCONP & (1UL<<25)) {
kenjiArai 2:b96103f9270e 895 c_fdr = LPC_UART3->FDR;
kenjiArai 2:b96103f9270e 896 c_lcr = LPC_UART3->LCR;
kenjiArai 2:b96103f9270e 897 // set LCR[DLAB] to enable writing to divider registers
kenjiArai 2:b96103f9270e 898 LPC_UART3->LCR |= (1 << 7);
kenjiArai 2:b96103f9270e 899 c_dll = LPC_UART3->DLL;
kenjiArai 2:b96103f9270e 900 c_dlm = LPC_UART3->DLM;
kenjiArai 2:b96103f9270e 901 // clear LCR[DLAB]
kenjiArai 2:b96103f9270e 902 LPC_UART3->LCR &= ~(1 << 7);
kenjiArai 2:b96103f9270e 903 div = (LPC_SC->PCLKSEL1 >> 18) & 0x3;
kenjiArai 2:b96103f9270e 904 }
kenjiArai 2:b96103f9270e 905 break;
kenjiArai 2:b96103f9270e 906 default:
kenjiArai 2:b96103f9270e 907 break;
kenjiArai 2:b96103f9270e 908 }
kenjiArai 2:b96103f9270e 909 if ((c_fdr == 0)&&(c_lcr == 0)&&(c_dll == 0)) {
kenjiArai 2:b96103f9270e 910 PRINTF("NOT Avairable (power off the UART module)");
kenjiArai 2:b96103f9270e 911 } else {
kenjiArai 2:b96103f9270e 912 // condition
kenjiArai 2:b96103f9270e 913 PRINTF("Word Length: ");
kenjiArai 2:b96103f9270e 914 switch ((c_lcr >> 0) & 0x03) {
kenjiArai 2:b96103f9270e 915 case 0:
kenjiArai 2:b96103f9270e 916 PUTC('5');
kenjiArai 2:b96103f9270e 917 break;
kenjiArai 2:b96103f9270e 918 case 1:
kenjiArai 2:b96103f9270e 919 PUTC('6');
kenjiArai 2:b96103f9270e 920 break;
kenjiArai 2:b96103f9270e 921 case 2:
kenjiArai 2:b96103f9270e 922 PUTC('7');
kenjiArai 2:b96103f9270e 923 break;
kenjiArai 2:b96103f9270e 924 case 3:
kenjiArai 2:b96103f9270e 925 PUTC('8');
kenjiArai 2:b96103f9270e 926 break;
kenjiArai 2:b96103f9270e 927 }
kenjiArai 2:b96103f9270e 928 PRINTF("-bit");
kenjiArai 2:b96103f9270e 929 put_rn();
kenjiArai 2:b96103f9270e 930 PRINTF("Stop bit: ");
kenjiArai 2:b96103f9270e 931 if (c_lcr & 0x04) {
kenjiArai 2:b96103f9270e 932 PUTC('1');
kenjiArai 2:b96103f9270e 933 } else {
kenjiArai 2:b96103f9270e 934 PUTC('2');
kenjiArai 2:b96103f9270e 935 }
kenjiArai 2:b96103f9270e 936 PRINTF("-bit");
kenjiArai 2:b96103f9270e 937 put_rn();
kenjiArai 2:b96103f9270e 938 PRINTF("Parity: ");
kenjiArai 2:b96103f9270e 939 if (c_lcr & 0x08) {
kenjiArai 2:b96103f9270e 940 switch ((c_lcr >> 4) & 0x03) {
kenjiArai 2:b96103f9270e 941 case 0:
kenjiArai 2:b96103f9270e 942 PRINTF("Odd");
kenjiArai 2:b96103f9270e 943 break;
kenjiArai 2:b96103f9270e 944 case 1:
kenjiArai 2:b96103f9270e 945 PRINTF("Even");
kenjiArai 2:b96103f9270e 946 break;
kenjiArai 2:b96103f9270e 947 case 2:
kenjiArai 2:b96103f9270e 948 PRINTF("Forced '1'");
kenjiArai 2:b96103f9270e 949 break;
kenjiArai 2:b96103f9270e 950 case 3:
kenjiArai 2:b96103f9270e 951 PRINTF("Forced '0'");
kenjiArai 2:b96103f9270e 952 break;
kenjiArai 2:b96103f9270e 953 }
kenjiArai 2:b96103f9270e 954 PRINTF(" parity");
kenjiArai 2:b96103f9270e 955 } else {
kenjiArai 2:b96103f9270e 956 PRINTF("None-Parity");
kenjiArai 2:b96103f9270e 957 }
kenjiArai 2:b96103f9270e 958 put_rn();
kenjiArai 2:b96103f9270e 959 switch (div) {
kenjiArai 2:b96103f9270e 960 case 0:
kenjiArai 2:b96103f9270e 961 div = 4;
kenjiArai 2:b96103f9270e 962 break;
kenjiArai 2:b96103f9270e 963 case 1:
kenjiArai 2:b96103f9270e 964 div = 1;
kenjiArai 2:b96103f9270e 965 break;
kenjiArai 2:b96103f9270e 966 case 2:
kenjiArai 2:b96103f9270e 967 div = 2;
kenjiArai 2:b96103f9270e 968 break;
kenjiArai 2:b96103f9270e 969 case 3:
kenjiArai 2:b96103f9270e 970 div = 8;
kenjiArai 2:b96103f9270e 971 break;
kenjiArai 2:b96103f9270e 972 }
kenjiArai 2:b96103f9270e 973 divaddval = (c_fdr >> 0) & 0x0f;
kenjiArai 2:b96103f9270e 974 mulval = (c_fdr >> 4) & 0x0f;
kenjiArai 2:b96103f9270e 975 baud = (SystemCoreClock/div)/(16 * (256 * c_dlm + c_dll) * (1 + divaddval/mulval));
kenjiArai 2:b96103f9270e 976 PRINTF("Baud rate: %d bps", baud);
kenjiArai 2:b96103f9270e 977 put_rn();
kenjiArai 2:b96103f9270e 978 PRINTF(" = PCLK(=Sys/div)/(16 x (256 x DLM + DLL) x (1 + DivAddVal/MulVal)");
kenjiArai 2:b96103f9270e 979 put_rn();
kenjiArai 2:b96103f9270e 980 PRINTF(" = (%d/%d)/(16 x (256 x %d + %d) x (1 + %d/%d)",
kenjiArai 2:b96103f9270e 981 SystemCoreClock,div,c_dlm,c_dll,divaddval,mulval);
kenjiArai 2:b96103f9270e 982 }
kenjiArai 2:b96103f9270e 983 put_rn();
kenjiArai 2:b96103f9270e 984 }
kenjiArai 2:b96103f9270e 985
kenjiArai 2:b96103f9270e 986 void uart_io_print (void)
kenjiArai 2:b96103f9270e 987 {
kenjiArai 2:b96103f9270e 988 PRINTF("<Show IO Pin>");
kenjiArai 2:b96103f9270e 989 put_rn();
kenjiArai 2:b96103f9270e 990 }
kenjiArai 2:b96103f9270e 991
kenjiArai 2:b96103f9270e 992 void uart_io_reg0 (void)
kenjiArai 2:b96103f9270e 993 {
kenjiArai 2:b96103f9270e 994 uint32_t r0;
kenjiArai 2:b96103f9270e 995
kenjiArai 2:b96103f9270e 996 PRINTF("UART0/USBTX(P0.2),USBRX(P0.3):");
kenjiArai 2:b96103f9270e 997 // P0.2
kenjiArai 2:b96103f9270e 998 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 999 r0 = (r0 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 1000 if (r0 == 1) {
kenjiArai 2:b96103f9270e 1001 PRINTF("TXD0 ");
kenjiArai 2:b96103f9270e 1002 } else {
kenjiArai 2:b96103f9270e 1003 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1004 }
kenjiArai 2:b96103f9270e 1005 // P0.3
kenjiArai 2:b96103f9270e 1006 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1007 r0 = (r0 >> 6) & 0x03;
kenjiArai 2:b96103f9270e 1008 if (r0 == 1) {
kenjiArai 2:b96103f9270e 1009 PRINTF(",RXD0");
kenjiArai 2:b96103f9270e 1010 } else {
kenjiArai 2:b96103f9270e 1011 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1012 }
kenjiArai 2:b96103f9270e 1013 PRINTF("(connected to PC via USB)");
kenjiArai 2:b96103f9270e 1014 put_rn();
kenjiArai 2:b96103f9270e 1015 }
kenjiArai 2:b96103f9270e 1016
kenjiArai 2:b96103f9270e 1017 void uart_io_reg1 (void)
kenjiArai 2:b96103f9270e 1018 {
kenjiArai 2:b96103f9270e 1019 uint32_t r0;
kenjiArai 2:b96103f9270e 1020
kenjiArai 2:b96103f9270e 1021 PRINTF("UART1/ p13(P0.15), p14(P0.16):");
kenjiArai 2:b96103f9270e 1022 // P0.15
kenjiArai 2:b96103f9270e 1023 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1024 r0 = (r0 >> 30) & 0x03;
kenjiArai 2:b96103f9270e 1025 if (r0 == 1) {
kenjiArai 2:b96103f9270e 1026 PRINTF("TXD1 ");
kenjiArai 2:b96103f9270e 1027 } else {
kenjiArai 2:b96103f9270e 1028 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1029 }
kenjiArai 2:b96103f9270e 1030 // P0.16
kenjiArai 2:b96103f9270e 1031 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1032 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 1033 if (r0 == 1) {
kenjiArai 2:b96103f9270e 1034 PRINTF(",RXD1");
kenjiArai 2:b96103f9270e 1035 } else {
kenjiArai 2:b96103f9270e 1036 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1037 }
kenjiArai 2:b96103f9270e 1038 put_rn();
kenjiArai 2:b96103f9270e 1039 }
kenjiArai 2:b96103f9270e 1040
kenjiArai 2:b96103f9270e 1041 void uart_io_reg2 (void)
kenjiArai 2:b96103f9270e 1042 {
kenjiArai 2:b96103f9270e 1043 uint32_t r0;
kenjiArai 2:b96103f9270e 1044
kenjiArai 2:b96103f9270e 1045 PRINTF("UART2/ p28(P0.10), p27(P0.11):");
kenjiArai 2:b96103f9270e 1046 // P0.10
kenjiArai 2:b96103f9270e 1047 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1048 r0 = (r0 >> 20) & 0x03;
kenjiArai 2:b96103f9270e 1049 if (r0 == 1) {
kenjiArai 2:b96103f9270e 1050 PRINTF("TXD2 ");
kenjiArai 2:b96103f9270e 1051 } else {
kenjiArai 2:b96103f9270e 1052 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1053 }
kenjiArai 2:b96103f9270e 1054 // P0.11
kenjiArai 2:b96103f9270e 1055 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1056 r0 = (r0 >> 22) & 0x03;
kenjiArai 2:b96103f9270e 1057 if (r0 == 1) {
kenjiArai 2:b96103f9270e 1058 PRINTF(",RXD2");
kenjiArai 2:b96103f9270e 1059 } else {
kenjiArai 2:b96103f9270e 1060 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1061 }
kenjiArai 2:b96103f9270e 1062 put_rn();
kenjiArai 2:b96103f9270e 1063 }
kenjiArai 2:b96103f9270e 1064
kenjiArai 2:b96103f9270e 1065 void uart_io_reg3 (void)
kenjiArai 2:b96103f9270e 1066 {
kenjiArai 2:b96103f9270e 1067 uint32_t r0;
kenjiArai 2:b96103f9270e 1068
kenjiArai 2:b96103f9270e 1069 PRINTF("UART3/ p 9(P0. 0), p10(P0. 1):");
kenjiArai 2:b96103f9270e 1070 // P0.0
kenjiArai 2:b96103f9270e 1071 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1072 r0 = (r0 >> 0) & 0x03;
kenjiArai 2:b96103f9270e 1073 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1074 PRINTF("TXD3 ");
kenjiArai 2:b96103f9270e 1075 } else {
kenjiArai 2:b96103f9270e 1076 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1077 }
kenjiArai 2:b96103f9270e 1078 // P0.1
kenjiArai 2:b96103f9270e 1079 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1080 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 1081 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1082 PRINTF(",RXD3");
kenjiArai 2:b96103f9270e 1083 } else {
kenjiArai 2:b96103f9270e 1084 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1085 }
kenjiArai 2:b96103f9270e 1086 put_rn();
kenjiArai 2:b96103f9270e 1087 }
kenjiArai 2:b96103f9270e 1088 #endif //USE_UART
kenjiArai 2:b96103f9270e 1089
kenjiArai 2:b96103f9270e 1090 #if USE_SPI
kenjiArai 2:b96103f9270e 1091 void spi_io_reg (void)
kenjiArai 2:b96103f9270e 1092 {
kenjiArai 2:b96103f9270e 1093 uint32_t r0;
kenjiArai 2:b96103f9270e 1094
kenjiArai 2:b96103f9270e 1095 PRINTF("<Show IO Pin>");
kenjiArai 2:b96103f9270e 1096 put_rn();
kenjiArai 2:b96103f9270e 1097 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1098 PRINTF("SPI /p11(P0.18),p12(P0.17),p13(P0.15):");
kenjiArai 2:b96103f9270e 1099 // p11(P0.18)
kenjiArai 2:b96103f9270e 1100 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1101 r0 = (r0 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 1102 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1103 PRINTF(",MOSI ");
kenjiArai 2:b96103f9270e 1104 } else {
kenjiArai 2:b96103f9270e 1105 PRINTF("%s", uismsg3);
kenjiArai 2:b96103f9270e 1106 }
kenjiArai 2:b96103f9270e 1107 // p12(P0.17)
kenjiArai 2:b96103f9270e 1108 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1109 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 1110 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1111 PRINTF(",MISO ");
kenjiArai 2:b96103f9270e 1112 } else {
kenjiArai 2:b96103f9270e 1113 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1114 }
kenjiArai 2:b96103f9270e 1115 // p13(P0.15)
kenjiArai 2:b96103f9270e 1116 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1117 r0 = (r0 >> 30) & 0x03;
kenjiArai 2:b96103f9270e 1118 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1119 PRINTF(",SCK ");
kenjiArai 2:b96103f9270e 1120 } else {
kenjiArai 2:b96103f9270e 1121 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1122 }
kenjiArai 2:b96103f9270e 1123 put_rn();
kenjiArai 2:b96103f9270e 1124 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1125 PRINTF("SSP0/p11(P0.18),p12(P0.17),p13(P0.15):");
kenjiArai 2:b96103f9270e 1126 // p11(P0.18)
kenjiArai 2:b96103f9270e 1127 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1128 r0 = (r0 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 1129 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1130 PRINTF(",MOSI0");
kenjiArai 2:b96103f9270e 1131 } else {
kenjiArai 2:b96103f9270e 1132 PRINTF("%s", uismsg3);
kenjiArai 2:b96103f9270e 1133 }
kenjiArai 2:b96103f9270e 1134 // p12(P0.17)
kenjiArai 2:b96103f9270e 1135 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1136 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 1137 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1138 PRINTF(",MISO0");
kenjiArai 2:b96103f9270e 1139 } else {
kenjiArai 2:b96103f9270e 1140 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1141 }
kenjiArai 2:b96103f9270e 1142 // p13(P0.15)
kenjiArai 2:b96103f9270e 1143 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1144 r0 = (r0 >> 30) & 0x03;
kenjiArai 2:b96103f9270e 1145 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1146 PRINTF(",SCK0 ");
kenjiArai 2:b96103f9270e 1147 } else {
kenjiArai 2:b96103f9270e 1148 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1149 }
kenjiArai 2:b96103f9270e 1150 put_rn();
kenjiArai 2:b96103f9270e 1151 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1152 PRINTF("SSP1/p 5(P0. 9),p 6(P0. 8),p 7(P0. 7):");
kenjiArai 2:b96103f9270e 1153 // p5(P0.9)
kenjiArai 2:b96103f9270e 1154 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1155 r0 = (r0 >> 18) & 0x03;
kenjiArai 2:b96103f9270e 1156 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1157 PRINTF("MOSI1");
kenjiArai 2:b96103f9270e 1158 } else {
kenjiArai 2:b96103f9270e 1159 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1160 }
kenjiArai 2:b96103f9270e 1161 // p6(P0.8)
kenjiArai 2:b96103f9270e 1162 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1163 r0 = (r0 >> 16) & 0x03;
kenjiArai 2:b96103f9270e 1164 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1165 PRINTF(",MISO1");
kenjiArai 2:b96103f9270e 1166 } else {
kenjiArai 2:b96103f9270e 1167 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1168 }
kenjiArai 2:b96103f9270e 1169 // p7(P0.7)
kenjiArai 2:b96103f9270e 1170 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1171 r0 = (r0 >> 14) & 0x03;
kenjiArai 2:b96103f9270e 1172 if (r0 == 2) {
kenjiArai 2:b96103f9270e 1173 PRINTF(",SCK1");
kenjiArai 2:b96103f9270e 1174 } else {
kenjiArai 2:b96103f9270e 1175 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1176 }
kenjiArai 2:b96103f9270e 1177 put_rn();
kenjiArai 2:b96103f9270e 1178 }
kenjiArai 2:b96103f9270e 1179
kenjiArai 2:b96103f9270e 1180 void spi_freq (void)
kenjiArai 2:b96103f9270e 1181 {
kenjiArai 2:b96103f9270e 1182 uint32_t div, r0, r1;
kenjiArai 2:b96103f9270e 1183
kenjiArai 2:b96103f9270e 1184 get_freq(0);
kenjiArai 2:b96103f9270e 1185 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1186 // SPI
kenjiArai 2:b96103f9270e 1187 PRINTF("<Show SPI status>");
kenjiArai 2:b96103f9270e 1188 put_rn();
kenjiArai 2:b96103f9270e 1189 if (LPC_SC->PCONP & (1UL<<8)) {
kenjiArai 2:b96103f9270e 1190 div = (LPC_SC->PCLKSEL0 >> 16) & 0x3;
kenjiArai 2:b96103f9270e 1191 switch (div) {
kenjiArai 2:b96103f9270e 1192 case 0:
kenjiArai 2:b96103f9270e 1193 div = 4;
kenjiArai 2:b96103f9270e 1194 break;
kenjiArai 2:b96103f9270e 1195 case 1:
kenjiArai 2:b96103f9270e 1196 div = 1;
kenjiArai 2:b96103f9270e 1197 break;
kenjiArai 2:b96103f9270e 1198 case 2:
kenjiArai 2:b96103f9270e 1199 div = 2;
kenjiArai 2:b96103f9270e 1200 break;
kenjiArai 2:b96103f9270e 1201 case 3:
kenjiArai 2:b96103f9270e 1202 div = 8;
kenjiArai 2:b96103f9270e 1203 break;
kenjiArai 2:b96103f9270e 1204 }
kenjiArai 2:b96103f9270e 1205 r0 = LPC_SPI->SPCR;
kenjiArai 2:b96103f9270e 1206 PRINTF("Data length: ");
kenjiArai 2:b96103f9270e 1207 if (r0 & 0x04) {
kenjiArai 2:b96103f9270e 1208 r1 = (r0 >> 8) & 0x0f;
kenjiArai 2:b96103f9270e 1209 if (r1 == 0) {
kenjiArai 2:b96103f9270e 1210 r1 = 16;
kenjiArai 2:b96103f9270e 1211 }
kenjiArai 2:b96103f9270e 1212 PRINTF("%d", r1);
kenjiArai 2:b96103f9270e 1213 } else {
kenjiArai 2:b96103f9270e 1214 PUTC('8');
kenjiArai 2:b96103f9270e 1215 }
kenjiArai 2:b96103f9270e 1216 PRINTF("bit, ");
kenjiArai 2:b96103f9270e 1217 PRINTF("CPHA: ");
kenjiArai 2:b96103f9270e 1218 PRINTF("%d", (r0 >> 3) & 0x01);
kenjiArai 2:b96103f9270e 1219 PRINTF(", CPOL: ");
kenjiArai 2:b96103f9270e 1220 PRINTF("%d", (r0 >> 4) & 0x01);
kenjiArai 2:b96103f9270e 1221 put_rn();
kenjiArai 2:b96103f9270e 1222 if ((r0 >> 5) & 0x01) {
kenjiArai 2:b96103f9270e 1223 PRINTF("Master");
kenjiArai 2:b96103f9270e 1224 } else {
kenjiArai 2:b96103f9270e 1225 PRINTF("Slave");
kenjiArai 2:b96103f9270e 1226 }
kenjiArai 2:b96103f9270e 1227 PRINTF(" Mode");
kenjiArai 2:b96103f9270e 1228 put_rn();
kenjiArai 2:b96103f9270e 1229 if ((r0 >> 6) & 0x01) {
kenjiArai 2:b96103f9270e 1230 PRINTF("MSB(bit7)");
kenjiArai 2:b96103f9270e 1231 } else {
kenjiArai 2:b96103f9270e 1232 PRINTF("LSB(Bit0)");
kenjiArai 2:b96103f9270e 1233 }
kenjiArai 2:b96103f9270e 1234 PRINTF(" first");
kenjiArai 2:b96103f9270e 1235 put_rn();
kenjiArai 2:b96103f9270e 1236 r1 = LPC_SPI->SPCCR;
kenjiArai 2:b96103f9270e 1237 PRINTF("CLK = %d Hz", SystemCoreClock/div/r1);
kenjiArai 2:b96103f9270e 1238 put_rn();
kenjiArai 2:b96103f9270e 1239 PRINTF(" = PCLK_SPI(=Sys/div)/SPCCR0");
kenjiArai 2:b96103f9270e 1240 put_rn();
kenjiArai 2:b96103f9270e 1241 PRINTF(" = (%d/%d)/%d", SystemCoreClock, div, r1, SystemCoreClock/div/r1);
kenjiArai 2:b96103f9270e 1242 } else {
kenjiArai 2:b96103f9270e 1243 PRINTF("NOT Avairable (power off the module)");
kenjiArai 2:b96103f9270e 1244 }
kenjiArai 2:b96103f9270e 1245 put_rn();
kenjiArai 2:b96103f9270e 1246 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1247 // SSP0
kenjiArai 2:b96103f9270e 1248 PRINTF("<Show SSP0 status>");
kenjiArai 2:b96103f9270e 1249 put_rn();
kenjiArai 2:b96103f9270e 1250 if (LPC_SC->PCONP & (1UL<<21)) {
kenjiArai 2:b96103f9270e 1251 r0 = LPC_SSP0->CR1;
kenjiArai 2:b96103f9270e 1252 if (r0 & 0x02) {
kenjiArai 2:b96103f9270e 1253 div = (LPC_SC->PCLKSEL1 >> 10) & 0x3;
kenjiArai 2:b96103f9270e 1254 switch (div) {
kenjiArai 2:b96103f9270e 1255 case 0:
kenjiArai 2:b96103f9270e 1256 div = 4;
kenjiArai 2:b96103f9270e 1257 break;
kenjiArai 2:b96103f9270e 1258 case 1:
kenjiArai 2:b96103f9270e 1259 div = 1;
kenjiArai 2:b96103f9270e 1260 break;
kenjiArai 2:b96103f9270e 1261 case 2:
kenjiArai 2:b96103f9270e 1262 div = 2;
kenjiArai 2:b96103f9270e 1263 break;
kenjiArai 2:b96103f9270e 1264 case 3:
kenjiArai 2:b96103f9270e 1265 div = 8;
kenjiArai 2:b96103f9270e 1266 break;
kenjiArai 2:b96103f9270e 1267 }
kenjiArai 2:b96103f9270e 1268 r1 = LPC_SSP0->CR0;
kenjiArai 2:b96103f9270e 1269 PRINTF("SSP Mode: ");
kenjiArai 2:b96103f9270e 1270 r1 = (r1 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 1271 switch (r1) {
kenjiArai 2:b96103f9270e 1272 case 0:
kenjiArai 2:b96103f9270e 1273 PRINTF("SPI");
kenjiArai 2:b96103f9270e 1274 break;
kenjiArai 2:b96103f9270e 1275 case 1:
kenjiArai 2:b96103f9270e 1276 PRINTF("TI");
kenjiArai 2:b96103f9270e 1277 break;
kenjiArai 2:b96103f9270e 1278 case 2:
kenjiArai 2:b96103f9270e 1279 PRINTF("Microwire");
kenjiArai 2:b96103f9270e 1280 break;
kenjiArai 2:b96103f9270e 1281 case 3:
kenjiArai 2:b96103f9270e 1282 PRINTF("Not support");
kenjiArai 2:b96103f9270e 1283 break;
kenjiArai 2:b96103f9270e 1284 }
kenjiArai 2:b96103f9270e 1285 put_rn();
kenjiArai 2:b96103f9270e 1286 r1 = LPC_SSP0->CR0;
kenjiArai 2:b96103f9270e 1287 PRINTF("Data length: ");
kenjiArai 2:b96103f9270e 1288 PRINTF("%d", r1 & 0x0f);
kenjiArai 2:b96103f9270e 1289 PRINTF("bit, ");
kenjiArai 2:b96103f9270e 1290 PRINTF("CPHA: ");
kenjiArai 2:b96103f9270e 1291 PRINTF("%d", (r1 >> 7) & 0x01);
kenjiArai 2:b96103f9270e 1292 PRINTF(", CPOL: ");
kenjiArai 2:b96103f9270e 1293 PRINTF("%d", (r1 >> 6) & 0x01);
kenjiArai 2:b96103f9270e 1294 put_rn();
kenjiArai 2:b96103f9270e 1295 if ((r0 >> 2) & 0x01) {
kenjiArai 2:b96103f9270e 1296 PRINTF("Slave");
kenjiArai 2:b96103f9270e 1297 } else {
kenjiArai 2:b96103f9270e 1298 PRINTF("Master");
kenjiArai 2:b96103f9270e 1299 }
kenjiArai 2:b96103f9270e 1300 PRINTF(" Mode");
kenjiArai 2:b96103f9270e 1301 put_rn();
kenjiArai 2:b96103f9270e 1302 r1 = LPC_SSP0->CR0;
kenjiArai 2:b96103f9270e 1303 r1 = (r1 >> 8) & 0xff;
kenjiArai 2:b96103f9270e 1304 r0 = LPC_SSP0->CPSR;
kenjiArai 2:b96103f9270e 1305 r0 = (r0 >> 0) & 0x0f;
kenjiArai 2:b96103f9270e 1306 PRINTF("CLK = %d Hz", SystemCoreClock/div/(r0 * (r1+1)));
kenjiArai 2:b96103f9270e 1307 put_rn();
kenjiArai 2:b96103f9270e 1308 PRINTF(" = PCLK_SSP0(=Sys/div)/(CPSDVSR x [SCR+1])");
kenjiArai 2:b96103f9270e 1309 put_rn();
kenjiArai 2:b96103f9270e 1310 PRINTF(" = (%d/%d)/(%d x [%d + 1])", SystemCoreClock, div, r0, r1);
kenjiArai 2:b96103f9270e 1311 } else {
kenjiArai 2:b96103f9270e 1312 PRINTF("SSP0 is disabled");
kenjiArai 2:b96103f9270e 1313 }
kenjiArai 2:b96103f9270e 1314 } else {
kenjiArai 2:b96103f9270e 1315 PRINTF("NOT Avairable (power off the module)");
kenjiArai 2:b96103f9270e 1316 }
kenjiArai 2:b96103f9270e 1317 put_rn();
kenjiArai 2:b96103f9270e 1318 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1319 // SSP1
kenjiArai 2:b96103f9270e 1320 PRINTF("<Show SSP1 status>");
kenjiArai 2:b96103f9270e 1321 put_rn();
kenjiArai 2:b96103f9270e 1322 if (LPC_SC->PCONP & (1UL<<10)) {
kenjiArai 2:b96103f9270e 1323 r0 = LPC_SSP1->CR1;
kenjiArai 2:b96103f9270e 1324 if (r0 & 0x02) {
kenjiArai 2:b96103f9270e 1325 div = (LPC_SC->PCLKSEL0 >> 20) & 0x3;
kenjiArai 2:b96103f9270e 1326 switch (div) {
kenjiArai 2:b96103f9270e 1327 case 0:
kenjiArai 2:b96103f9270e 1328 div = 4;
kenjiArai 2:b96103f9270e 1329 break;
kenjiArai 2:b96103f9270e 1330 case 1:
kenjiArai 2:b96103f9270e 1331 div = 1;
kenjiArai 2:b96103f9270e 1332 break;
kenjiArai 2:b96103f9270e 1333 case 2:
kenjiArai 2:b96103f9270e 1334 div = 2;
kenjiArai 2:b96103f9270e 1335 break;
kenjiArai 2:b96103f9270e 1336 case 3:
kenjiArai 2:b96103f9270e 1337 div = 8;
kenjiArai 2:b96103f9270e 1338 break;
kenjiArai 2:b96103f9270e 1339 }
kenjiArai 2:b96103f9270e 1340 r1 = LPC_SSP1->CR0;
kenjiArai 2:b96103f9270e 1341 PRINTF("SSP Mode: ");
kenjiArai 2:b96103f9270e 1342 r1 = (r1 >> 4) & 0x03;
kenjiArai 2:b96103f9270e 1343 switch (r1) {
kenjiArai 2:b96103f9270e 1344 case 0:
kenjiArai 2:b96103f9270e 1345 PRINTF("SPI");
kenjiArai 2:b96103f9270e 1346 break;
kenjiArai 2:b96103f9270e 1347 case 1:
kenjiArai 2:b96103f9270e 1348 PRINTF("TI");
kenjiArai 2:b96103f9270e 1349 break;
kenjiArai 2:b96103f9270e 1350 case 2:
kenjiArai 2:b96103f9270e 1351 PRINTF("Microwire");
kenjiArai 2:b96103f9270e 1352 break;
kenjiArai 2:b96103f9270e 1353 case 3:
kenjiArai 2:b96103f9270e 1354 PRINTF("Not support");
kenjiArai 2:b96103f9270e 1355 break;
kenjiArai 2:b96103f9270e 1356 }
kenjiArai 2:b96103f9270e 1357 put_rn();
kenjiArai 2:b96103f9270e 1358 r1 = LPC_SSP1->CR0;
kenjiArai 2:b96103f9270e 1359 PRINTF("Data length: ");
kenjiArai 2:b96103f9270e 1360 PRINTF("%d", r1 & 0x0f);
kenjiArai 2:b96103f9270e 1361 PRINTF("bit, ");
kenjiArai 2:b96103f9270e 1362 PRINTF("CPHA: ");
kenjiArai 2:b96103f9270e 1363 PRINTF("%d", (r1 >> 7) & 0x01);
kenjiArai 2:b96103f9270e 1364 PRINTF(", CPOL: ");
kenjiArai 2:b96103f9270e 1365 PRINTF("%d", (r1 >> 6) & 0x01);
kenjiArai 2:b96103f9270e 1366 put_rn();
kenjiArai 2:b96103f9270e 1367 if ((r0 >> 2) & 0x01) {
kenjiArai 2:b96103f9270e 1368 PRINTF("Slave");
kenjiArai 2:b96103f9270e 1369 } else {
kenjiArai 2:b96103f9270e 1370 PRINTF("Master");
kenjiArai 2:b96103f9270e 1371 }
kenjiArai 2:b96103f9270e 1372 PRINTF(" Mode");
kenjiArai 2:b96103f9270e 1373 put_rn();
kenjiArai 2:b96103f9270e 1374 r1 = LPC_SSP1->CR0;
kenjiArai 2:b96103f9270e 1375 r1 = (r1 >> 8) & 0xff;
kenjiArai 2:b96103f9270e 1376 r0 = LPC_SSP1->CPSR;
kenjiArai 2:b96103f9270e 1377 r0 = (r0 >> 0) & 0x0f;
kenjiArai 2:b96103f9270e 1378 PRINTF("CLK = %d Hz", SystemCoreClock/div/(r0 * (r1+1)));
kenjiArai 2:b96103f9270e 1379 put_rn();
kenjiArai 2:b96103f9270e 1380 PRINTF(" = PCLK_SSP1(=Sys/div)/(CPSDVSR x [SCR+1])");
kenjiArai 2:b96103f9270e 1381 put_rn();
kenjiArai 2:b96103f9270e 1382 PRINTF(" = (%d/%d)/(%d x [%d + 1])", SystemCoreClock, div, r0, r1);
kenjiArai 2:b96103f9270e 1383 } else {
kenjiArai 2:b96103f9270e 1384 PRINTF("SSP1 is disabled");
kenjiArai 2:b96103f9270e 1385 }
kenjiArai 2:b96103f9270e 1386 } else {
kenjiArai 2:b96103f9270e 1387 PRINTF("NOT Avairable (power off the module)");
kenjiArai 2:b96103f9270e 1388 }
kenjiArai 2:b96103f9270e 1389 put_rn();
kenjiArai 2:b96103f9270e 1390 }
kenjiArai 2:b96103f9270e 1391 #endif
kenjiArai 2:b96103f9270e 1392
kenjiArai 2:b96103f9270e 1393 #if USE_I2C
kenjiArai 2:b96103f9270e 1394 void i2c_io_reg (void)
kenjiArai 2:b96103f9270e 1395 {
kenjiArai 2:b96103f9270e 1396 uint32_t r0;
kenjiArai 2:b96103f9270e 1397
kenjiArai 2:b96103f9270e 1398 PRINTF("<Show IO Pin>");
kenjiArai 2:b96103f9270e 1399 put_rn();
kenjiArai 2:b96103f9270e 1400 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1401 PRINTF("I2C0/pxx(P0.27),pxx(P0.28):");
kenjiArai 2:b96103f9270e 1402 // P0.27
kenjiArai 2:b96103f9270e 1403 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1404 r0 = (r0 >> 22) & 0x03;
kenjiArai 2:b96103f9270e 1405 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1406 PRINTF("SDA0");
kenjiArai 2:b96103f9270e 1407 } else {
kenjiArai 2:b96103f9270e 1408 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1409 }
kenjiArai 2:b96103f9270e 1410 // P0.28
kenjiArai 2:b96103f9270e 1411 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1412 r0 = (r0 >> 24) & 0x03;
kenjiArai 2:b96103f9270e 1413 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1414 PRINTF(",SCL0");
kenjiArai 2:b96103f9270e 1415 } else {
kenjiArai 2:b96103f9270e 1416 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1417 }
kenjiArai 2:b96103f9270e 1418 PRINTF(uismsg2);
kenjiArai 2:b96103f9270e 1419 put_rn();
kenjiArai 2:b96103f9270e 1420 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1421 PRINTF("I2C1/p 9(P0. 0),p10(P0. 1):");
kenjiArai 2:b96103f9270e 1422 // P0.0
kenjiArai 2:b96103f9270e 1423 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1424 r0 = (r0 >> 0) & 0x03;
kenjiArai 2:b96103f9270e 1425 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1426 PRINTF("SDA1");
kenjiArai 2:b96103f9270e 1427 } else {
kenjiArai 2:b96103f9270e 1428 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1429 }
kenjiArai 2:b96103f9270e 1430 // P0.1
kenjiArai 2:b96103f9270e 1431 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1432 r0 = (r0 >> 2) & 0x03;
kenjiArai 2:b96103f9270e 1433 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1434 PRINTF(",SCL1");
kenjiArai 2:b96103f9270e 1435 } else {
kenjiArai 2:b96103f9270e 1436 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1437 }
kenjiArai 2:b96103f9270e 1438 put_rn();
kenjiArai 2:b96103f9270e 1439 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1440 PRINTF("I2C1/pxx(P0.19),pxx(P0.20):");
kenjiArai 2:b96103f9270e 1441 // P0.19
kenjiArai 2:b96103f9270e 1442 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1443 r0 = (r0 >> 6) & 0x03;
kenjiArai 2:b96103f9270e 1444 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1445 PRINTF("SDA1");
kenjiArai 2:b96103f9270e 1446 } else {
kenjiArai 2:b96103f9270e 1447 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1448 }
kenjiArai 2:b96103f9270e 1449 // P0.20
kenjiArai 2:b96103f9270e 1450 r0 = LPC_PINCON->PINSEL1;
kenjiArai 2:b96103f9270e 1451 r0 = (r0 >> 8) & 0x03;
kenjiArai 2:b96103f9270e 1452 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1453 PRINTF(",SCL1");
kenjiArai 2:b96103f9270e 1454 } else {
kenjiArai 2:b96103f9270e 1455 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1456 }
kenjiArai 2:b96103f9270e 1457 PRINTF(uismsg2);
kenjiArai 2:b96103f9270e 1458 put_rn();
kenjiArai 2:b96103f9270e 1459 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1460 PRINTF("I2C2/p28(P0.10),p27(P0.11):");
kenjiArai 2:b96103f9270e 1461 // P0.10
kenjiArai 2:b96103f9270e 1462 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1463 r0 = (r0 >> 20) & 0x03;
kenjiArai 2:b96103f9270e 1464 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1465 PRINTF("SDA2");
kenjiArai 2:b96103f9270e 1466 } else {
kenjiArai 2:b96103f9270e 1467 PRINTF(uismsg3);
kenjiArai 2:b96103f9270e 1468 }
kenjiArai 2:b96103f9270e 1469 // P0.11
kenjiArai 2:b96103f9270e 1470 r0 = LPC_PINCON->PINSEL0;
kenjiArai 2:b96103f9270e 1471 r0 = (r0 >> 22) & 0x03;
kenjiArai 2:b96103f9270e 1472 if (r0 == 3) {
kenjiArai 2:b96103f9270e 1473 PRINTF(",SCL2");
kenjiArai 2:b96103f9270e 1474 } else {
kenjiArai 2:b96103f9270e 1475 PRINTF(",%s", uismsg3);
kenjiArai 2:b96103f9270e 1476 }
kenjiArai 2:b96103f9270e 1477 put_rn();
kenjiArai 2:b96103f9270e 1478 }
kenjiArai 2:b96103f9270e 1479
kenjiArai 2:b96103f9270e 1480 char *const msg_cal = " = I2CPCLK(=Sys/div)/(SCLH+SCLL)";
kenjiArai 2:b96103f9270e 1481
kenjiArai 2:b96103f9270e 1482 void i2c_freq (void)
kenjiArai 2:b96103f9270e 1483 {
kenjiArai 2:b96103f9270e 1484 uint32_t r0, r1, r2, r3;
kenjiArai 2:b96103f9270e 1485
kenjiArai 2:b96103f9270e 1486 get_freq(0);
kenjiArai 2:b96103f9270e 1487 // I2C0
kenjiArai 2:b96103f9270e 1488 r0 = LPC_I2C0->I2SCLL;
kenjiArai 2:b96103f9270e 1489 r1 = LPC_I2C0->I2SCLH;
kenjiArai 2:b96103f9270e 1490 r2 = LPC_I2C0->I2CONSET;
kenjiArai 2:b96103f9270e 1491 r3 = (LPC_SC->PCLKSEL0 >> 14) & 0x3;
kenjiArai 2:b96103f9270e 1492 switch (r3) {
kenjiArai 2:b96103f9270e 1493 case 0:
kenjiArai 2:b96103f9270e 1494 r3 = 4;
kenjiArai 2:b96103f9270e 1495 break;
kenjiArai 2:b96103f9270e 1496 case 1:
kenjiArai 2:b96103f9270e 1497 r3 = 1;
kenjiArai 2:b96103f9270e 1498 break;
kenjiArai 2:b96103f9270e 1499 case 2:
kenjiArai 2:b96103f9270e 1500 r3 = 2;
kenjiArai 2:b96103f9270e 1501 break;
kenjiArai 2:b96103f9270e 1502 case 3:
kenjiArai 2:b96103f9270e 1503 r3 = 8;
kenjiArai 2:b96103f9270e 1504 break;
kenjiArai 2:b96103f9270e 1505 }
kenjiArai 2:b96103f9270e 1506 PRINTF("<I2C Status>");
kenjiArai 2:b96103f9270e 1507 put_rn();
kenjiArai 2:b96103f9270e 1508 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1509 PRINTF("I2C0 ");
kenjiArai 2:b96103f9270e 1510 if (r2 & 0x40) {
kenjiArai 2:b96103f9270e 1511 PRINTF(uismsg0);
kenjiArai 2:b96103f9270e 1512 put_rn();
kenjiArai 2:b96103f9270e 1513 PRINTF("CLK = %d Hz", SystemCoreClock/r3/(r0+r1));
kenjiArai 2:b96103f9270e 1514 put_rn();
kenjiArai 2:b96103f9270e 1515 PRINTF(msg_cal);
kenjiArai 2:b96103f9270e 1516 put_rn();
kenjiArai 2:b96103f9270e 1517 PRINTF(" = (%d/%d)/(%d+%d)", SystemCoreClock,r3, r0, r1);
kenjiArai 2:b96103f9270e 1518 } else {
kenjiArai 2:b96103f9270e 1519 PRINTF(uismsg1);
kenjiArai 2:b96103f9270e 1520 }
kenjiArai 2:b96103f9270e 1521 put_rn();
kenjiArai 2:b96103f9270e 1522 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1523 // I2C1
kenjiArai 2:b96103f9270e 1524 r0 = LPC_I2C1->I2SCLL;
kenjiArai 2:b96103f9270e 1525 r1 = LPC_I2C1->I2SCLH;
kenjiArai 2:b96103f9270e 1526 r2 = LPC_I2C1->I2CONSET;
kenjiArai 2:b96103f9270e 1527 r3 = (LPC_SC->PCLKSEL1 >> 6) & 0x3;
kenjiArai 2:b96103f9270e 1528 switch (r3) {
kenjiArai 2:b96103f9270e 1529 case 0:
kenjiArai 2:b96103f9270e 1530 r3 = 4;
kenjiArai 2:b96103f9270e 1531 break;
kenjiArai 2:b96103f9270e 1532 case 1:
kenjiArai 2:b96103f9270e 1533 r3 = 1;
kenjiArai 2:b96103f9270e 1534 break;
kenjiArai 2:b96103f9270e 1535 case 2:
kenjiArai 2:b96103f9270e 1536 r3 = 2;
kenjiArai 2:b96103f9270e 1537 break;
kenjiArai 2:b96103f9270e 1538 case 3:
kenjiArai 2:b96103f9270e 1539 r3 = 8;
kenjiArai 2:b96103f9270e 1540 break;
kenjiArai 2:b96103f9270e 1541 }
kenjiArai 2:b96103f9270e 1542 PRINTF("I2C1 ");
kenjiArai 2:b96103f9270e 1543 if (r2 & 0x40) {
kenjiArai 2:b96103f9270e 1544 PRINTF(uismsg0);
kenjiArai 2:b96103f9270e 1545 put_rn();
kenjiArai 2:b96103f9270e 1546 PRINTF("CLK = %d Hz", SystemCoreClock/r3/(r0+r1));
kenjiArai 2:b96103f9270e 1547 put_rn();
kenjiArai 2:b96103f9270e 1548 PRINTF(msg_cal);
kenjiArai 2:b96103f9270e 1549 put_rn();
kenjiArai 2:b96103f9270e 1550 PRINTF(" = (%d/%d)/(%d+%d)", SystemCoreClock,r3, r0, r1);
kenjiArai 2:b96103f9270e 1551 } else {
kenjiArai 2:b96103f9270e 1552 PRINTF(uismsg1);
kenjiArai 2:b96103f9270e 1553 }
kenjiArai 2:b96103f9270e 1554 put_rn();
kenjiArai 2:b96103f9270e 1555 //-----------------------------------------------------
kenjiArai 2:b96103f9270e 1556 // I2C2
kenjiArai 2:b96103f9270e 1557 r0 = LPC_I2C2->I2SCLL;
kenjiArai 2:b96103f9270e 1558 r1 = LPC_I2C2->I2SCLH;
kenjiArai 2:b96103f9270e 1559 r2 = LPC_I2C2->I2CONSET;
kenjiArai 2:b96103f9270e 1560 r3 = (LPC_SC->PCLKSEL1 >> 20) & 0x3;
kenjiArai 2:b96103f9270e 1561 switch (r3) {
kenjiArai 2:b96103f9270e 1562 case 0:
kenjiArai 2:b96103f9270e 1563 r3 = 4;
kenjiArai 2:b96103f9270e 1564 break;
kenjiArai 2:b96103f9270e 1565 case 1:
kenjiArai 2:b96103f9270e 1566 r3 = 1;
kenjiArai 2:b96103f9270e 1567 break;
kenjiArai 2:b96103f9270e 1568 case 2:
kenjiArai 2:b96103f9270e 1569 r3 = 2;
kenjiArai 2:b96103f9270e 1570 break;
kenjiArai 2:b96103f9270e 1571 case 3:
kenjiArai 2:b96103f9270e 1572 r3 = 8;
kenjiArai 2:b96103f9270e 1573 break;
kenjiArai 2:b96103f9270e 1574 }
kenjiArai 2:b96103f9270e 1575 PRINTF("I2C2 ");
kenjiArai 2:b96103f9270e 1576 if (r2 & 0x40) {
kenjiArai 2:b96103f9270e 1577 PRINTF(uismsg0);
kenjiArai 2:b96103f9270e 1578 put_rn();
kenjiArai 2:b96103f9270e 1579 PRINTF("CLK = %d Hz", SystemCoreClock/r3/(r0+r1));
kenjiArai 2:b96103f9270e 1580 put_rn();
kenjiArai 2:b96103f9270e 1581 PRINTF(msg_cal);
kenjiArai 2:b96103f9270e 1582 put_rn();
kenjiArai 2:b96103f9270e 1583 PRINTF(" = (%d/%d)/(%d+%d)", SystemCoreClock,r3, r0, r1);
kenjiArai 2:b96103f9270e 1584 } else {
kenjiArai 2:b96103f9270e 1585 PRINTF(uismsg1);
kenjiArai 2:b96103f9270e 1586 }
kenjiArai 2:b96103f9270e 1587 put_rn();
kenjiArai 2:b96103f9270e 1588 }
kenjiArai 2:b96103f9270e 1589 #endif
kenjiArai 2:b96103f9270e 1590
kenjiArai 2:b96103f9270e 1591 //-----------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1592 // Monitor Main Program
kenjiArai 2:b96103f9270e 1593 //-----------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1594 int mon_hw(void)
kenjiArai 2:b96103f9270e 1595 {
kenjiArai 2:b96103f9270e 1596 char *ptr;
kenjiArai 2:b96103f9270e 1597
kenjiArai 2:b96103f9270e 1598 put_r();
kenjiArai 2:b96103f9270e 1599 PRINTF("%s [Help:'?' key]", mon_msg);
kenjiArai 2:b96103f9270e 1600 put_rn();
kenjiArai 2:b96103f9270e 1601 get_freq(0);
kenjiArai 2:b96103f9270e 1602 for (;;) {
kenjiArai 2:b96103f9270e 1603 put_r();
kenjiArai 2:b96103f9270e 1604 PUTC('>');
kenjiArai 2:b96103f9270e 1605 ptr = linebuf;
kenjiArai 2:b96103f9270e 1606 get_line(ptr, buf_size);
kenjiArai 2:b96103f9270e 1607 put_r();
kenjiArai 2:b96103f9270e 1608 switch (*ptr++) {
kenjiArai 2:b96103f9270e 1609 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1610 // Memory
kenjiArai 2:b96103f9270e 1611 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1612 case 'm' :
kenjiArai 2:b96103f9270e 1613 #if USE_MEM
kenjiArai 2:b96103f9270e 1614 mem_inf(ptr);
kenjiArai 2:b96103f9270e 1615 put_rn();
kenjiArai 2:b96103f9270e 1616 #else
kenjiArai 2:b96103f9270e 1617 not_select();
kenjiArai 2:b96103f9270e 1618 #endif // USE_MEM
kenjiArai 2:b96103f9270e 1619 break;
kenjiArai 2:b96103f9270e 1620 //--------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1621 // Register
kenjiArai 2:b96103f9270e 1622 //--------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1623 case 'r' :
kenjiArai 2:b96103f9270e 1624 uint8_t r_flg;
kenjiArai 2:b96103f9270e 1625 put_r();
kenjiArai 2:b96103f9270e 1626 PRINTF("Reg. Mode p,u,i,s,t,a,d,l,w,c & ?");
kenjiArai 2:b96103f9270e 1627 put_rn();
kenjiArai 2:b96103f9270e 1628 r_flg = 0;
kenjiArai 2:b96103f9270e 1629 for (; r_flg != 0xff;) {
kenjiArai 2:b96103f9270e 1630 PRINTF("r>");
kenjiArai 2:b96103f9270e 1631 ptr = linebuf;
kenjiArai 2:b96103f9270e 1632 get_line(ptr, buf_size);
kenjiArai 2:b96103f9270e 1633 put_r();
kenjiArai 2:b96103f9270e 1634 switch(*ptr++) {
kenjiArai 2:b96103f9270e 1635 case 'p' :
kenjiArai 2:b96103f9270e 1636 #if USE_PORT
kenjiArai 2:b96103f9270e 1637 put_r();
kenjiArai 2:b96103f9270e 1638 switch(*ptr++) {
kenjiArai 2:b96103f9270e 1639 case 'l' :
kenjiArai 2:b96103f9270e 1640 port_config_left();
kenjiArai 2:b96103f9270e 1641 break;
kenjiArai 2:b96103f9270e 1642 case 'r' :
kenjiArai 2:b96103f9270e 1643 port_config_right();
kenjiArai 2:b96103f9270e 1644 break;
kenjiArai 2:b96103f9270e 1645 case '*' :
kenjiArai 2:b96103f9270e 1646 port_config_left();
kenjiArai 2:b96103f9270e 1647 port_config_right();
kenjiArai 2:b96103f9270e 1648 break;
kenjiArai 2:b96103f9270e 1649 case '?' :
kenjiArai 2:b96103f9270e 1650 PRINTF("Enter pl,pr and p* for all");
kenjiArai 2:b96103f9270e 1651 put_rn();
kenjiArai 2:b96103f9270e 1652 break;;
kenjiArai 2:b96103f9270e 1653 default:
kenjiArai 2:b96103f9270e 1654 PUTC('?');
kenjiArai 2:b96103f9270e 1655 put_rn();
kenjiArai 2:b96103f9270e 1656 break;
kenjiArai 2:b96103f9270e 1657 }
kenjiArai 2:b96103f9270e 1658 #else
kenjiArai 2:b96103f9270e 1659 not_select();
kenjiArai 2:b96103f9270e 1660 #endif // USE_PORT
kenjiArai 2:b96103f9270e 1661 break;
kenjiArai 2:b96103f9270e 1662 case 'u' :
kenjiArai 2:b96103f9270e 1663 #if USE_UART
kenjiArai 2:b96103f9270e 1664 put_r();
kenjiArai 2:b96103f9270e 1665 switch(*ptr++) {
kenjiArai 2:b96103f9270e 1666 case '0' :
kenjiArai 2:b96103f9270e 1667 uart_io_print();
kenjiArai 2:b96103f9270e 1668 uart_io_reg0();
kenjiArai 2:b96103f9270e 1669 uart_reg(0);
kenjiArai 2:b96103f9270e 1670 break;
kenjiArai 2:b96103f9270e 1671 case '1' :
kenjiArai 2:b96103f9270e 1672 uart_io_print();
kenjiArai 2:b96103f9270e 1673 uart_io_reg1();
kenjiArai 2:b96103f9270e 1674 uart_reg(1);
kenjiArai 2:b96103f9270e 1675 break;
kenjiArai 2:b96103f9270e 1676 case '2' :
kenjiArai 2:b96103f9270e 1677 uart_io_print();
kenjiArai 2:b96103f9270e 1678 uart_io_reg2();
kenjiArai 2:b96103f9270e 1679 uart_reg(2);
kenjiArai 2:b96103f9270e 1680 break;
kenjiArai 2:b96103f9270e 1681 case '3' :
kenjiArai 2:b96103f9270e 1682 uart_io_print();
kenjiArai 2:b96103f9270e 1683 uart_io_reg3();
kenjiArai 2:b96103f9270e 1684 uart_reg(3);
kenjiArai 2:b96103f9270e 1685 break;
kenjiArai 2:b96103f9270e 1686 case '*' :
kenjiArai 2:b96103f9270e 1687 uart_io_print();
kenjiArai 2:b96103f9270e 1688 uart_io_reg0();
kenjiArai 2:b96103f9270e 1689 uart_io_reg1();
kenjiArai 2:b96103f9270e 1690 uart_io_reg2();
kenjiArai 2:b96103f9270e 1691 uart_io_reg3();
kenjiArai 2:b96103f9270e 1692 break;
kenjiArai 2:b96103f9270e 1693 case '?' :
kenjiArai 2:b96103f9270e 1694 PRINTF("Enter u0,u1,u2,u3 for each UART ");
kenjiArai 2:b96103f9270e 1695 PRINTF("or u* for UART port assignment");
kenjiArai 2:b96103f9270e 1696 put_rn();
kenjiArai 2:b96103f9270e 1697 break;
kenjiArai 2:b96103f9270e 1698 default:
kenjiArai 2:b96103f9270e 1699 PUTC('?');
kenjiArai 2:b96103f9270e 1700 put_rn();
kenjiArai 2:b96103f9270e 1701 break;
kenjiArai 2:b96103f9270e 1702 }
kenjiArai 2:b96103f9270e 1703 #else
kenjiArai 2:b96103f9270e 1704 not_select();
kenjiArai 2:b96103f9270e 1705 #endif // USE_UART
kenjiArai 2:b96103f9270e 1706 break;
kenjiArai 2:b96103f9270e 1707 case 'i' :
kenjiArai 2:b96103f9270e 1708 #if USE_I2C
kenjiArai 2:b96103f9270e 1709 put_r();
kenjiArai 2:b96103f9270e 1710 i2c_io_reg();
kenjiArai 2:b96103f9270e 1711 i2c_freq();
kenjiArai 2:b96103f9270e 1712 #else
kenjiArai 2:b96103f9270e 1713 not_select();
kenjiArai 2:b96103f9270e 1714 #endif // USE_I2C
kenjiArai 2:b96103f9270e 1715 break;
kenjiArai 2:b96103f9270e 1716 case 's' :
kenjiArai 2:b96103f9270e 1717 #if USE_SPI
kenjiArai 2:b96103f9270e 1718 put_r();
kenjiArai 2:b96103f9270e 1719 spi_io_reg();
kenjiArai 2:b96103f9270e 1720 spi_freq();
kenjiArai 2:b96103f9270e 1721 #else
kenjiArai 2:b96103f9270e 1722 not_select();
kenjiArai 2:b96103f9270e 1723 #endif // USE_SPI
kenjiArai 2:b96103f9270e 1724 break;
kenjiArai 2:b96103f9270e 1725 case 't' : //
kenjiArai 2:b96103f9270e 1726 not_yet_impliment();
kenjiArai 2:b96103f9270e 1727 break;
kenjiArai 2:b96103f9270e 1728 case 'a' : //
kenjiArai 2:b96103f9270e 1729 not_yet_impliment();
kenjiArai 2:b96103f9270e 1730 break;
kenjiArai 2:b96103f9270e 1731 case 'd' : //
kenjiArai 2:b96103f9270e 1732 not_yet_impliment();
kenjiArai 2:b96103f9270e 1733 break;
kenjiArai 2:b96103f9270e 1734 case 'w' : //
kenjiArai 2:b96103f9270e 1735 not_yet_impliment();
kenjiArai 2:b96103f9270e 1736 break;
kenjiArai 2:b96103f9270e 1737 case 'l' : //
kenjiArai 2:b96103f9270e 1738 not_yet_impliment();
kenjiArai 2:b96103f9270e 1739 break;
kenjiArai 2:b96103f9270e 1740 case 'c' : //
kenjiArai 2:b96103f9270e 1741 not_yet_impliment();
kenjiArai 2:b96103f9270e 1742 break;
kenjiArai 2:b96103f9270e 1743 case 'x' : //
kenjiArai 2:b96103f9270e 1744 not_yet_impliment();
kenjiArai 2:b96103f9270e 1745 break;
kenjiArai 2:b96103f9270e 1746 case 'y' : //
kenjiArai 2:b96103f9270e 1747 not_yet_impliment();
kenjiArai 2:b96103f9270e 1748 break;
kenjiArai 2:b96103f9270e 1749 case 'q' : // quit
kenjiArai 2:b96103f9270e 1750 r_flg = 0xff;
kenjiArai 2:b96103f9270e 1751 break;
kenjiArai 2:b96103f9270e 1752 case '?' :
kenjiArai 2:b96103f9270e 1753 PRINTF("p - I/O Pin Config. pl(p5 to p20) & pr(p21 to p30)");
kenjiArai 2:b96103f9270e 1754 put_rn();
kenjiArai 2:b96103f9270e 1755 PRINTF("u - UART u0,1,2,3 or u* (port assignment)");
kenjiArai 2:b96103f9270e 1756 put_rn();
kenjiArai 2:b96103f9270e 1757 PRINTF("i - I2C");
kenjiArai 2:b96103f9270e 1758 put_rn();
kenjiArai 2:b96103f9270e 1759 PRINTF("s - SPI/SSP");
kenjiArai 2:b96103f9270e 1760 put_rn();
kenjiArai 2:b96103f9270e 1761 PRINTF("t - TIMER");
kenjiArai 2:b96103f9270e 1762 put_rn();
kenjiArai 2:b96103f9270e 1763 PRINTF("a - ADC");
kenjiArai 2:b96103f9270e 1764 put_rn();
kenjiArai 2:b96103f9270e 1765 PRINTF("d - DAC");
kenjiArai 2:b96103f9270e 1766 put_rn();
kenjiArai 2:b96103f9270e 1767 PRINTF("l - LDC");
kenjiArai 2:b96103f9270e 1768 put_rn();
kenjiArai 2:b96103f9270e 1769 PRINTF("w - WWDG");
kenjiArai 2:b96103f9270e 1770 put_rn();
kenjiArai 2:b96103f9270e 1771 PRINTF("c - COMP");
kenjiArai 2:b96103f9270e 1772 put_rn();
kenjiArai 2:b96103f9270e 1773 PRINTF("q - Exit mode");
kenjiArai 2:b96103f9270e 1774 put_rn();
kenjiArai 2:b96103f9270e 1775 break;
kenjiArai 2:b96103f9270e 1776 default:
kenjiArai 2:b96103f9270e 1777 PUTC('?');
kenjiArai 2:b96103f9270e 1778 put_rn();
kenjiArai 2:b96103f9270e 1779 }
kenjiArai 2:b96103f9270e 1780 }
kenjiArai 2:b96103f9270e 1781 PRINTF("Return to All Mode");
kenjiArai 2:b96103f9270e 1782 put_rn();
kenjiArai 2:b96103f9270e 1783 break;
kenjiArai 2:b96103f9270e 1784 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1785 // System
kenjiArai 2:b96103f9270e 1786 //---------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1787 case 's' : // System related information
kenjiArai 2:b96103f9270e 1788 #if USE_SYS
kenjiArai 2:b96103f9270e 1789 switch (*ptr++) {
kenjiArai 2:b96103f9270e 1790 case 'f' : // sc - show system clock frequency
kenjiArai 2:b96103f9270e 1791 get_freq(1);
kenjiArai 2:b96103f9270e 1792 break;
kenjiArai 2:b96103f9270e 1793 case 'c' : // sc - show system CPU information
kenjiArai 2:b96103f9270e 1794 cpu_inf();
kenjiArai 2:b96103f9270e 1795 break;
kenjiArai 2:b96103f9270e 1796 case '?' :
kenjiArai 2:b96103f9270e 1797 default:
kenjiArai 2:b96103f9270e 1798 put_r();
kenjiArai 2:b96103f9270e 1799 PRINTF("sc - System CPU information");
kenjiArai 2:b96103f9270e 1800 put_rn();
kenjiArai 2:b96103f9270e 1801 PRINTF("sf - System Clock");
kenjiArai 2:b96103f9270e 1802 put_rn();
kenjiArai 2:b96103f9270e 1803 break;
kenjiArai 2:b96103f9270e 1804 }
kenjiArai 2:b96103f9270e 1805 #else
kenjiArai 2:b96103f9270e 1806 not_select();
kenjiArai 2:b96103f9270e 1807 #endif // USE_SYS
kenjiArai 2:b96103f9270e 1808 break;
kenjiArai 2:b96103f9270e 1809 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1810 // Help
kenjiArai 2:b96103f9270e 1811 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1812 case '?' :
kenjiArai 2:b96103f9270e 1813 msg_hlp_hw();
kenjiArai 2:b96103f9270e 1814 break;
kenjiArai 2:b96103f9270e 1815 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1816 // Return to main routine
kenjiArai 2:b96103f9270e 1817 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1818 case 'q' : // Quit
kenjiArai 2:b96103f9270e 1819 put_r();
kenjiArai 2:b96103f9270e 1820 PRINTF("Return to monitor");
kenjiArai 2:b96103f9270e 1821 put_rn();
kenjiArai 2:b96103f9270e 1822 return 0;
kenjiArai 2:b96103f9270e 1823 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1824 // Special command for DEBUG
kenjiArai 2:b96103f9270e 1825 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1826 case 'x' :
kenjiArai 2:b96103f9270e 1827 not_yet_impliment();
kenjiArai 2:b96103f9270e 1828 break;
kenjiArai 2:b96103f9270e 1829 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1830 // no support
kenjiArai 2:b96103f9270e 1831 //-----------------------------------------------------------------------------------------
kenjiArai 2:b96103f9270e 1832 default:
kenjiArai 2:b96103f9270e 1833 PUTC('?');
kenjiArai 2:b96103f9270e 1834 put_rn();
kenjiArai 2:b96103f9270e 1835 break;
kenjiArai 2:b96103f9270e 1836 }
kenjiArai 2:b96103f9270e 1837 }
kenjiArai 2:b96103f9270e 1838 }
kenjiArai 2:b96103f9270e 1839 #endif // defined(TARGET_LPC1768)