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.

Latch_FET_Driver.cpp

Committer:
sk398
Date:
2016-03-10
Revision:
7:909d7e3822d8
Parent:
5:7d1b124490ed

File content as of revision 7:909d7e3822d8:

/* #####################################################################
                        Latch_FET_Driver.cpp
                        --------------------------
                
                          Surface Ship, Group 5
                          ---------------------
 
 Written by:        Steven Kay
 
 Date:              February 2016
 
 Function:          This 
 
 Version:           1.0
 
 Version History
 ---------------
 
 1.1                rgdfgdfgdfggdfgdg
 
 1.0                gdgddfdddgd
    
 ##################################################################### */

#include "mbed.h"
#include "Latch_FET_Driver.h"


/*  =============================================================
    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)
{
    // 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();
}

/*  ================================================================
    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()
{
    _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);
}

/*  ================================================================
    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);
}