First Release
NiseKabuto.cpp@1:6c392ebcd4d4, 2013-07-27 (annotated)
- 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?
User | Revision | Line number | New 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 |