You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
CCS-COMM_BOARD/DSP28335/GPIO.cpp

797 lines
30 KiB
C++

/*
* GPIO.cpp
*
* Author: Aleksey Gerasimenko
* gerasimenko.aleksey.n@gmail.com
*/
#include "DSP28335/GPIO.h"
namespace DSP28335
{
//CONSTRUCTOR
GPIO::GPIO():
DSP28335::CPUBase()
//
{}//end CONSTRUCTOR
//EPWM
// #pragma CODE_SECTION("ramfuncs");
void GPIO::gpio_epwm_setup()
{
EALLOW;
//
// General Synchronization Signal GENSYNC - EPWM1A - GPIO0
GpioCtrlRegs.GPAMUX1.bit.GPIO0 = 1; // Configure GPIO0 as EPWM1A
GpioCtrlRegs.GPAPUD.bit.GPIO0 = 0; // Enable pull-up on GPIO0 (EPWM1A)
GpioDataRegs.GPACLEAR.bit.GPIO0 = 1; // Clear EPWM1A
GpioCtrlRegs.GPADIR.bit.GPIO0 = 0; // Output - EPWM1A
//
// Phase A (U) Synchronization Signal - EPWM5B - GPIO9
GpioCtrlRegs.GPAMUX1.bit.GPIO9 = 1; // Configure GPIO9 as EPWM5B
GpioCtrlRegs.GPAPUD.bit.GPIO9 = 0; // Disable pull-up on GPIO9 (EPWM5B)
GpioDataRegs.GPACLEAR.bit.GPIO9 = 1; // Clear EPWM5B
GpioCtrlRegs.GPADIR.bit.GPIO9 = 0; // Output - EPWM5B
//
// Phase B (V) Synchronization Signal - EPWM6A - GPIO10
GpioCtrlRegs.GPAMUX1.bit.GPIO10 = 1; // Configure GPIO10 as EPWM6A
GpioCtrlRegs.GPAPUD.bit.GPIO10 = 0; // Disable pull-up on GPIO10 (EPWM6A)
GpioDataRegs.GPACLEAR.bit.GPIO10 = 1; // Clear EPWM6A
GpioCtrlRegs.GPADIR.bit.GPIO10 = 0; // Output - EPWM6A
//
// Phase C (W) Synchronization Signal - EPWM6B - GPIO11
GpioCtrlRegs.GPAMUX1.bit.GPIO11 = 1; // Configure GPIO9 as EPWM6B
GpioCtrlRegs.GPAPUD.bit.GPIO11 = 0; // Disable pull-up on GPIO11 (EPWM6B)
GpioDataRegs.GPACLEAR.bit.GPIO11 = 1; // Clear EPWM6B
GpioCtrlRegs.GPADIR.bit.GPIO11 = 0; // Output - EPWM6B
//
EDIS;
//
}//end
//
//CAN Inteface
void GPIO::gpio_cana_setup()
{
EALLOW;
//
// Enable CANA on GPIO18, CPIO19
// CANRXA - GPIO18
// CANTXA - GPIO19
//
GpioCtrlRegs.GPAPUD.bit.GPIO18 = 0; // Enable pullup on GPIO18
GpioCtrlRegs.GPAMUX2.bit.GPIO18 = 3; // GPIO18 = CANRXA
GpioCtrlRegs.GPAQSEL2.bit.GPIO18 = 3; // Asynch input
GpioCtrlRegs.GPADIR.bit.GPIO18 = 0; // GPIO18 = 0/1 - input/output
GpioDataRegs.GPASET.bit.GPIO18 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO18 = 0; // Clear output
//
GpioCtrlRegs.GPAPUD.bit.GPIO19 = 0; // Enable pullup on GPIO19
GpioCtrlRegs.GPAMUX2.bit.GPIO19 = 3; // GPIO19 = CANTXA
GpioCtrlRegs.GPAQSEL2.bit.GPIO19 = 0; // Asynch input
GpioCtrlRegs.GPADIR.bit.GPIO19 = 0; // GPIO19 = 0/1 - input/output
GpioDataRegs.GPASET.bit.GPIO19 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO19 = 0; // Clear output
//
EDIS;
//
}//end
//
void GPIO::gpio_canb_setup()
{
EALLOW;
//
// Enable CANB on GPIO16, CPIO17
// CANTXB - GPIO16
// CANRXB - GPIO17
//
GpioCtrlRegs.GPAPUD.bit.GPIO16 = 0; // Enable pullup on GPIO16
GpioCtrlRegs.GPAMUX2.bit.GPIO16 = 2; // GPIO16 = CANTXA
GpioCtrlRegs.GPAQSEL2.bit.GPIO16 = 0; // Asynch input
GpioCtrlRegs.GPADIR.bit.GPIO16 = 0; // GPIO16 = 0/1 - input/output
GpioDataRegs.GPASET.bit.GPIO16 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO16 = 0; // Clear output
//
GpioCtrlRegs.GPAPUD.bit.GPIO17 = 0; // Enable pullup on GPIO17
GpioCtrlRegs.GPAMUX2.bit.GPIO17 = 2; // GPIO17 = CANRXA
GpioCtrlRegs.GPAQSEL2.bit.GPIO17 = 3; // Asynch input
GpioCtrlRegs.GPADIR.bit.GPIO17 = 0; // GPIO17 = 0/1 - input/output
GpioDataRegs.GPASET.bit.GPIO17 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO17 = 0; // Clear output
//
EDIS;
//
}//end
//
//SCIA
void GPIO::gpio_scia_setup()
{}//
//
//RS485 - SCIB
void GPIO::gpio_scib_setup()
{
EALLOW;
//
// Enable SCI-B on GPIO21, GPIO22, GPIO23 - RS485
// SCIENBLB - GPIO21
// SCITXDB - GPIO22
// SCIRXDB - GPIO23
//
GpioCtrlRegs.GPAMUX2.bit.GPIO22 = 3; // GPIO22 = SCITXDB
GpioCtrlRegs.GPAPUD.bit.GPIO22 = 0; // Enable pullup on GPIO22
GpioCtrlRegs.GPAQSEL2.bit.GPIO22 = 0; // Asynch input
GpioCtrlRegs.GPADIR.bit.GPIO22 = 0; // GPIO22 = 0/1 - input/output
//
GpioCtrlRegs.GPAMUX2.bit.GPIO23 = 3; // GPIO23 = SCIRXDB
GpioCtrlRegs.GPAPUD.bit.GPIO23 = 0; // Enable pullup on GPIO23
GpioCtrlRegs.GPAQSEL2.bit.GPIO23 = 3; // Asynch input
GpioCtrlRegs.GPADIR.bit.GPIO23 = 0; // GPIO23 = 0/1 - input/output
//
EDIS;
//
}//end
//
void GPIO::gpio_scib_re_de_setup()
{
EALLOW;
//
// Enable SCI-B on GPIO21, GPIO22, GPIO23 - RS485
// SCIENBLB - GPIO21
// SCITXDB - GPIO22
// SCIRXDB - GPIO23
//
GpioCtrlRegs.GPAMUX2.bit.GPIO21 = 0; // GPIO21 = DE-RS485
GpioCtrlRegs.GPAPUD.bit.GPIO21 = 0; // Enable pullup on GPIO21
GpioCtrlRegs.GPADIR.bit.GPIO21 = 1; // GPIO21 = 0/1 - input/output
GpioDataRegs.GPASET.bit.GPIO21 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO21 = 0; // Clear output
//
EDIS;
//
}//end
//
// #pragma CODE_SECTION("ramfuncs");
void GPIO::gpio_scib_re_de_set()
{
//set GPIO21
GpioDataRegs.GPASET.bit.GPIO21 = 1;
//
}//
//
// #pragma CODE_SECTION("ramfuncs");
void GPIO::gpio_scib_re_de_clear()
{
//clear GPIO21
GpioDataRegs.GPACLEAR.bit.GPIO21 = 1;
//
}//
//
//RS485 - SCIC
void GPIO::gpio_scic_setup()
{
EALLOW;
//
// Enable SCI-C on GPIO61, GPIO62, GPIO63 - RS485
// SCIENBLC - GPIO61
// SCIRXDC - GPIO62
// SCITXDC - GPIO63
//
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0; // GPIO61 = DE-RS485
GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0; // Enable pullup on GPIO61
GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1; // GPIO61 = 0/1 - input/output
GpioDataRegs.GPBSET.bit.GPIO61 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO61 = 0; // Clear output
//
GpioCtrlRegs.GPBMUX2.bit.GPIO62 = 1; // GPIO62 = SCIRXDC
GpioCtrlRegs.GPBPUD.bit.GPIO62 = 0; // Enable pullup on GPIO62
GpioCtrlRegs.GPBQSEL2.bit.GPIO62 = 3; // Asynch input
GpioCtrlRegs.GPBDIR.bit.GPIO62 = 0; // GPIO62 = 0/1 - input/output
//
GpioCtrlRegs.GPBMUX2.bit.GPIO63 = 1; // GPIO63 = SCITXDC
GpioCtrlRegs.GPBPUD.bit.GPIO63 = 0; // Enable pullup on GPIO63
GpioCtrlRegs.GPBQSEL2.bit.GPIO63 = 0; // Asynch input
GpioCtrlRegs.GPBDIR.bit.GPIO63 = 0; // GPIO63 = 0/1 - input/output
//
EDIS;
//
}//end
//FRAM - SPIA
void GPIO::gpio_spia_setup()
{
EALLOW;
//
//GPIO54 - SPISIMOA
//GPIO55 - SPISOMIA
//GPIO56 - SPICLKA
//GPIO57 - SPISTEA
//GPIO58 - SPISWP - Write Protect
//
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 1; // Configure GPIO54 as SPISIMOA
GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0; // Enable pull-up on GPIO54 (SPISIMOA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 3; // Asynch input GPIO54 (SPISIMOA)
GpioCtrlRegs.GPBDIR.bit.GPIO54 = 1; // GPIO54 = 0/1 - input/output
//
GpioCtrlRegs.GPBMUX2.bit.GPIO55 = 1; // Configure GPIO55 as SPISOMIA
GpioCtrlRegs.GPBPUD.bit.GPIO55 = 0; // Enable pull-up on GPIO55 (SPISOMIA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO55 = 3; // Asynch input GPIO55 (SPISOMIA)
GpioCtrlRegs.GPBDIR.bit.GPIO55 = 0; // GPIO55 = 0/1 - input/output
//
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 1; // Configure GPIO56 as SPICLKA
GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0; // Enable pull-up on GPIO56 (SPICLKA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 3; // Asynch input GPIO56 (SPICLKA)
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; // GPIO56 = 0/1 - input/output
//
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 1; // Configure GPIO57 as SPISTEA
GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; // Enable pull-up on GPIO57 (SPISTEA)
GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 3; // Asynch input GPIO57 (SPISTEA)
GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1; // GPIO57 = 0/1 - input/output
//
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 0; // Configure GPIO58 as GPIO
GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; // Enable pull-up on GPIO58
GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 3; // Asynch input GPIO58
GpioCtrlRegs.GPBDIR.bit.GPIO58 = 1; // GPIO58 = 0/1 - input/output
//
EDIS;
//
}//
//
void GPIO::gpio_spia_write_protect_set()
{
GpioDataRegs.GPBSET.bit.GPIO58 = 1; // Set output
//
}//
//
void GPIO::gpio_spia_write_protect_clear()
{
GpioDataRegs.GPBCLEAR.bit.GPIO58 = 1; // Set output
//
}//
//
//
void GPIO::gpio_eqep_setup()
{
EALLOW;
//
// Enable eQEP on GPIO50, CPIO51
// EQEP1A - GPIO50
// EQEP1B - GPIO51
//
GpioCtrlRegs.GPBPUD.bit.GPIO50 = 0; // Enable pullup on GPIO50
GpioCtrlRegs.GPBMUX2.bit.GPIO50 = 1; // GPIO50 = EQEP1A
GpioCtrlRegs.GPBQSEL2.bit.GPIO50 = 0; // Asynch input
GpioCtrlRegs.GPBDIR.bit.GPIO50 = 0; // GPIO50 = 0/1 - input/output
GpioDataRegs.GPBSET.bit.GPIO50 = 1; //
GpioDataRegs.GPBCLEAR.bit.GPIO50 = 0; // Clear output
//
GpioCtrlRegs.GPBPUD.bit.GPIO51 = 0; // Enable pullup on GPIO51
GpioCtrlRegs.GPBMUX2.bit.GPIO51 = 1; // GPIO51 = EQEP1B
GpioCtrlRegs.GPBQSEL2.bit.GPIO51 = 0; // Asynch input
GpioCtrlRegs.GPBDIR.bit.GPIO51 = 0; // GPIO51 = 0/1 - input/output
GpioDataRegs.GPBSET.bit.GPIO51 = 1; //
GpioDataRegs.GPBCLEAR.bit.GPIO51 = 0; // Clear output
//
EDIS;
//
}//
//
void GPIO::gpio_xintf_16bit_setup()
{
EALLOW;
//
// XINF - external interface
//
// GPIO34 - XREADY
GpioCtrlRegs.GPBPUD.bit.GPIO34 = 0; // Enable pullup on GPIO34
GpioCtrlRegs.GPBDIR.bit.GPIO34 = 0; // GPIO34 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO34 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO34 = 3; // GPIO34 = XREADY
GpioDataRegs.GPBSET.bit.GPIO34 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO34 = 0; // Clear output
//
// GPIO35 - XR/nW
GpioCtrlRegs.GPBPUD.bit.GPIO35 = 0; // Enable pullup on GPIO35
GpioCtrlRegs.GPBDIR.bit.GPIO35 = 1; // GPIO35 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO35 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO35 = 3; // GPIO35 = XR/nW
GpioDataRegs.GPBSET.bit.GPIO35 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO35 = 0; // Clear output
//
// GPIO36 - nXZCS0
GpioCtrlRegs.GPBPUD.bit.GPIO36 = 0; // Enable pullup on GPIO36
GpioCtrlRegs.GPBDIR.bit.GPIO36 = 1; // GPIO36 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO36 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO36 = 3; // GPIO36 = nXZCS0
GpioDataRegs.GPBSET.bit.GPIO36 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO36 = 0; // Clear output
//
// GPIO28 - nXZCS6
GpioCtrlRegs.GPAPUD.bit.GPIO28 = 0; // Enable pullup on GPIO28
GpioCtrlRegs.GPADIR.bit.GPIO28 = 1; // GPIO28 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL2.bit.GPIO28 = 0; // Asynch input
GpioCtrlRegs.GPAMUX2.bit.GPIO28 = 3; // GPIO28 = nXZCS6
GpioDataRegs.GPASET.bit.GPIO28 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO28 = 0; // Clear output
//
// GPIO37 - nXZCS7
GpioCtrlRegs.GPBPUD.bit.GPIO37 = 0; // Enable pullup on GPIO37
GpioCtrlRegs.GPBDIR.bit.GPIO37 = 1; // GPIO37 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO37 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO37 = 3; // GPIO37 = nXZCS7
GpioDataRegs.GPBSET.bit.GPIO37 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO37 = 0; // Clear output
//
// GPIO38 - nXWE0
GpioCtrlRegs.GPBPUD.bit.GPIO38 = 0; // Enable pullup on GPIO38
GpioCtrlRegs.GPBDIR.bit.GPIO38 = 1; // GPIO38 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO38 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO38 = 3; // GPIO38 = nXWE0
GpioDataRegs.GPBSET.bit.GPIO38 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO38 = 0; // Clear output
//
// GPIO39 - XA16
GpioCtrlRegs.GPBPUD.bit.GPIO39 = 0; // Enable pullup on GPIO39
GpioCtrlRegs.GPBDIR.bit.GPIO39 = 0; // GPIO39 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO39 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // GPIO39 = XA16
GpioDataRegs.GPBSET.bit.GPIO39 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO39 = 0; // Clear output
//
// GPIO40 - XA0
GpioCtrlRegs.GPBPUD.bit.GPIO40 = 0; // Enable pullup on GPIO40
GpioCtrlRegs.GPBDIR.bit.GPIO40 = 0; // GPIO40 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO40 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO40 = 3; // GPIO40 = XA0
GpioDataRegs.GPBSET.bit.GPIO40 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO40 = 0; // Clear output
//
// GPIO41 - XA1
GpioCtrlRegs.GPBPUD.bit.GPIO41 = 0; // Enable pullup on GPIO41
GpioCtrlRegs.GPBDIR.bit.GPIO41 = 0; // GPIO41 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO41 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO41 = 3; // GPIO41 = XA1
GpioDataRegs.GPBSET.bit.GPIO41 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO41 = 0; // Clear output
//
// GPIO42 - XA2
GpioCtrlRegs.GPBPUD.bit.GPIO42 = 0; // Enable pullup on GPIO42
GpioCtrlRegs.GPBDIR.bit.GPIO42 = 0; // GPIO42 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO42 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO42 = 3; // GPIO42 = XA2
GpioDataRegs.GPBSET.bit.GPIO42 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO42 = 0; // Clear output
//
// GPIO43 - XA3
GpioCtrlRegs.GPBPUD.bit.GPIO43 = 0; // Enable pullup on GPIO43
GpioCtrlRegs.GPBDIR.bit.GPIO43 = 0; // GPIO43 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO43 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO43 = 3; // GPIO43 = XA3
GpioDataRegs.GPBSET.bit.GPIO43 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO43 = 0; // Clear output
//
// GPIO44 - XA4
GpioCtrlRegs.GPBPUD.bit.GPIO44 = 0; // Enable pullup on GPIO44
GpioCtrlRegs.GPBDIR.bit.GPIO44 = 0; // GPIO44 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO44 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO44 = 3; // GPIO44 = XA4
GpioDataRegs.GPBSET.bit.GPIO44 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO44 = 0; // Clear output
//
// GPIO45 - XA5
GpioCtrlRegs.GPBPUD.bit.GPIO45 = 0; // Enable pullup on GPIO45
GpioCtrlRegs.GPBDIR.bit.GPIO45 = 0; // GPIO45 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO45 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO45 = 3; // GPIO45 = XA5
GpioDataRegs.GPBSET.bit.GPIO45 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO45 = 0; // Clear output
//
// GPIO46 - XA6
GpioCtrlRegs.GPBPUD.bit.GPIO46 = 0; // Enable pullup on GPIO46
GpioCtrlRegs.GPBDIR.bit.GPIO46 = 0; // GPIO46 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO46 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO46 = 3; // GPIO46 = XA6
GpioDataRegs.GPBSET.bit.GPIO46 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO46 = 0; // Clear output
//
// GPIO47 - XA7
GpioCtrlRegs.GPBPUD.bit.GPIO47 = 0; // Enable pullup on GPIO47
GpioCtrlRegs.GPBDIR.bit.GPIO47 = 0; // GPIO47 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO47 = 0; // Asynch input
GpioCtrlRegs.GPBMUX1.bit.GPIO47 = 3; // GPIO47 = XA7
GpioDataRegs.GPBSET.bit.GPIO47 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO47 = 0; // Clear output
//
// GPIO80 - XA8
GpioCtrlRegs.GPCPUD.bit.GPIO80 = 0; // Enable pullup on GPIO80
GpioCtrlRegs.GPCDIR.bit.GPIO80 = 0; // GPIO80 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO80 = 2; // GPIO80 = XA8
GpioDataRegs.GPCSET.bit.GPIO80 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO80 = 0; // Clear output
//
// GPIO81 - XA9
GpioCtrlRegs.GPCPUD.bit.GPIO81 = 0; // Enable pullup on GPIO81
GpioCtrlRegs.GPCDIR.bit.GPIO81 = 0; // GPIO81 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO81 = 2; // GPIO81 = XA9
GpioDataRegs.GPCSET.bit.GPIO81 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO81 = 0; // Clear output
//
// GPIO82 - XA10
GpioCtrlRegs.GPCPUD.bit.GPIO82 = 0; // Enable pullup on GPIO82
GpioCtrlRegs.GPCDIR.bit.GPIO82 = 0; // GPIO82 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO82 = 2; // GPIO82 = XA10
GpioDataRegs.GPCSET.bit.GPIO82 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO82 = 0; // Clear output
//
// GPIO83 - XA11
GpioCtrlRegs.GPCPUD.bit.GPIO83 = 0; // Enable pullup on GPIO83
GpioCtrlRegs.GPCDIR.bit.GPIO83 = 0; // GPIO83 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO83 = 2; // GPIO83 = XA11
GpioDataRegs.GPCSET.bit.GPIO83 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO83 = 0; // Clear output
//
// GPIO84 - XA12
GpioCtrlRegs.GPCPUD.bit.GPIO84 = 0; // Enable pullup on GPIO84
GpioCtrlRegs.GPCDIR.bit.GPIO84 = 0; // GPIO84 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO84 = 2; // GPIO84 = XA12
GpioDataRegs.GPCSET.bit.GPIO84 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO84 = 0; // Clear output
//
// GPIO85 - XA13
GpioCtrlRegs.GPCPUD.bit.GPIO85 = 0; // Enable pullup on GPIO85
GpioCtrlRegs.GPCDIR.bit.GPIO85 = 0; // GPIO85 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO85 = 2; // GPIO85 = XA13
GpioDataRegs.GPCSET.bit.GPIO85 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO85 = 0; // Clear output
//
// GPIO86 - XA14
GpioCtrlRegs.GPCPUD.bit.GPIO86 = 0; // Enable pullup on GPIO86
GpioCtrlRegs.GPCDIR.bit.GPIO86 = 0; // GPIO86 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO86 = 2; // GPIO86 = XA14
GpioDataRegs.GPCSET.bit.GPIO86 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO86 = 0; // Clear output
//
// GPIO87 - XA15
GpioCtrlRegs.GPCPUD.bit.GPIO87 = 0; // Enable pullup on GPIO87
GpioCtrlRegs.GPCDIR.bit.GPIO87 = 0; // GPIO87 = 0/1 - input/output
GpioCtrlRegs.GPCMUX2.bit.GPIO87 = 2; // GPIO87 = XA15
GpioDataRegs.GPCSET.bit.GPIO87 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO87 = 0; // Clear output
//
// GPIO39 - XA16
GpioCtrlRegs.GPBPUD.bit.GPIO39 = 0; // Enable pullup on GPIO39
GpioCtrlRegs.GPBDIR.bit.GPIO39 = 0; // GPIO39 = 0/1 - input/output
GpioCtrlRegs.GPBMUX1.bit.GPIO39 = 3; // GPIO39 = XA16
GpioDataRegs.GPBSET.bit.GPIO39 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO39 = 0; // Clear output
//
// GPIO31 - XA17
GpioCtrlRegs.GPAPUD.bit.GPIO31 = 0; // Enable pullup on GPIO31
GpioCtrlRegs.GPADIR.bit.GPIO31 = 0; // GPIO31 = 0/1 - input/output
GpioCtrlRegs.GPAMUX2.bit.GPIO31 = 3; // GPIO31 = XA17
GpioDataRegs.GPASET.bit.GPIO31 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO31 = 0; // Clear output
//
// GPIO30 - XA18
GpioCtrlRegs.GPAPUD.bit.GPIO30 = 0; // Enable pullup on GPIO30
GpioCtrlRegs.GPADIR.bit.GPIO30 = 0; // GPIO30 = 0/1 - input/output
GpioCtrlRegs.GPAMUX2.bit.GPIO30 = 3; // GPIO30 = XA18
GpioDataRegs.GPASET.bit.GPIO30 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO30 = 0; // Clear output
// GPIO29 - XA19
GpioCtrlRegs.GPAPUD.bit.GPIO29 = 0; // Enable pullup on GPIO29
GpioCtrlRegs.GPADIR.bit.GPIO29 = 0; // GPIO29 = 0/1 - input/output
GpioCtrlRegs.GPAMUX2.bit.GPIO29 = 3; // GPIO29 = XA19
GpioDataRegs.GPASET.bit.GPIO29 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO29 = 0; // Clear output
//
// GPIO64 - XD15
GpioCtrlRegs.GPCPUD.bit.GPIO64 = 0; // Enable pullup on GPIO64
GpioCtrlRegs.GPCDIR.bit.GPIO64 = 0; // GPIO64 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO64 = 2; // GPIO64 = XD
GpioDataRegs.GPCSET.bit.GPIO64 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO64 = 0; // Clear output
//
// GPIO65 - XD14
GpioCtrlRegs.GPCPUD.bit.GPIO65 = 0; // Enable pullup on GPIO65
GpioCtrlRegs.GPCDIR.bit.GPIO65 = 0; // GPIO65 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO65 = 2; // GPIO65 = XD14
GpioDataRegs.GPCSET.bit.GPIO65 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO65 = 0; // Clear output
//
// GPIO66 - XD13
GpioCtrlRegs.GPCPUD.bit.GPIO66 = 0; // Enable pullup on GPIO66
GpioCtrlRegs.GPCDIR.bit.GPIO66 = 0; // GPIO66 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO66 = 2; // GPIO66 = XD13
GpioDataRegs.GPCSET.bit.GPIO66 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO66 = 0; // Clear output
//
// GPIO67 - XD12
GpioCtrlRegs.GPCPUD.bit.GPIO67 = 0; // Enable pullup on GPIO67
GpioCtrlRegs.GPCDIR.bit.GPIO67 = 0; // GPIO67 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO67 = 2; // GPIO67 = XD12
GpioDataRegs.GPCSET.bit.GPIO67 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO67 = 0; // Clear output
//
// GPIO68 - XD11
GpioCtrlRegs.GPCPUD.bit.GPIO68 = 0; // Enable pullup on GPIO68
GpioCtrlRegs.GPCDIR.bit.GPIO68 = 0; // GPIO68 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO68 = 2; // GPIO68 = XD11
GpioDataRegs.GPCSET.bit.GPIO68 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO68 = 0; // Clear output
//
// GPIO69 - XD10
GpioCtrlRegs.GPCPUD.bit.GPIO69 = 0; // Enable pullup on GPIO69
GpioCtrlRegs.GPCDIR.bit.GPIO69 = 0; // GPIO69 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO69 = 2; // GPIO69 = XD10
GpioDataRegs.GPCSET.bit.GPIO69 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO69 = 0; // Clear output
//
// GPIO70 - XD9
GpioCtrlRegs.GPCPUD.bit.GPIO70 = 0; // Enable pullup on GPIO70
GpioCtrlRegs.GPCDIR.bit.GPIO70 = 0; // GPIO70 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO70 = 2; // GPIO70 = XD9
GpioDataRegs.GPCSET.bit.GPIO70 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO70 = 0; // Clear output
//
// GPIO71 - XD8
GpioCtrlRegs.GPCPUD.bit.GPIO71 = 0; // Enable pullup on GPIO71
GpioCtrlRegs.GPCDIR.bit.GPIO71 = 0; // GPIO71 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO71 = 2; // GPIO71 = XD8
GpioDataRegs.GPCSET.bit.GPIO71 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO71 = 0; // Clear output
//
// GPIO72 - XD7
GpioCtrlRegs.GPCPUD.bit.GPIO72 = 0; // Enable pullup on GPIO72
GpioCtrlRegs.GPCDIR.bit.GPIO72 = 0; // GPIO72 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO72 = 2; // GPIO72 = XD7
GpioDataRegs.GPCSET.bit.GPIO72 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO72 = 0; // Clear output
//
// GPIO73 - XD6
GpioCtrlRegs.GPCPUD.bit.GPIO73 = 0; // Enable pullup on GPIO73
GpioCtrlRegs.GPCDIR.bit.GPIO73 = 0; // GPIO73 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO73 = 2; // GPIO73 = XD6
GpioDataRegs.GPCSET.bit.GPIO73 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO73 = 0; // Clear output
//
// GPIO74 - XD5
GpioCtrlRegs.GPCPUD.bit.GPIO74 = 0; // Enable pullup on GPIO74
GpioCtrlRegs.GPCDIR.bit.GPIO74 = 0; // GPIO74 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO74 = 2; // GPIO74 = XD5
GpioDataRegs.GPCSET.bit.GPIO74 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO74 = 0; // Clear output
//
// GPIO75 - XD4
GpioCtrlRegs.GPCPUD.bit.GPIO75 = 0; // Enable pullup on GPIO75
GpioCtrlRegs.GPCDIR.bit.GPIO75 = 0; // GPIO75 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO75 = 2; // GPIO75 = XD4
GpioDataRegs.GPCSET.bit.GPIO75 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO75 = 0; // Clear output
//
// GPIO76 - XD3
GpioCtrlRegs.GPCPUD.bit.GPIO76 = 0; // Enable pullup on GPIO76
GpioCtrlRegs.GPCDIR.bit.GPIO76 = 0; // GPIO76 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO76 = 2; // GPIO76 = XD3
GpioDataRegs.GPCSET.bit.GPIO76 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO76 = 0; // Clear output
//
// GPIO77 - XD2
GpioCtrlRegs.GPCPUD.bit.GPIO77 = 0; // Enable pullup on GPIO77
GpioCtrlRegs.GPCDIR.bit.GPIO77 = 0; // GPIO77 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO77 = 2; // GPIO77 = XD2
GpioDataRegs.GPCSET.bit.GPIO77 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO77 = 0; // Clear output
//
// GPIO78 - XD1
GpioCtrlRegs.GPCPUD.bit.GPIO78 = 0; // Enable pullup on GPIO78
GpioCtrlRegs.GPCDIR.bit.GPIO78 = 0; // GPIO78 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO78 = 2; // GPIO78 = XD1
GpioDataRegs.GPCSET.bit.GPIO78 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO78 = 0; // Clear output
//
// GPIO79 - XD0
GpioCtrlRegs.GPCPUD.bit.GPIO79 = 0; // Enable pullup on GPIO79
GpioCtrlRegs.GPCDIR.bit.GPIO79 = 0; // GPIO79 = 0/1 - input/output
GpioCtrlRegs.GPCMUX1.bit.GPIO79 = 2; // GPIO79 = XD0
GpioDataRegs.GPCSET.bit.GPIO79 = 0; //
GpioDataRegs.GPCCLEAR.bit.GPIO79 = 0; // Clear output
//
EDIS;
//
}//
//
void GPIO::gpio_xintf_32bit_setup()
{}//
//
void GPIO::gpio_dicrete_outputs_setup()
{
EALLOW;
//
// GPIO1
GpioCtrlRegs.GPAMUX1.bit.GPIO1 = 0; // GPIO1
GpioCtrlRegs.GPAPUD.bit.GPIO1 = 1; // Enable pullup on GPIO1
GpioCtrlRegs.GPADIR.bit.GPIO1 = 1; // GPIO1 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO1 = 0; // Asynch input
GpioDataRegs.GPASET.bit.GPIO1 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO1 = 0; // Clear output
//
// GPIO2
GpioCtrlRegs.GPAMUX1.bit.GPIO2 = 0; // GPIO2
GpioCtrlRegs.GPAPUD.bit.GPIO2 = 1; // Enable pullup on GPIO2
GpioCtrlRegs.GPADIR.bit.GPIO2 = 1; // GPIO2 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO2 = 0; // Asynch input
GpioDataRegs.GPASET.bit.GPIO2 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO2 = 0; // Clear output
//
// GPIO3
GpioCtrlRegs.GPAMUX1.bit.GPIO3 = 0; // GPIO3
GpioCtrlRegs.GPAPUD.bit.GPIO3 = 1; // Enable pullup on GPIO3
GpioCtrlRegs.GPADIR.bit.GPIO3 = 1; // GPIO3 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO3 = 0; // Asynch input
GpioDataRegs.GPASET.bit.GPIO3 = 0; //
GpioDataRegs.GPACLEAR.bit.GPIO3 = 0; // Clear output
//
//
// GPIO54
GpioCtrlRegs.GPBMUX2.bit.GPIO54 = 0; // GPIO54
GpioCtrlRegs.GPBPUD.bit.GPIO54 = 0; // Enable pullup on GPIO54
GpioCtrlRegs.GPBDIR.bit.GPIO54 = 1; // GPIO54 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL2.bit.GPIO54 = 0; // Asynch input
GpioDataRegs.GPBSET.bit.GPIO54 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO54 = 0; // Clear output
//
// GPIO56
GpioCtrlRegs.GPBMUX2.bit.GPIO56 = 0; // GPIO56
GpioCtrlRegs.GPBPUD.bit.GPIO56 = 0; // Enable pullup on GPIO56
GpioCtrlRegs.GPBDIR.bit.GPIO56 = 1; // GPIO56 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL2.bit.GPIO56 = 0; // Asynch input
GpioDataRegs.GPBSET.bit.GPIO56 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO56 = 0; // Clear output
//
// GPIO57
GpioCtrlRegs.GPBMUX2.bit.GPIO57 = 0; // GPIO57
GpioCtrlRegs.GPBPUD.bit.GPIO57 = 0; // Enable pullup on GPIO57
GpioCtrlRegs.GPBDIR.bit.GPIO57 = 1; // GPIO57 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL2.bit.GPIO57 = 0; // Asynch input
GpioDataRegs.GPBSET.bit.GPIO57 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO57 = 0; // Clear output
//
// GPIO58
GpioCtrlRegs.GPBMUX2.bit.GPIO58 = 0; // GPIO58
GpioCtrlRegs.GPBPUD.bit.GPIO58 = 0; // Enable pullup on GPIO58
GpioCtrlRegs.GPBDIR.bit.GPIO58 = 1; // GPIO58 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL2.bit.GPIO58 = 0; // Asynch input
GpioDataRegs.GPBSET.bit.GPIO58 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO58 = 0; // Clear output
//
// GPIO61
GpioCtrlRegs.GPBMUX2.bit.GPIO61 = 0; // GPIO61
GpioCtrlRegs.GPBPUD.bit.GPIO61 = 0; // Enable pullup on GPIO61
GpioCtrlRegs.GPBDIR.bit.GPIO61 = 1; // GPIO61 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL2.bit.GPIO61 = 0; // Asynch input
GpioDataRegs.GPBSET.bit.GPIO61 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO61 = 0; // Clear output
//
EDIS;
//
}//
//
void GPIO::ext_adc_start_convertion_setup()
{
EALLOW;
// GPIO33
GpioCtrlRegs.GPBMUX1.bit.GPIO33 = 0; // GPIO33
GpioCtrlRegs.GPBPUD.bit.GPIO33 = 0; // Enable pullup on GPIO33
GpioCtrlRegs.GPBDIR.bit.GPIO33 = 1; // GPIO33 = 0/1 - input/output
GpioCtrlRegs.GPBQSEL1.bit.GPIO33 = 0; // Asynch input
GpioDataRegs.GPBSET.bit.GPIO33 = 0; //
GpioDataRegs.GPBCLEAR.bit.GPIO33 = 0; // Clear output
//
EDIS;
//
}//
//
void GPIO::set_ext_adc_start_convertion()
{
//set GPIO33
GpioDataRegs.GPBSET.bit.GPIO33 = 1;
//
//
}//
//
void GPIO::clear_ext_adc_start_convertion()
{
//clear GPIO33
GpioDataRegs.GPBCLEAR.bit.GPIO33 = 1;
//
}//
//
void GPIO::gpio_hard_fault_setup()
{
EALLOW;
// GPIO4 - Fault A
GpioCtrlRegs.GPAMUX1.bit.GPIO4 = 0; // GPIO4
GpioCtrlRegs.GPAPUD.bit.GPIO4 = 0; // Enable pullup on GPIO4
GpioCtrlRegs.GPADIR.bit.GPIO4 = 0; // GPIO4 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO4 = 0; // Asynch input
//
// GPIO6 - Fault B
GpioCtrlRegs.GPAMUX1.bit.GPIO6 = 0; // GPIO6
GpioCtrlRegs.GPAPUD.bit.GPIO6 = 0; // Enable pullup on GPIO6
GpioCtrlRegs.GPADIR.bit.GPIO6 = 0; // GPIO6 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO6 = 0; // Asynch input
//
// GPIO8 - Fault C
GpioCtrlRegs.GPAMUX1.bit.GPIO8 = 0; // GPIO8
GpioCtrlRegs.GPAPUD.bit.GPIO8 = 0; // Enable pullup on GPIO8
GpioCtrlRegs.GPADIR.bit.GPIO8 = 0; // GPIO8 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO8 = 0; // Asynch input
//
EDIS;
//
}//
//
// #pragma CODE_SECTION("ramfuncs");
void GPIO::gpio_hard_fault_read(uint16_t& data)
{
data = (uint16_t)((GpioDataRegs.GPADAT.bit.GPIO8 == 1 ? 0x4 : 0x0) |
(GpioDataRegs.GPADAT.bit.GPIO6 == 1 ? 0x2 : 0x0) |
(GpioDataRegs.GPADAT.bit.GPIO4 == 1 ? 0x1 : 0x0));
//
}//
//
//
// Analog Alarm Current Sensors
void GPIO::gpio_analog_fault_setup()
{
EALLOW;
// GPIO12 - Analog Alarm 21
GpioCtrlRegs.GPAMUX1.bit.GPIO12 = 0; // GPIO12
GpioCtrlRegs.GPAPUD.bit.GPIO12 = 0; // Enable pullup on GPIO12
GpioCtrlRegs.GPADIR.bit.GPIO12 = 0; // GPIO4 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO12 = 0; // Asynch input
//
// GPIO13 - Analog Alarm 22
GpioCtrlRegs.GPAMUX1.bit.GPIO13 = 0; // GPIO13
GpioCtrlRegs.GPAPUD.bit.GPIO13 = 0; // Enable pullup on GPIO13
GpioCtrlRegs.GPADIR.bit.GPIO13 = 0; // GPIO13 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL1.bit.GPIO13 = 0; // Asynch input
//
// GPIO20 - Analog Alarm 20
GpioCtrlRegs.GPAMUX2.bit.GPIO20 = 0; // GPIO20
GpioCtrlRegs.GPAPUD.bit.GPIO20 = 0; // Enable pullup on GPIO20
GpioCtrlRegs.GPADIR.bit.GPIO20 = 0; // GPIO20 = 0/1 - input/output
GpioCtrlRegs.GPAQSEL2.bit.GPIO20 = 0; // Asynch input
//
EDIS;
//
//
}//
//
// #pragma CODE_SECTION("ramfuncs");
void GPIO::gpio_analog_fault_read(uint16_t& data)
{
data = (uint16_t)((GpioDataRegs.GPADAT.bit.GPIO12 == 1 ? 0x4 : 0x0) |
(GpioDataRegs.GPADAT.bit.GPIO13 == 1 ? 0x2 : 0x0) |
(GpioDataRegs.GPADAT.bit.GPIO20 == 1 ? 0x1 : 0x0));
//
}//
//
} /* namespace DSP28335 */