PJSC(Pump Jet Solenoid Controller)はArduinoを使用したバイク用燃料噴射コントローラです。このプロジェクトは、オープンソースECUプロジェクト『Speeduino』をベースにしています。
PWM test mode support for Injector outputs.
| @@ -284,13 +284,21 @@ | ||
| 284 | 284 | unused2-73-3 = bits, U08, 74, [3:3], "None", "None" ; | |
| 285 | 285 | unused2-73-4 = bits, U08, 74, [4:4], "None", "None" ; | |
| 286 | 286 | unused2-73-5 = bits, U08, 74, [5:5], "None", "None" ; | |
| 287 | - unused2-73-6 = bits, U08, 74, [6:6], "None", "None" ; | | |
| 288 | - unused2-73-7 = bits, U08, 74, [7:7], "None", "None" ; | | |
| 287 | + unused2-73-6 = bits, U08, 74, [6:6], "None", "None" ; V | |
| 288 | + unused2-73-7 = bits, U08, 74, [7:7], "None", "None" ;[PJSC] | |
| 289 | 289 | veMapSelection1 = bits, U08, 75, [0:7], "VE Table 1","VE Table 2","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 290 | 290 | veMapSelection2 = bits, U08, 76, [0:7], "VE Table 1","VE Table 2","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 291 | 291 | veMapSelection3 = bits, U08, 77, [0:7], "VE Table 1","VE Table 2","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 292 | 292 | veMapSelection4 = bits, U08, 78, [0:7], "VE Table 1","VE Table 2","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID","INVALID" |
| 293 | - unused2-79 = array, U08, 79, [49], "%", 1.0, 0.0, 0.0, 255, 0 ;[PJSC] | |
| 293 | + dutyFreqTst1 = scalar, U08, 79, "Hz", 1.0, 0.0, 0, 255, 0 ;[PJSC v1.10] | |
| 294 | + dutyFreqTst2 = scalar, U08, 80, "Hz", 1.0, 0.0, 0, 255, 0 ;[PJSC v1.10] | |
| 295 | + dutyFreqTst3 = scalar, U08, 81, "Hz", 1.0, 0.0, 0, 255, 0 ;[PJSC v1.10] | |
| 296 | + dutyFreqTst4 = scalar, U08, 82, "Hz", 1.0, 0.0, 0, 255, 0 ;[PJSC v1.10] | |
| 297 | + dutyRatioTst1 = scalar, U08, 83, "%", 1.0, 0.0, 0.0, 100.0, 0 ;[PJSC v1.10] | |
| 298 | + dutyRatioTst2 = scalar, U08, 84, "%", 1.0, 0.0, 0.0, 100.0, 0 ;[PJSC v1.10] | |
| 299 | + dutyRatioTst3 = scalar, U08, 85, "%", 1.0, 0.0, 0.0, 100.0, 0 ;[PJSC v1.10] | |
| 300 | + dutyRatioTst4 = scalar, U08, 86, "%", 1.0, 0.0, 0.0, 100.0, 0 ;[PJSC v1.10] | |
| 301 | + unused2-79 = array, U08, 87, [41], "%", 1.0, 0.0, 0.0, 255, 0 ;[PJSC v1.10] | |
| 294 | 302 | |
| 295 | 303 | |
| 296 | 304 | ;-------------------------------------------------- |
| @@ -1722,20 +1730,32 @@ | ||
| 1722 | 1730 | |
| 1723 | 1731 | dialog = outputtestinj1, "Injector CH1", yAxis |
| 1724 | 1732 | commandButton = "Off", cmdtestinj1off,{testactive} |
| 1725 | - commandButton = "50% DC", cmdtestinj150dc,{!testenabled & testactive} | |
| 1733 | +;[PJSC v1.10] commandButton = "50% DC", cmdtestinj150dc,{!testenabled & testactive} | |
| 1726 | 1734 | commandButton = "On", cmdtestinj1on,{!testenabled & testactive} |
| 1735 | + commandButton = "PWM", cmdtestinj150dc,{!testenabled & testactive} ;[PJSC v1.10] | |
| 1736 | + field = "PWM freq.", dutyFreqTst1, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1737 | + field = "Duty ratio", dutyRatioTst1, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1727 | 1738 | dialog = outputtestinj2, "Injector CH2", yAxis |
| 1728 | 1739 | commandButton = "Off", cmdtestinj2off,{testactive} |
| 1729 | - commandButton = "50% DC", cmdtestinj250dc,{!testenabled &testactive} | |
| 1740 | +;[PJSC v1.10] commandButton = "50% DC", cmdtestinj250dc,{!testenabled &testactive} | |
| 1730 | 1741 | commandButton = "On", cmdtestinj2on,{!testenabled & testactive} |
| 1742 | + commandButton = "PWM", cmdtestinj250dc,{!testenabled & testactive} ;[PJSC v1.10] | |
| 1743 | + field = "PWM freq.", dutyFreqTst2, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1744 | + field = "Duty ratio", dutyRatioTst2, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1731 | 1745 | dialog = outputtestinj3, "Injector CH3", yAxis |
| 1732 | 1746 | commandButton = "Off", cmdtestinj3off,{testactive} |
| 1733 | - commandButton = "50% DC", cmdtestinj350dc,{!testenabled & testactive} | |
| 1747 | +;[PJSC v1.10] commandButton = "50% DC", cmdtestinj350dc,{!testenabled & testactive} | |
| 1734 | 1748 | commandButton = "On", cmdtestinj3on,{!testenabled & testactive} |
| 1749 | + commandButton = "PWM", cmdtestinj350dc,{!testenabled & testactive} ;[PJSC v1.10] | |
| 1750 | + field = "PWM freq.", dutyFreqTst3, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1751 | + field = "Duty ratio", dutyRatioTst3, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1735 | 1752 | dialog = outputtestinj4, "Injector CH4", yAxis |
| 1736 | 1753 | commandButton = "Off", cmdtestinj4off,{testactive} |
| 1737 | - commandButton = "50% DC", cmdtestinj450dc,{!testenabled & testactive} | |
| 1754 | +;[PJSC v1.10] commandButton = "50% DC", cmdtestinj450dc,{!testenabled & testactive} | |
| 1738 | 1755 | commandButton = "On", cmdtestinj4on ,{!testenabled & testactive} |
| 1756 | + commandButton = "PWM", cmdtestinj450dc,{!testenabled & testactive} ;[PJSC v1.10] | |
| 1757 | + field = "PWM freq.", dutyFreqTst4, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1758 | + field = "Duty ratio", dutyRatioTst4, {!testenabled & testactive} ;[PJSC v1.10] | |
| 1739 | 1759 | |
| 1740 | 1760 | dialog = outputtest_injectors, "Injector Driver Output Test", xAxis |
| 1741 | 1761 | panel = outputtestinj1 |
| @@ -82,5 +82,4 @@ | ||
| 82 | 82 | static inline void vvtInterrupt(); |
| 83 | 83 | #endif |
| 84 | 84 | |
| 85 | - | |
| 86 | 85 | #endif |
| @@ -123,6 +123,16 @@ | ||
| 123 | 123 | #define BIT_STATUS3_NSQUIRTS2 6 |
| 124 | 124 | #define BIT_STATUS3_NSQUIRTS3 7 |
| 125 | 125 | |
| 126 | +//[PJSC v1.10] Define masks for Test mode | |
| 127 | +#define BIT_TEST_INJ1 0 //inj1 | |
| 128 | +#define BIT_TEST_INJ2 1 //inj2 | |
| 129 | +#define BIT_TEST_INJ3 2 //inj3 | |
| 130 | +#define BIT_TEST_INJ4 3 //inj4 | |
| 131 | +#define BIT_TEST_IGN1 4 //coil1 | |
| 132 | +#define BIT_TEST_IGN2 5 //coil2 | |
| 133 | +#define BIT_TEST_IGN3 6 //coil3 | |
| 134 | +#define BIT_TEST_IGN4 7 //coil4 | |
| 135 | + | |
| 126 | 136 | #define VALID_MAP_MAX 1022 //The largest ADC value that is valid for the MAP sensor |
| 127 | 137 | #define VALID_MAP_MIN 2 //The smallest ADC value that is valid for the MAP sensor |
| 128 | 138 |
| @@ -401,6 +411,7 @@ | ||
| 401 | 411 | unsigned long dutyOFFlast_time2; //[PJSC] For capturing duty pulse |
| 402 | 412 | unsigned long cycle_t2; //[PJSC] For capturing duty pulse |
| 403 | 413 | unsigned long on_t2; //[PJSC] For capturing duty pulse |
| 414 | + byte testModeActive; //[PJSC v1.10] For test mode | |
| 404 | 415 | |
| 405 | 416 | //Helpful bitwise operations: |
| 406 | 417 | //Useful reference: http://playground.arduino.cc/Code/BitMath |
| @@ -524,9 +535,11 @@ | ||
| 524 | 535 | byte unused1_74_4: 1; // | Place holder |
| 525 | 536 | byte unused1_74_5: 1; // | Place holder |
| 526 | 537 | byte unused1_74_6: 1; // | Place holder |
| 527 | - byte unused1_74_7: 1; // | Place holder | |
| 528 | - byte veMapSelection[4]; // V | |
| 529 | - byte unused1_79[49]; //[PJSC] | |
| 538 | + byte unused1_74_7: 1; // V Place holder | |
| 539 | + byte veMapSelection[4]; //[PJSC] | |
| 540 | + byte dutyFreqTst[4]; //[PJSC v1.10] For test mode | |
| 541 | + byte dutyRatioTst[4]; //[PJSC v1.10] For test mode | |
| 542 | + byte unused1_87[41]; //[PJSC v1.10] For test mode | |
| 530 | 543 | |
| 531 | 544 | #if defined(CORE_AVR) |
| 532 | 545 | }; |
| @@ -551,7 +551,7 @@ | ||
| 551 | 551 | //[PJSC] For PJSC |
| 552 | 552 | void pjscControl(); |
| 553 | 553 | byte pjscDuty[4]; |
| 554 | -unsigned int pjsc_pwm_max_count; | |
| 554 | +unsigned int pjsc_pwm_max_count[4]; | |
| 555 | 555 | volatile bool pjsc1_pwm_state; |
| 556 | 556 | volatile bool pjsc2_pwm_state; |
| 557 | 557 | volatile bool pjsc3_pwm_state; |
| @@ -566,4 +566,18 @@ | ||
| 566 | 566 | long pjsc4_pwm_target_value; |
| 567 | 567 | //[PJSC] For PJSC |
| 568 | 568 | |
| 569 | +//[PJSC v1.10] | |
| 570 | +void pjsc1Toggle(); | |
| 571 | +void pjsc2Toggle(); | |
| 572 | +void pjsc3Toggle(); | |
| 573 | +void pjsc4Toggle(); | |
| 574 | +void setPjsc1Duty(); | |
| 575 | +void setPjsc2Duty(); | |
| 576 | +void setPjsc3Duty(); | |
| 577 | +void setPjsc4Duty(); | |
| 578 | +void injTstControl(byte injCh); | |
| 579 | + | |
| 580 | +#define DISABLE_TIMER_FUEL1TO4() FUEL1_TIMER_DISABLE(); FUEL2_TIMER_DISABLE(); FUEL3_TIMER_DISABLE(); FUEL4_TIMER_DISABLE() | |
| 581 | +//[PJSC v1.10] | |
| 582 | + | |
| 569 | 583 | #endif // SCHEDULER_H |