Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Diff: main_working1.cpp.txt
- Revision:
- 3:b0b848c38e29
- Parent:
- 2:de9b637d8cca
diff -r de9b637d8cca -r b0b848c38e29 main_working1.cpp.txt --- a/main_working1.cpp.txt Sat Mar 21 06:00:04 2015 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,184 +0,0 @@ -// Revision 4 PWM Added ----- WORK IN PROGRESS - -#include "mbed.h" - - -#define EncRes 256 -#define DefaultGap 1 -#define Quad0 0 -#define Quad1 EncRes/4 -#define Quad2 EncRes/2 -#define Quad3 Quad1 + Quad2 -#define Quad4 EncRes -#define Quad5 EncRes + Quad1 - - -#define OPENLOOP 0 -#define CLOSEDLOOP 1 -#define MODE CLOSEDLOOP - -//Ticker DebugDisplay; -//Serial pc(PTE0, PTE1); - -DigitalOut LEDR(PTB18); -DigitalOut Cyl_1(PTD1); -DigitalOut Cyl_2(PTD3); -DigitalOut Cyl_3(PTD2); -DigitalOut Cyl_4(PTD0); -DigitalOut Cyl_5(PTD5); -DigitalOut Cyl_6(PTA13); -DigitalOut Cyl_7(PTC9); -DigitalOut Cyl_8(PTC8); - -// User Rotary Encoder definition -/* -PwmOut LEDRed(PTA5); -PwmOut LEDGreen(PTA4); -PwmOut LEDBlue(PTA12); -InterruptIn UserEnc1A(PTD4); -DigitalIn UserEnc1B(PTA12); -DigitalIn PB1(PTC3); */ -DigitalOut ANODE(PTC6); -DigitalOut COMMON(PTC5); - -//--------------------------- - -InterruptIn CrankAngleEncA(PTA1); -DigitalIn CrankAngleEncB(PTC0); - - -Timer t; - -char CylinderFired = 0; -uint8_t CrankAngle, CrankAngleChange; -uint8_t Gap = DefaultGap; -float Throttle; -// Max Speed is currently about 15RPS, 923RPM, 65ms/rev, 254uS/Encoder pulse -// 1000us interval = 3.9RPS. 0.5RPS = 7813uS encoder pulse interval -uint16_t TargetInterval = 400; -int elapseTime; - -#define PWMPeriod 1000 -#define DefaultPWMPercent 0.5 - -//Throttle = DefaultPWMPercent; -//Cyl_1.period_us = PWMPeriod ; Cyl_1 = Throttle; -//Cyl_2.period_us = PWMPeriod ; Cyl_2 = Throttle; -//Cyl_3.period_us = PWMPeriod ; Cyl_3 = Throttle; -//Cyl_4.period_us = PWMPeriod ; Cyl_4 = Throttle; -//Cyl_5.period_us = PWMPeriod ; Cyl_5 = Throttle; -//Cyl_6.period_us = PWMPeriod ; Cyl_6 = Throttle; -//Cyl_7.period_us = PWMPeriod ; Cyl_7 = Throttle; -//Cyl_8.period_us = PWMPeriod ; Cyl_8 = Throttle; - -/* -void UserEnc1_pulse(void) -{ - if (UserEnc1B && (TargetInterval < 8000)) - TargetInterval += 100; - else if (TargetInterval > 200) - TargetInterval -= 100; - -} -*/ - -void CrankAngleEnc_pulse(void) -{ - if (CrankAngleEncB) - CrankAngle++; - else - CrankAngle--; - //elapseTime = t.read_us(); t.reset(); - CrankAngleChange = true; -} - - -//void DispUpdate(void) { -// pc.printf("%d : %d : %d\n\r",CrankAngle,CylindersFired1,CylindersFired2);} - -int main() { - ANODE = 1 ; COMMON = 0; - LEDR = 0; - CrankAngleChange = true; -// pc.baud(57600); - // pc.printf("V8-Solenoid Engine..........."); - - - Cyl_1 = 0; Cyl_2 = 0; Cyl_3 = 0; Cyl_4 = 0; - Cyl_5 = 0; Cyl_6 = 1; Cyl_7 = 0; Cyl_8 = 0; - wait_ms(500); - Cyl_2 = 1; Cyl_5 = 1;Cyl_6 = 0; - wait_ms(1000); - CrankAngle = 0; - Cyl_2 = 0; Cyl_5 = 0; - -// DebugDisplay.attach(&DispUpdate,2.0); - CrankAngleEncA.rise(&CrankAngleEnc_pulse); -// UserEnc1A.rise(&UserEnc1_pulse); - -// pc.printf("Initialized!\n"); - - while(true) { - - if(CrankAngleChange){ - - // Pair#2 270 deg to 90 deg -// if ( (CrankAngle < ((int8_t)Quad1-Gap-Taper) ) || ( (CrankAngle<(Quad5-Gap-Taper)) && (CrankAngle>(Quad3+Gap)) ) ) - if ( (CrankAngle < (Quad1-Gap)) || (CrankAngle>(Quad3+Gap)) ) { - Cyl_1 = 0; Cyl_4 = 0; - Cyl_7 = 1; Cyl_6 = 1; - } - - //Pair#4 90 deg to 270 - else if ((CrankAngle>(Quad1+Gap)) && (CrankAngle<(Quad3-Gap))) { - Cyl_7 = 0; Cyl_6 = 0; - Cyl_4 = 1; Cyl_1 = 1; - } - else { - Cyl_1 = 0; - Cyl_4 = 0; - Cyl_6 = 0; - Cyl_7 = 0; - } - - - //Pair#3 0-180 deg - if ((CrankAngle>Gap) && (CrankAngle<(Quad2-Gap))) { - Cyl_2 = 0; Cyl_5 = 0; - Cyl_8 = 1; Cyl_3 = 1; - } - // Pair#1 180-360 deg - else if ((CrankAngle>(Quad2+Gap)) && (CrankAngle<(Quad4-Gap))) { - Cyl_3 = 0; Cyl_8 = 0; - Cyl_2 = 1; Cyl_5 = 1; - } - else { - Cyl_3 = 0; - Cyl_8 = 0; - Cyl_2 = 0; - Cyl_5 = 0; - } - - CrankAngleChange = false; - - // Speed Control Section - - if (MODE == CLOSEDLOOP) { -/* - Error = TargetInterval - elapseTime; - ErrorPrime = Error - PreviousError; - CompensationSignal = pGain*Error + dGain*ErrorPrime; - PreviousError = Error; -*/ - } - else { - - Throttle = TargetInterval; - - } - } //if crankAngleChange - - - }//main loop - while(true) -}//main -