First Release

Dependencies:   USBDevice

Committer:
sankichi
Date:
Sat Jul 27 14:19:33 2013 +0000
Revision:
1:6c392ebcd4d4
Parent:
0:e1265f6b3565
First release

Who changed what in which revision?

UserRevisionLine numberNew contents of line
sankichi 0:e1265f6b3565 1 #include "NiseKabuto.h"
sankichi 0:e1265f6b3565 2 #include "InputDeviceDetector.h"
sankichi 0:e1265f6b3565 3
sankichi 0:e1265f6b3565 4 // _InputTypeとInputStatus.InputDeviceTypeの違いは????
sankichi 0:e1265f6b3565 5
sankichi 0:e1265f6b3565 6 /**
sankichi 0:e1265f6b3565 7 --------------------------------------------------
sankichi 0:e1265f6b3565 8
sankichi 0:e1265f6b3565 9 Constructor
sankichi 0:e1265f6b3565 10
sankichi 0:e1265f6b3565 11 --------------------------------------------------
sankichi 0:e1265f6b3565 12 **/
sankichi 0:e1265f6b3565 13 NiseKabuto::NiseKabuto(PinName inputPins[], PinName outputPins[], PinName configurePins[])
sankichi 0:e1265f6b3565 14 :
sankichi 0:e1265f6b3565 15 _ConfigSwitch(
sankichi 0:e1265f6b3565 16 configurePins[0],configurePins[1],configurePins[2],configurePins[3],
sankichi 0:e1265f6b3565 17 configurePins[4],configurePins[5],configurePins[6],configurePins[7]
sankichi 0:e1265f6b3565 18 )
sankichi 0:e1265f6b3565 19 {
sankichi 0:e1265f6b3565 20 InitInterruptPriority();
sankichi 0:e1265f6b3565 21 // InitTimer0();
sankichi 0:e1265f6b3565 22
sankichi 0:e1265f6b3565 23 // Pin Setting
sankichi 0:e1265f6b3565 24 _ConfigSwitch.mode(PullUp);
sankichi 0:e1265f6b3565 25
sankichi 0:e1265f6b3565 26 // Detect Input device
sankichi 0:e1265f6b3565 27 InputDeviceDetector myDetector = InputDeviceDetector(inputPins);
sankichi 0:e1265f6b3565 28 _InputType = myDetector.GetInputType();
sankichi 0:e1265f6b3565 29 //printf("_InputType: %d\n",_InputType & 0xff);
sankichi 0:e1265f6b3565 30
sankichi 0:e1265f6b3565 31
sankichi 0:e1265f6b3565 32 // Initialize input instance
sankichi 0:e1265f6b3565 33 switch(_InputType)
sankichi 0:e1265f6b3565 34 {
sankichi 0:e1265f6b3565 35 case CONFIG_INMODE_CYBERSTICK_ANALOG:
sankichi 0:e1265f6b3565 36 case CONFIG_INMODE_CYBERSTICK_DIGITAL:
sankichi 0:e1265f6b3565 37 // Initialize Input: CyberStick
sankichi 0:e1265f6b3565 38 InitInput_CyberStick(inputPins);
sankichi 0:e1265f6b3565 39 break;
sankichi 0:e1265f6b3565 40
sankichi 0:e1265f6b3565 41 case CONFIG_INMODE_MD6B:
sankichi 0:e1265f6b3565 42 // Initialize Input: MD6B
sankichi 0:e1265f6b3565 43 InitInput_MD6B(inputPins);
sankichi 0:e1265f6b3565 44 break;
sankichi 0:e1265f6b3565 45
sankichi 0:e1265f6b3565 46 default:
sankichi 0:e1265f6b3565 47 InitInput_MD6B(inputPins);
sankichi 0:e1265f6b3565 48 break;
sankichi 0:e1265f6b3565 49 }
sankichi 0:e1265f6b3565 50
sankichi 0:e1265f6b3565 51 /*
sankichi 0:e1265f6b3565 52 wait_ms(5000);
sankichi 0:e1265f6b3565 53 printf("_ConfigSwitch: %d\n",_ConfigSwitch & 0xff);
sankichi 0:e1265f6b3565 54 */
sankichi 0:e1265f6b3565 55
sankichi 0:e1265f6b3565 56 // Save output mode
sankichi 0:e1265f6b3565 57 //printf("CS:%02x\n\r",~_ConfigSwitch);
sankichi 0:e1265f6b3565 58 _OutputType = (~_ConfigSwitch) & 0x0ff;
sankichi 0:e1265f6b3565 59
sankichi 0:e1265f6b3565 60 // Initialize output instance
sankichi 0:e1265f6b3565 61 switch(_OutputType)
sankichi 0:e1265f6b3565 62 {
sankichi 0:e1265f6b3565 63 case CONFIGPIN_OUTMODE_SSMULCON:
sankichi 0:e1265f6b3565 64 // Initialize Output: SS Multi Controller
sankichi 0:e1265f6b3565 65 InitOutput_SSMulCon(outputPins);
sankichi 0:e1265f6b3565 66 break;
sankichi 0:e1265f6b3565 67
sankichi 0:e1265f6b3565 68 case CONFIGPIN_OUTMODE_PCE:
sankichi 0:e1265f6b3565 69 // Initialize Output: PCE Analog/Digital Controller
sankichi 0:e1265f6b3565 70 InitOutput_PCE(outputPins);
sankichi 0:e1265f6b3565 71 break;
sankichi 0:e1265f6b3565 72
sankichi 0:e1265f6b3565 73 case CONFIGPIN_OUTMODE_FC:
sankichi 0:e1265f6b3565 74 // Initialize Output: Famicom Controller
sankichi 0:e1265f6b3565 75 InitOutput_FC(outputPins);
sankichi 0:e1265f6b3565 76 break;
sankichi 0:e1265f6b3565 77 case CONFIGPIN_OUTMODE_MD:
sankichi 0:e1265f6b3565 78 // Initialize Output: Megadrive analog joystick
sankichi 0:e1265f6b3565 79 InitOutput_MD(outputPins);
sankichi 0:e1265f6b3565 80 break;
sankichi 0:e1265f6b3565 81 default:
sankichi 0:e1265f6b3565 82 // Initialize Output: PlayStation3 USB Joystick
sankichi 0:e1265f6b3565 83 InitOutput_PS3USB();
sankichi 0:e1265f6b3565 84 break;
sankichi 0:e1265f6b3565 85 }
sankichi 0:e1265f6b3565 86 }
sankichi 0:e1265f6b3565 87
sankichi 0:e1265f6b3565 88
sankichi 0:e1265f6b3565 89 /**
sankichi 0:e1265f6b3565 90 --------------------------------------------------
sankichi 0:e1265f6b3565 91
sankichi 0:e1265f6b3565 92 Initialize Input Device: CyberStick
sankichi 0:e1265f6b3565 93
sankichi 0:e1265f6b3565 94 --------------------------------------------------
sankichi 0:e1265f6b3565 95 **/
sankichi 0:e1265f6b3565 96 void NiseKabuto::InitInput_CyberStick(PinName inputPins[])
sankichi 0:e1265f6b3565 97 {
sankichi 0:e1265f6b3565 98 // Create In_CyberStick instance
sankichi 0:e1265f6b3565 99 _In_CyberStick = new In_CyberStick(
sankichi 0:e1265f6b3565 100 inputPins[0],inputPins[1],inputPins[2],inputPins[3],
sankichi 0:e1265f6b3565 101 inputPins[4],inputPins[5],inputPins[6],&_InputStatus);
sankichi 0:e1265f6b3565 102 }
sankichi 0:e1265f6b3565 103
sankichi 0:e1265f6b3565 104
sankichi 0:e1265f6b3565 105
sankichi 0:e1265f6b3565 106 /**
sankichi 0:e1265f6b3565 107 --------------------------------------------------
sankichi 0:e1265f6b3565 108
sankichi 0:e1265f6b3565 109 Initialize Input Device: Fighting Pad 6B
sankichi 0:e1265f6b3565 110
sankichi 0:e1265f6b3565 111 --------------------------------------------------
sankichi 0:e1265f6b3565 112 **/
sankichi 0:e1265f6b3565 113 void NiseKabuto::InitInput_MD6B(PinName inputPins[])
sankichi 0:e1265f6b3565 114 {
sankichi 0:e1265f6b3565 115 // Create In_CyberStick instance
sankichi 0:e1265f6b3565 116 _In_MD6B= new In_MD6B(
sankichi 0:e1265f6b3565 117 inputPins[0],inputPins[1],inputPins[2],inputPins[3],
sankichi 0:e1265f6b3565 118 inputPins[4],inputPins[5],inputPins[6],&_InputStatus);
sankichi 0:e1265f6b3565 119 }
sankichi 0:e1265f6b3565 120
sankichi 0:e1265f6b3565 121
sankichi 0:e1265f6b3565 122
sankichi 0:e1265f6b3565 123 /**
sankichi 0:e1265f6b3565 124 --------------------------------------------------
sankichi 0:e1265f6b3565 125
sankichi 0:e1265f6b3565 126 Initialize Output Device: Megadrive analog/digital joystick
sankichi 0:e1265f6b3565 127
sankichi 0:e1265f6b3565 128 --------------------------------------------------
sankichi 0:e1265f6b3565 129 **/
sankichi 0:e1265f6b3565 130 void NiseKabuto::InitOutput_MD(PinName outputPins[])
sankichi 0:e1265f6b3565 131 {
sankichi 0:e1265f6b3565 132 // Create Out_MD instance
sankichi 0:e1265f6b3565 133 _Out_MD = new Out_MD(
sankichi 0:e1265f6b3565 134 outputPins[0],outputPins[1],outputPins[2],outputPins[3],
sankichi 0:e1265f6b3565 135 outputPins[4],outputPins[5],outputPins[6],
sankichi 0:e1265f6b3565 136 &_InputStatus
sankichi 0:e1265f6b3565 137 );
sankichi 0:e1265f6b3565 138
sankichi 0:e1265f6b3565 139 if( _InputType == CONFIG_INMODE_CYBERSTICK_ANALOG || _InputType == CONFIG_INMODE_CYBERSTICK_DIGITAL)
sankichi 0:e1265f6b3565 140 {
sankichi 0:e1265f6b3565 141 _Out_MD->SetupInputControll(_In_CyberStick, &In_CyberStick::StartReading, &In_CyberStick::StopReading);
sankichi 0:e1265f6b3565 142 }
sankichi 0:e1265f6b3565 143 else if( _InputType == CONFIG_INMODE_MD6B )
sankichi 0:e1265f6b3565 144 {
sankichi 0:e1265f6b3565 145 _Out_MD->SetupInputControll(_In_MD6B, &In_MD6B::StartReading, &In_MD6B::StopReading);
sankichi 0:e1265f6b3565 146 }
sankichi 0:e1265f6b3565 147 }
sankichi 0:e1265f6b3565 148
sankichi 0:e1265f6b3565 149 /**
sankichi 0:e1265f6b3565 150 --------------------------------------------------
sankichi 0:e1265f6b3565 151
sankichi 0:e1265f6b3565 152 Initialize Output Device: SS Multi Controller
sankichi 0:e1265f6b3565 153
sankichi 0:e1265f6b3565 154 --------------------------------------------------
sankichi 0:e1265f6b3565 155 **/
sankichi 0:e1265f6b3565 156 void NiseKabuto::InitOutput_SSMulCon(PinName outputPins[])
sankichi 0:e1265f6b3565 157 {
sankichi 0:e1265f6b3565 158 // Create Out_SSMulCon instance
sankichi 0:e1265f6b3565 159 _Out_SSMulCon = new Out_SSMulCon(
sankichi 0:e1265f6b3565 160 outputPins[0],outputPins[1],outputPins[2],outputPins[3],
sankichi 0:e1265f6b3565 161 outputPins[4],outputPins[5],outputPins[6],
sankichi 0:e1265f6b3565 162 &_InputStatus
sankichi 0:e1265f6b3565 163 );
sankichi 0:e1265f6b3565 164
sankichi 0:e1265f6b3565 165 if( _InputType == CONFIG_INMODE_CYBERSTICK_ANALOG || _InputType == CONFIG_INMODE_CYBERSTICK_DIGITAL)
sankichi 0:e1265f6b3565 166 {
sankichi 0:e1265f6b3565 167 _Out_SSMulCon->SetupInputControll(_In_CyberStick, &In_CyberStick::StartReading, &In_CyberStick::StopReading);
sankichi 0:e1265f6b3565 168 }
sankichi 0:e1265f6b3565 169 else if( _InputType == CONFIG_INMODE_MD6B )
sankichi 0:e1265f6b3565 170 {
sankichi 0:e1265f6b3565 171 _Out_SSMulCon->SetupInputControll(_In_MD6B, &In_MD6B::StartReading, &In_MD6B::StopReading);
sankichi 0:e1265f6b3565 172 }
sankichi 0:e1265f6b3565 173 }
sankichi 0:e1265f6b3565 174
sankichi 0:e1265f6b3565 175 /**
sankichi 0:e1265f6b3565 176 --------------------------------------------------
sankichi 0:e1265f6b3565 177
sankichi 0:e1265f6b3565 178 Initialize Output Device: PCE Analog/Digital Controller
sankichi 0:e1265f6b3565 179
sankichi 0:e1265f6b3565 180 --------------------------------------------------
sankichi 0:e1265f6b3565 181 **/
sankichi 0:e1265f6b3565 182 void NiseKabuto::InitOutput_PCE(PinName outputPins[])
sankichi 0:e1265f6b3565 183 {
sankichi 0:e1265f6b3565 184 // Create Out_PCEAnalog instance
sankichi 0:e1265f6b3565 185 _Out_PCE = new Out_PCE(
sankichi 0:e1265f6b3565 186 outputPins[0],outputPins[1],outputPins[2],outputPins[3],
sankichi 0:e1265f6b3565 187 outputPins[4],outputPins[5],outputPins[6],
sankichi 0:e1265f6b3565 188 &_InputStatus
sankichi 0:e1265f6b3565 189 );
sankichi 0:e1265f6b3565 190
sankichi 0:e1265f6b3565 191 if( _InputType == CONFIG_INMODE_CYBERSTICK_ANALOG || _InputType == CONFIG_INMODE_CYBERSTICK_DIGITAL)
sankichi 0:e1265f6b3565 192 {
sankichi 0:e1265f6b3565 193 _Out_PCE->SetupInputControll(_In_CyberStick, &In_CyberStick::StartReading, &In_CyberStick::StopReading);
sankichi 0:e1265f6b3565 194 }
sankichi 0:e1265f6b3565 195 else if( _InputType == CONFIG_INMODE_MD6B )
sankichi 0:e1265f6b3565 196 {
sankichi 0:e1265f6b3565 197 _Out_PCE->SetupInputControll(_In_MD6B, &In_MD6B::StartReading, &In_MD6B::StopReading);
sankichi 0:e1265f6b3565 198 }
sankichi 0:e1265f6b3565 199 }
sankichi 0:e1265f6b3565 200
sankichi 0:e1265f6b3565 201
sankichi 0:e1265f6b3565 202 /**
sankichi 0:e1265f6b3565 203 --------------------------------------------------
sankichi 0:e1265f6b3565 204
sankichi 0:e1265f6b3565 205 Initialize Output Device: Famicom Controller
sankichi 0:e1265f6b3565 206
sankichi 0:e1265f6b3565 207 --------------------------------------------------
sankichi 0:e1265f6b3565 208 **/
sankichi 0:e1265f6b3565 209 void NiseKabuto::InitOutput_FC(PinName outputPins[])
sankichi 0:e1265f6b3565 210 {
sankichi 0:e1265f6b3565 211 // Create Out_FC instance
sankichi 0:e1265f6b3565 212 _Out_FC = new Out_FC(
sankichi 0:e1265f6b3565 213 outputPins[0],outputPins[1],outputPins[2],outputPins[3],
sankichi 0:e1265f6b3565 214 &_InputStatus
sankichi 0:e1265f6b3565 215 );
sankichi 0:e1265f6b3565 216
sankichi 0:e1265f6b3565 217 if( _InputType == CONFIG_INMODE_CYBERSTICK_ANALOG || _InputType == CONFIG_INMODE_CYBERSTICK_DIGITAL)
sankichi 0:e1265f6b3565 218 {
sankichi 0:e1265f6b3565 219 _Out_FC->SetupInputControll(_In_CyberStick, &In_CyberStick::StartReading, &In_CyberStick::StopReading);
sankichi 0:e1265f6b3565 220 }
sankichi 0:e1265f6b3565 221 else if( _InputType == CONFIG_INMODE_MD6B )
sankichi 0:e1265f6b3565 222 {
sankichi 0:e1265f6b3565 223 _Out_FC->SetupInputControll(_In_MD6B, &In_MD6B::StartReading, &In_MD6B::StopReading);
sankichi 0:e1265f6b3565 224 }
sankichi 0:e1265f6b3565 225 }
sankichi 0:e1265f6b3565 226
sankichi 0:e1265f6b3565 227 /**
sankichi 0:e1265f6b3565 228 --------------------------------------------------
sankichi 0:e1265f6b3565 229
sankichi 0:e1265f6b3565 230 Initialize Output Device: PlayStation3 USB Joystick
sankichi 0:e1265f6b3565 231
sankichi 0:e1265f6b3565 232 --------------------------------------------------
sankichi 0:e1265f6b3565 233 **/
sankichi 0:e1265f6b3565 234 void NiseKabuto::InitOutput_PS3USB(void)
sankichi 0:e1265f6b3565 235 {
sankichi 0:e1265f6b3565 236 // Create Out_PS3USB instance
sankichi 0:e1265f6b3565 237 _Out_PS3USB = new Out_PS3USB(
sankichi 0:e1265f6b3565 238 &_InputStatus
sankichi 0:e1265f6b3565 239 );
sankichi 0:e1265f6b3565 240
sankichi 0:e1265f6b3565 241 if( _InputType == CONFIG_INMODE_CYBERSTICK_ANALOG || _InputType == CONFIG_INMODE_CYBERSTICK_DIGITAL)
sankichi 0:e1265f6b3565 242 {
sankichi 0:e1265f6b3565 243 _Out_PS3USB->SetupInputControll(_In_CyberStick, &In_CyberStick::StartReading, &In_CyberStick::StopReading);
sankichi 0:e1265f6b3565 244 }
sankichi 0:e1265f6b3565 245 else if( _InputType == CONFIG_INMODE_MD6B )
sankichi 0:e1265f6b3565 246 {
sankichi 0:e1265f6b3565 247 _Out_PS3USB->SetupInputControll(_In_MD6B, &In_MD6B::StartReading, &In_MD6B::StopReading);
sankichi 0:e1265f6b3565 248 }
sankichi 0:e1265f6b3565 249 }
sankichi 0:e1265f6b3565 250
sankichi 0:e1265f6b3565 251
sankichi 0:e1265f6b3565 252 /**
sankichi 0:e1265f6b3565 253 --------------------------------------------------
sankichi 0:e1265f6b3565 254
sankichi 0:e1265f6b3565 255 Show (for test)
sankichi 0:e1265f6b3565 256
sankichi 0:e1265f6b3565 257 --------------------------------------------------
sankichi 0:e1265f6b3565 258 **/
sankichi 0:e1265f6b3565 259
sankichi 0:e1265f6b3565 260 void NiseKabuto::Show()
sankichi 0:e1265f6b3565 261 {
sankichi 0:e1265f6b3565 262 char strBuf[100];
sankichi 0:e1265f6b3565 263
sankichi 0:e1265f6b3565 264 __disable_irq();
sankichi 0:e1265f6b3565 265 int val = _InputStatus.Buttons;
sankichi 0:e1265f6b3565 266 int ch0 = _InputStatus.Ch0;
sankichi 0:e1265f6b3565 267 int ch1 = _InputStatus.Ch1;
sankichi 0:e1265f6b3565 268 int ch2 = _InputStatus.Ch2;
sankichi 0:e1265f6b3565 269 int ch3 = _InputStatus.Ch3;
sankichi 0:e1265f6b3565 270 char mode = _InputStatus.InputDeviceType;
sankichi 0:e1265f6b3565 271 char temp0 = _InputStatus.Temp[0];
sankichi 0:e1265f6b3565 272 char temp1 = _InputStatus.Temp[1];
sankichi 0:e1265f6b3565 273 char temp2 = _InputStatus.Temp[2];
sankichi 0:e1265f6b3565 274 char temp3 = _InputStatus.Temp[3];
sankichi 0:e1265f6b3565 275 char temp4 = _InputStatus.Temp[4];
sankichi 0:e1265f6b3565 276 char temp5 = _InputStatus.Temp[5];
sankichi 0:e1265f6b3565 277 __enable_irq();
sankichi 0:e1265f6b3565 278
sankichi 0:e1265f6b3565 279 strBuf[0]=0;
sankichi 0:e1265f6b3565 280
sankichi 0:e1265f6b3565 281 switch(mode)
sankichi 0:e1265f6b3565 282 {
sankichi 0:e1265f6b3565 283 case CONFIG_INMODE_CYBERSTICK_ANALOG:
sankichi 0:e1265f6b3565 284 case CONFIG_INMODE_CYBERSTICK_DIGITAL:
sankichi 0:e1265f6b3565 285 strcat(strBuf, "CS");
sankichi 0:e1265f6b3565 286 if( mode==CONFIG_INMODE_CYBERSTICK_ANALOG )
sankichi 0:e1265f6b3565 287 {
sankichi 0:e1265f6b3565 288 strcat(strBuf, "AN");
sankichi 0:e1265f6b3565 289 }
sankichi 0:e1265f6b3565 290 else
sankichi 0:e1265f6b3565 291 {
sankichi 0:e1265f6b3565 292 strcat(strBuf, "DG");
sankichi 0:e1265f6b3565 293 }
sankichi 0:e1265f6b3565 294 break;
sankichi 0:e1265f6b3565 295
sankichi 0:e1265f6b3565 296 case CONFIG_INMODE_MD6B:
sankichi 0:e1265f6b3565 297 strcat(strBuf, "6B");
sankichi 0:e1265f6b3565 298 break;
sankichi 0:e1265f6b3565 299 }
sankichi 0:e1265f6b3565 300
sankichi 0:e1265f6b3565 301 switch(_OutputType)
sankichi 0:e1265f6b3565 302 {
sankichi 0:e1265f6b3565 303 case CONFIGPIN_OUTMODE_SSMULCON:
sankichi 0:e1265f6b3565 304 strcat(strBuf, "->SSMC ");
sankichi 0:e1265f6b3565 305 break;
sankichi 0:e1265f6b3565 306
sankichi 0:e1265f6b3565 307 case CONFIGPIN_OUTMODE_PCE:
sankichi 0:e1265f6b3565 308 strcat(strBuf, "->PCE ");
sankichi 0:e1265f6b3565 309 break;
sankichi 0:e1265f6b3565 310
sankichi 0:e1265f6b3565 311 case CONFIGPIN_OUTMODE_FC:
sankichi 0:e1265f6b3565 312 strcat(strBuf, "->Famicom ");
sankichi 0:e1265f6b3565 313 break;
sankichi 0:e1265f6b3565 314
sankichi 0:e1265f6b3565 315 case CONFIGPIN_OUTMODE_MD:
sankichi 0:e1265f6b3565 316 strcat(strBuf, "->MD ");
sankichi 0:e1265f6b3565 317 break;
sankichi 0:e1265f6b3565 318
sankichi 0:e1265f6b3565 319 default:
sankichi 0:e1265f6b3565 320 strcat(strBuf, "->PS3USB ");
sankichi 0:e1265f6b3565 321 break;
sankichi 0:e1265f6b3565 322 }
sankichi 0:e1265f6b3565 323
sankichi 0:e1265f6b3565 324 switch(mode)
sankichi 0:e1265f6b3565 325 {
sankichi 0:e1265f6b3565 326 case CONFIG_INMODE_CYBERSTICK_ANALOG:
sankichi 0:e1265f6b3565 327 case CONFIG_INMODE_CYBERSTICK_DIGITAL:
sankichi 0:e1265f6b3565 328 strcat(strBuf, val & 0x8000? "---" : "Tup");
sankichi 0:e1265f6b3565 329 strcat(strBuf, val & 0x4000? "---" : "Tdw");
sankichi 0:e1265f6b3565 330 strcat(strBuf, val & 0x2000? "-" : "U");
sankichi 0:e1265f6b3565 331 strcat(strBuf, val & 0x1000? "-" : "D");
sankichi 0:e1265f6b3565 332 strcat(strBuf, val & 0x0800? "-" : "L");
sankichi 0:e1265f6b3565 333 strcat(strBuf, val & 0x0400? "-" : "R");
sankichi 0:e1265f6b3565 334 strcat(strBuf, val & 0x0200? "-" : "A");
sankichi 0:e1265f6b3565 335 strcat(strBuf, val & 0x0100? "-" : "B");
sankichi 0:e1265f6b3565 336 strcat(strBuf, val & 0x0020? "-" : "C");
sankichi 0:e1265f6b3565 337 strcat(strBuf, val & 0x0010? "-" : "D");
sankichi 0:e1265f6b3565 338 strcat(strBuf, val & 0x0008? "--" : "E1");
sankichi 0:e1265f6b3565 339 strcat(strBuf, val & 0x0004? "--" : "E2");
sankichi 0:e1265f6b3565 340 strcat(strBuf, val & 0x0002? "---" : "Fst");
sankichi 0:e1265f6b3565 341 strcat(strBuf, val & 0x0001? "---" : "Gsl");
sankichi 0:e1265f6b3565 342 strcat(strBuf, val & 0x0080? "--" : "A'");
sankichi 0:e1265f6b3565 343 strcat(strBuf, val & 0x0040? "--" : "B'");
sankichi 0:e1265f6b3565 344 printf("%s ",strBuf);
sankichi 0:e1265f6b3565 345
sankichi 0:e1265f6b3565 346 printf("CH0:%02X ", ch0);
sankichi 0:e1265f6b3565 347 printf("CH1:%02X ", ch1);
sankichi 0:e1265f6b3565 348 printf("CH2:%02X ", ch2);
sankichi 0:e1265f6b3565 349 printf("CH3:%02X ", ch3);
sankichi 0:e1265f6b3565 350 /*
sankichi 0:e1265f6b3565 351 printf("\r\ni:%02x o:%02x %02x %02x ", temp0, temp2, temp5, temp4); // debug(in, out functions)
sankichi 0:e1265f6b3565 352 printf("tc(%u) mr0(%u) ", LPC_TIM3->TC, LPC_TIM3->MR0); // debug(TIMER3)
sankichi 0:e1265f6b3565 353 */
sankichi 0:e1265f6b3565 354 printf("\r\n");
sankichi 0:e1265f6b3565 355
sankichi 0:e1265f6b3565 356 break;
sankichi 0:e1265f6b3565 357
sankichi 0:e1265f6b3565 358 case CONFIG_INMODE_MD6B:
sankichi 0:e1265f6b3565 359 strcat(strBuf, val & 0x002000? "-" : "U");
sankichi 0:e1265f6b3565 360 strcat(strBuf, val & 0x001000? "-" : "D");
sankichi 0:e1265f6b3565 361 strcat(strBuf, val & 0x000800? "-" : "L");
sankichi 0:e1265f6b3565 362 strcat(strBuf, val & 0x000400? "-" : "R");
sankichi 0:e1265f6b3565 363 strcat(strBuf, val & 0x000200? "-" : "A");
sankichi 0:e1265f6b3565 364 strcat(strBuf, val & 0x000100? "-" : "B");
sankichi 0:e1265f6b3565 365 strcat(strBuf, val & 0x000020? "-" : "C");
sankichi 0:e1265f6b3565 366 strcat(strBuf, val & 0x040000? "-" : "X");
sankichi 0:e1265f6b3565 367 strcat(strBuf, val & 0x020000? "-" : "Y");
sankichi 0:e1265f6b3565 368 strcat(strBuf, val & 0x010000? "-" : "Z");
sankichi 0:e1265f6b3565 369 strcat(strBuf, val & 0x000002? "-" : "S");
sankichi 0:e1265f6b3565 370 strcat(strBuf, val & 0x000001? "-" : "M");
sankichi 0:e1265f6b3565 371 printf("%s ",strBuf);
sankichi 0:e1265f6b3565 372 //printf("%02x %02x %02x %02x %02x %02x", temp0, temp1, temp2, temp3, temp4, temp5);
sankichi 0:e1265f6b3565 373 /*
sankichi 0:e1265f6b3565 374 printf("i:%02x o:%02x %02x %02x ", temp0, temp2, temp5, temp4);
sankichi 0:e1265f6b3565 375 printf("TIM3 tc(%u) mr0(%u) diff(%d)",
sankichi 0:e1265f6b3565 376 LPC_TIM3->TC,
sankichi 0:e1265f6b3565 377 LPC_TIM3->MR0,
sankichi 0:e1265f6b3565 378 int(LPC_TIM3->MR0) - int(LPC_TIM3->TC) );
sankichi 0:e1265f6b3565 379 */
sankichi 0:e1265f6b3565 380 printf("\r\n");
sankichi 0:e1265f6b3565 381 /*
sankichi 0:e1265f6b3565 382 printf("\r\nIR:%08x,TCR:%08x,PR:%08x,PC:%08x,MCR:%08x,EMR:%08x,CTCR:%08x tc(%u) mr0(%u) diff(%d) pending:%u ",
sankichi 0:e1265f6b3565 383 // NVIC_GetActive(TIMER3_IRQn),
sankichi 0:e1265f6b3565 384 LPC_TIM3->IR,
sankichi 0:e1265f6b3565 385 LPC_TIM3->TCR,
sankichi 0:e1265f6b3565 386 LPC_TIM3->PR,
sankichi 0:e1265f6b3565 387 LPC_TIM3->PC,
sankichi 0:e1265f6b3565 388 LPC_TIM3->MCR,
sankichi 0:e1265f6b3565 389 LPC_TIM3->EMR,
sankichi 0:e1265f6b3565 390 LPC_TIM3->CTCR,
sankichi 0:e1265f6b3565 391 LPC_TIM3->TC,
sankichi 0:e1265f6b3565 392 LPC_TIM3->MR0,
sankichi 0:e1265f6b3565 393 int(LPC_TIM3->MR0) - int(LPC_TIM3->TC),
sankichi 0:e1265f6b3565 394 ( NVIC->ISPR[0] & ( 1<<4 ) ) );
sankichi 0:e1265f6b3565 395 printf("\r\n");
sankichi 0:e1265f6b3565 396 */
sankichi 0:e1265f6b3565 397 break;
sankichi 0:e1265f6b3565 398 }
sankichi 0:e1265f6b3565 399
sankichi 0:e1265f6b3565 400 //
sankichi 0:e1265f6b3565 401 // ここで実行させるのはおかしいが、暫定的に
sankichi 0:e1265f6b3565 402 //
sankichi 0:e1265f6b3565 403 if( (int(LPC_TIM3->MR0) - int(LPC_TIM3->TC)) <0 )
sankichi 0:e1265f6b3565 404 {
sankichi 0:e1265f6b3565 405 printf("=================================================\r\n");
sankichi 0:e1265f6b3565 406 printf(" Resetting MR0 !!!! \r\n");
sankichi 0:e1265f6b3565 407 printf("=================================================\r\n");
sankichi 0:e1265f6b3565 408 LPC_TIM3->MR0 = LPC_TIM3->TC + 1000;
sankichi 0:e1265f6b3565 409 }
sankichi 0:e1265f6b3565 410
sankichi 0:e1265f6b3565 411 }
sankichi 0:e1265f6b3565 412
sankichi 0:e1265f6b3565 413 void NiseKabuto::InitInterruptPriority(void)
sankichi 0:e1265f6b3565 414 {
sankichi 0:e1265f6b3565 415 // http://mbed.org/users/earlz/code/MbedConsole/file/370b9e559f92/main.cpp
sankichi 0:e1265f6b3565 416
sankichi 0:e1265f6b3565 417 NVIC_SetPriority(NonMaskableInt_IRQn, 100 );
sankichi 0:e1265f6b3565 418 NVIC_SetPriority(MemoryManagement_IRQn, 100);
sankichi 0:e1265f6b3565 419
sankichi 0:e1265f6b3565 420 NVIC_SetPriority(BusFault_IRQn, 100);
sankichi 0:e1265f6b3565 421 NVIC_SetPriority(UsageFault_IRQn, 100);
sankichi 0:e1265f6b3565 422 NVIC_SetPriority(SVCall_IRQn, 100);
sankichi 0:e1265f6b3565 423 NVIC_SetPriority(DebugMonitor_IRQn, 100);
sankichi 0:e1265f6b3565 424 NVIC_SetPriority(PendSV_IRQn, 100);
sankichi 0:e1265f6b3565 425 NVIC_SetPriority(SysTick_IRQn, 50);
sankichi 0:e1265f6b3565 426 NVIC_SetPriority(WDT_IRQn, 100);
sankichi 0:e1265f6b3565 427 NVIC_SetPriority(TIMER0_IRQn, 85);
sankichi 0:e1265f6b3565 428 NVIC_SetPriority(TIMER1_IRQn, 85);
sankichi 0:e1265f6b3565 429 NVIC_SetPriority(TIMER2_IRQn, 85);
sankichi 0:e1265f6b3565 430 NVIC_SetPriority(TIMER3_IRQn, 85);
sankichi 0:e1265f6b3565 431 NVIC_SetPriority(UART0_IRQn, 75);
sankichi 0:e1265f6b3565 432 NVIC_SetPriority(UART1_IRQn, 100);
sankichi 0:e1265f6b3565 433 NVIC_SetPriority(UART2_IRQn, 100);
sankichi 0:e1265f6b3565 434 NVIC_SetPriority(UART3_IRQn, 100);
sankichi 0:e1265f6b3565 435
sankichi 0:e1265f6b3565 436 NVIC_SetPriority(PWM1_IRQn, 100);
sankichi 0:e1265f6b3565 437 NVIC_SetPriority(I2C0_IRQn, 100);
sankichi 0:e1265f6b3565 438 NVIC_SetPriority(I2C1_IRQn, 100);
sankichi 0:e1265f6b3565 439 NVIC_SetPriority(I2C2_IRQn, 100);
sankichi 0:e1265f6b3565 440 NVIC_SetPriority(SPI_IRQn, 100);
sankichi 0:e1265f6b3565 441 NVIC_SetPriority(SSP0_IRQn, 100);
sankichi 0:e1265f6b3565 442 NVIC_SetPriority(SSP1_IRQn, 100);
sankichi 0:e1265f6b3565 443 NVIC_SetPriority(PLL0_IRQn, 100);
sankichi 0:e1265f6b3565 444 NVIC_SetPriority(RTC_IRQn, 100);
sankichi 0:e1265f6b3565 445 NVIC_SetPriority(EINT0_IRQn, 100);
sankichi 0:e1265f6b3565 446 NVIC_SetPriority(EINT1_IRQn, 100);
sankichi 0:e1265f6b3565 447
sankichi 0:e1265f6b3565 448 NVIC_SetPriority(EINT2_IRQn, 100);
sankichi 0:e1265f6b3565 449 NVIC_SetPriority(EINT3_IRQn, 20); // 最高
sankichi 0:e1265f6b3565 450 NVIC_SetPriority(ADC_IRQn, 100);
sankichi 0:e1265f6b3565 451 NVIC_SetPriority(BOD_IRQn, 100);
sankichi 0:e1265f6b3565 452 NVIC_SetPriority(USB_IRQn, 100);
sankichi 0:e1265f6b3565 453 NVIC_SetPriority(CAN_IRQn, 100);
sankichi 0:e1265f6b3565 454 NVIC_SetPriority(DMA_IRQn, 100);
sankichi 0:e1265f6b3565 455
sankichi 0:e1265f6b3565 456 NVIC_SetPriority(I2S_IRQn, 100);
sankichi 0:e1265f6b3565 457 NVIC_SetPriority(ENET_IRQn, 100);
sankichi 0:e1265f6b3565 458 NVIC_SetPriority(RIT_IRQn, 100);
sankichi 0:e1265f6b3565 459 NVIC_SetPriority(MCPWM_IRQn, 100);
sankichi 0:e1265f6b3565 460 NVIC_SetPriority(QEI_IRQn, 100);
sankichi 0:e1265f6b3565 461 NVIC_SetPriority(PLL1_IRQn, 100);
sankichi 0:e1265f6b3565 462
sankichi 0:e1265f6b3565 463 }
sankichi 0:e1265f6b3565 464
sankichi 0:e1265f6b3565 465
sankichi 0:e1265f6b3565 466 void NiseKabuto::WaitUs(uint32_t nus)
sankichi 0:e1265f6b3565 467 {
sankichi 0:e1265f6b3565 468 uint32_t countNop, countNopMAX;
sankichi 0:e1265f6b3565 469 countNopMAX = 24; // 96MHz動作のmbedで、1usになるような値にする
sankichi 0:e1265f6b3565 470
sankichi 0:e1265f6b3565 471 for(uint32_t i=0; i<nus; i++)
sankichi 0:e1265f6b3565 472 {
sankichi 0:e1265f6b3565 473 countNop = countNopMAX;
sankichi 0:e1265f6b3565 474 while(countNop--)
sankichi 0:e1265f6b3565 475 {
sankichi 0:e1265f6b3565 476 __nop();
sankichi 0:e1265f6b3565 477 }
sankichi 0:e1265f6b3565 478 }
sankichi 0:e1265f6b3565 479
sankichi 0:e1265f6b3565 480 }
sankichi 0:e1265f6b3565 481