//-------------------------------------------------------// // Project Code : ALE300K03-21-LGE-GEN2.0-BE-CPU1 // File Name : DigitalIO.cpp // Created on : 2022. 10. 30. // Description : // Author : KimJeongWoo // Last modified Date : //-------------------------------------------------------// #include "CommonLib.h" struct sDin Din; struct sDOUT Dout; int FlagWrDioExor = 0; int FlagRstDioExor = 0; long int BufferDoutExorAll = 0; void InitDigitalIOSet() { memset(&Din, 0, (sizeof(Din) / sizeof(int))); memset(&Dout, 0, (sizeof(Dout) / sizeof(int))); ResetDioExor(); // ReadDioExor(); InitDigitalInput(); InitDigitalOutput(); DigitalInput(); DigitalOutput(); } void InitDigitalInput() { //Din0 GPIO_setMasterCore(0, GPIO_CORE_CPU1); GPIO_setPadConfig(0, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_0_GPIO0); GPIO_setQualificationMode(0, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(0, GPIO_DIR_MODE_IN); //Din1 GPIO_setMasterCore(1, GPIO_CORE_CPU1); GPIO_setPadConfig(1, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_1_GPIO1); GPIO_setQualificationMode(1, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(1, GPIO_DIR_MODE_IN); //Din16 GPIO_setMasterCore(16, GPIO_CORE_CPU1); GPIO_setPadConfig(16, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_16_GPIO16); GPIO_setQualificationMode(16, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(16, GPIO_DIR_MODE_IN); //Din17 GPIO_setMasterCore(17, GPIO_CORE_CPU1); GPIO_setPadConfig(17, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_17_GPIO17); GPIO_setQualificationMode(17, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(17, GPIO_DIR_MODE_IN); //Din18 GPIO_setMasterCore(18, GPIO_CORE_CPU1); GPIO_setPadConfig(18, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_18_GPIO18); GPIO_setQualificationMode(18, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(18, GPIO_DIR_MODE_IN); //Din19 GPIO_setMasterCore(19, GPIO_CORE_CPU1); GPIO_setPadConfig(19, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_19_GPIO19); GPIO_setQualificationMode(19, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(19, GPIO_DIR_MODE_IN); //Din20 GPIO_setMasterCore(20, GPIO_CORE_CPU1); GPIO_setPadConfig(20, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_20_GPIO20); GPIO_setQualificationMode(20, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(20, GPIO_DIR_MODE_IN); //Din21 GPIO_setMasterCore(21, GPIO_CORE_CPU1); GPIO_setPadConfig(21, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_21_GPIO21); GPIO_setQualificationMode(21, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(21, GPIO_DIR_MODE_IN); //Din22 GPIO_setMasterCore(22, GPIO_CORE_CPU1); GPIO_setPadConfig(22, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_22_GPIO22); GPIO_setQualificationMode(22, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(22, GPIO_DIR_MODE_IN); //Din23 GPIO_setMasterCore(23, GPIO_CORE_CPU1); GPIO_setPadConfig(23, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_23_GPIO23); GPIO_setQualificationMode(23, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(23, GPIO_DIR_MODE_IN); //Din24 GPIO_setMasterCore(24, GPIO_CORE_CPU1); GPIO_setPadConfig(24, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_24_GPIO24); GPIO_setQualificationMode(24, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(24, GPIO_DIR_MODE_IN); //Din25 GPIO_setMasterCore(25, GPIO_CORE_CPU1); GPIO_setPadConfig(25, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_25_GPIO25); GPIO_setQualificationMode(25, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(25, GPIO_DIR_MODE_IN); //Din26 GPIO_setMasterCore(26, GPIO_CORE_CPU1); GPIO_setPadConfig(26, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_26_GPIO26); GPIO_setQualificationMode(26, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(26, GPIO_DIR_MODE_IN); //Din27 GPIO_setMasterCore(27, GPIO_CORE_CPU1); GPIO_setPadConfig(27, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_27_GPIO27); GPIO_setQualificationMode(27, GPIO_QUAL_ASYNC); GPIO_setDirectionMode(27, GPIO_DIR_MODE_IN); } void InitDigitalOutput() { //Dout0 GPIO_setMasterCore(32, GPIO_CORE_CPU1); GPIO_setPadConfig(32, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_32_GPIO32); GPIO_setDirectionMode(32, GPIO_DIR_MODE_OUT); GPIO_writePin(32, 0); //Dout1 GPIO_setMasterCore(33, GPIO_CORE_CPU1); GPIO_setPadConfig(33, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_33_GPIO33); GPIO_setDirectionMode(33, GPIO_DIR_MODE_OUT); GPIO_writePin(33, 0); //Dout2 GPIO_setMasterCore(34, GPIO_CORE_CPU1); GPIO_setPadConfig(34, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_34_GPIO34); GPIO_setDirectionMode(34, GPIO_DIR_MODE_OUT); GPIO_writePin(34, 0); //Dout3 GPIO_setMasterCore(35, GPIO_CORE_CPU1); GPIO_setPadConfig(35, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_35_GPIO35); GPIO_setDirectionMode(35, GPIO_DIR_MODE_OUT); GPIO_writePin(35, 0); //Dout4 GPIO_setMasterCore(36, GPIO_CORE_CPU1); GPIO_setPadConfig(36, GPIO_PIN_TYPE_PULLUP); GPIO_setPinConfig(GPIO_36_GPIO36); GPIO_setDirectionMode(36, GPIO_DIR_MODE_OUT); GPIO_writePin(36, 0); } Uint16 TestDin; void DigitalInput() { Din.DataRaw.all = HWREG(GPIODATA_BASE + 0x00); //16-bit HWREGH -> 32-bit HWREG Din.Data.all = Din.DataRaw.all ^ ~Din.Exor.all; } void DigitalOutput() { HWREGH(GPIODATA_BASE + 0x8) = ~(Dout.Data.all ^ Dout.Exor.all); } // void ReadDioExor(void) { // Din.Exor.all = NV.Din.Exor.all; // Dout.Exor.all = NV.Dout.Exor.all; } // void WriteDioExor(void) { // NV.Din.Exor.all = Din.Exor.all; // NV.Dout.Exor.all = Dout.Exor.all; } void ResetDioExor() { // 0, A접점(NO, Normal Open) // 1, B접점(NC, Normal Close) Din.Exor.bit.Button = NORMAL_OPEN; Din.Exor.bit.Door_chk = NORMAL_CLOSE; Din.Exor.bit.FT_CH1_IR = NORMAL_OPEN; Din.Exor.bit.FT_CH1_VIS = NORMAL_OPEN; Din.Exor.bit.FT_CH1_UV = NORMAL_OPEN; Din.Exor.bit.FT_CH2_IR = NORMAL_OPEN; Din.Exor.bit.FT_CH2_VIS = NORMAL_OPEN; Din.Exor.bit.FT_CH2_UV = NORMAL_OPEN; Din.Exor.bit.FT_CH3_IR = NORMAL_OPEN; Din.Exor.bit.FT_CH3_VIS = NORMAL_OPEN; Din.Exor.bit.FT_CH3_UV = NORMAL_OPEN; Din.Exor.bit.FT_CH4_IR = NORMAL_OPEN; Din.Exor.bit.FT_CH4_VIS = NORMAL_OPEN; Din.Exor.bit.FT_CH4_UV = NORMAL_OPEN; }