Driver to control a peripheral circuit being controlled by the operation of a FET. Inbetween the mbed and FET is a single D type latch, used to latch a signal to the driver.
Diff: Latch_FET_Driver.cpp
- Revision:
- 5:7d1b124490ed
- Parent:
- 4:6b3722251fd7
- Child:
- 6:073ee2fd1245
- Child:
- 7:909d7e3822d8
diff -r 6b3722251fd7 -r 7d1b124490ed Latch_FET_Driver.cpp --- a/Latch_FET_Driver.cpp Sun Feb 07 18:22:35 2016 +0000 +++ b/Latch_FET_Driver.cpp Sat Feb 20 13:22:50 2016 +0000 @@ -1,42 +1,86 @@ #include "mbed.h" #include "Latch_FET_Driver.h" -Latch_FET_Driver::Latch_FET_Driver(PinName set,PinName reset) + +/* ============================================================= + Latch_FET_Driver constructor + + Inputs + ------ + PinName D: Pin to create D input to D Latch + PinName CLK: Pin to create CLK input to D Latch + + Description + ----------- + + Once the new DigitalOut types are assigned, the D Latch at + the given Pins is initialised to an outputLow state, ensuring + that uopn setup, a known state is entered quickly. + + ============================================================= */ +Latch_FET_Driver::Latch_FET_Driver(PinName D,PinName CLK) { - SetPin = new DigitalOut(set); - ResetPin = new DigitalOut(reset); - // Ensure that SR latch does not enter unknown state - Latch_FET_Driver::initialState(); -} - -void Latch_FET_Driver::initialState() -{ - SetPin -> write(LOW); - ResetPin ->write(HIGH); -} - -void Latch_FET_Driver::outputHigh() -{ - ResetPin -> write(LOW); - SetPin -> write(HIGH); + // Assign passed in Pin Names as new DigitalOut data types + _D = new DigitalOut(D); + _CLK = new DigitalOut(CLK); + + // Ensure that D latch does not enter unknown state + // Initialise is the same as the outputLow method + Latch_FET_Driver::outputLow(); } -void Latch_FET_Driver::outputLow() +/* ================================================================ + outputHigh is a public method to set a HIGH output on the given + D Latch. + + The procedure to set Q into a HIGH condition is as follows; + + 1. Ensure CLK is low + 2. Set D high + 3. wait STATE_DELAY us + 4. Set CLK high + 5. wait 10*STATE_DELAY us + 6. Set CLK low + 7. wait STATE_DELAY us + 8. set D low + 9. return void + ================================================================ */ +void Latch_FET_Driver::outputHigh() { - SetPin -> write(LOW); - ResetPin -> write(HIGH); - + _CLK -> write(LOW); + _D -> write(HIGH); + wait_us(STATE_DELAY); + _CLK -> write(HIGH); + wait_us(10*STATE_DELAY); + _CLK -> write(LOW); + wait_us(STATE_DELAY); + _D -> write(LOW); } -//int Latch_FET_Driver::setOutput() -//{ -// ResetPin = LOW; -// -// return 0; -//} -// -//int Latch_FET_Driver::resetOutput() -//{ -// -//} +/* ================================================================ + outputLow is a public method to set a HIGH output on the given + D Latch. + + The procedure to set Q into a LOW condition is as follows; + + 1. Ensure CLK is low + 2. Set D low + 3. wait STATE_DELAY us + 4. Set CLK high + 5. wait 10*STATE_DELAY us + 6. Set CLK low + 7. wait STATE_DELAY us + 8. return void + ================================================================ */ +void Latch_FET_Driver::outputLow() +{ + _CLK -> write(LOW); + _D -> write(LOW); + wait_us(STATE_DELAY); + _CLK -> write(HIGH); + wait_us(10*STATE_DELAY); + _CLK -> write(LOW); + wait_us(STATE_DELAY); +} +