This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

How to handle the pin state which shared in two modules

Other Parts Discussed in Thread: HALCOGEN

I'm developing on TMS5570LS20216, and using HALCoGen 2.09.000 .
Take two pins as an example,MIBSPI5SOMI[1]/DMMDATA[13] pin and DMMDATA[0] pin. DMMDATA[13] is shared in DMM module and SPI5 module,
DMMDATA[0] is only used in dmm module.
And i configure DMMDATA[13] and DMMDATA[0] works in GIO mode, output, Open Drain disabled,pull functionality disabled.
DMMDATA[0] is configured in DMM registers, DMMDATA[13] is configured same in DMM and SPI5 registers.
Then i use DMM module PC4(Data Output Set Register) register and PC5(Data Output Clear Register) register to
control DMMDATA[0]/DMMDATA[13] pin output state. As expected, DMMDATA[0] pin state can works well. But DMMDATA[13] pin state can't works well, its output
state can't be controlled by DMM PC4 and PC5. so, what's the problem and how to solve ?
Here i attached the related code for your analysis:
void main(void)
{
dmmInit();
spiInit();

dmm_Clear_570ReadyPin_Low();
dmm_Set_570ReadyPin_High();
dmm_570AsSPISlave_Clear_EnablePin_Low();
dmm_570AsSPISlave_Set_EnablePin_High();

while(1)
{}
}


void dmm_Clear_570ReadyPin_Low(void)
{
 dmmREG->PC5 = 0x00008000;
}

void dmm_Set_570ReadyPin_High(void)
{
 dmmREG->PC4 = 0x00008000;
}

void dmm_570AsSPISlave_Set_EnablePin_High(void)
{
 dmmREG->PC4 = 0x00000004;
}

void dmm_570AsSPISlave_Clear_EnablePin_Low(void)
{
 dmmREG->PC5 = 0x00000004;
}


void dmmInit(void)
{
    /** @b initalise @b DMM @b Port */
    dmmREG->PC3 =  0           /* DMM SYNC */
             | (0 << 1)     /* DMM CLK */
             | (1 << 2)     /* DATA[0] */
                | (0 << 3)     /* DATA[1] */
                | (0 << 4)     /* DATA[2] */
                | (0 << 5)     /* DATA[3] */
                | (0 << 6)     /* DATA[4] */
                | (0 << 7)     /* DATA[5] */
                | (0 << 8)     /* DATA[6] */
                | (0 << 9)     /* DATA[7] */
                | (0 << 10)     /* DATA[8] */
                | (0 << 11)     /* DATA[9] */
                | (0 << 12)    /* DATA[10] */
                | (0 << 13)    /* DATA[11] */
                | (0 << 14)    /* DATA[12] */
                | (1 << 15)    /* DATA[13] */
                | (0 << 16)    /* DATA[14] */
                | (0 << 17)    /* DATA[15] */
                | (0 << 18);   /* DMM ENA */

    /** - DMM Port direction */
    dmmREG->PC1 = 0           /* DMM SYNC */
    | (0 << 1)     /* DMM CLK */
    | (1 << 2)     /* DATA[0] */
    | (0 << 3)     /* DATA[1] */
    | (0 << 4)     /* DATA[2] */
    | (0 << 5)     /* DATA[3] */
    | (0 << 6)     /* DATA[4] */
    | (0 << 7)     /* DATA[5] */
    | (0 << 8)     /* DATA[6] */
    | (0 << 9)     /* DATA[7] */
    | (0 << 10)     /* DATA[8] */
    | (0 << 11)     /* DATA[9] */
    | (0 << 12)    /* DATA[10] */
    | (0 << 13)    /* DATA[11] */
    | (0 << 14)    /* DATA[12] */
    | (1 << 15)    /* DATA[13] */
    | (0 << 16)    /* DATA[14] */
    | (0 << 17)    /* DATA[15] */
    | (0 << 18);   /* DMM ENA */

    /** - DMM Port open drain enable */
    dmmREG->PC6 =  0           /* DMM SYNC */
    | (0 << 1)     /* DMM CLK */
    | (0 << 2)     /* DATA[0] */
    | (0 << 3)     /* DATA[1] */
    | (0 << 4)     /* DATA[2] */
    | (0 << 5)     /* DATA[3] */
    | (0 << 6)     /* DATA[4] */
    | (0 << 7)     /* DATA[5] */
    | (0 << 8)     /* DATA[6] */
    | (0 << 9)     /* DATA[7] */
    | (0 << 10)     /* DATA[8] */
    | (0 << 11)     /* DATA[9] */
    | (0 << 12)    /* DATA[10] */
    | (0 << 13)    /* DATA[11] */
    | (0 << 14)    /* DATA[12] */
    | (0 << 15)    /* DATA[13] */
    | (0 << 16)    /* DATA[14] */
    | (0 << 17)    /* DATA[15] */
    | (0 << 18);   /* DMM ENA */

    /** - DMM Port pullup / pulldown selection */
    dmmREG->PC8 =  0           /* DMM SYNC */
    | (0 << 1)     /* DMM CLK */
    | (0 << 2)     /* DATA[0] */
    | (0 << 3)     /* DATA[1] */
    | (0 << 4)     /* DATA[2] */
    | (0 << 5)     /* DATA[3] */
    | (0 << 6)     /* DATA[4] */
    | (0 << 7)     /* DATA[5] */
    | (0 << 8)     /* DATA[6] */
    | (0 << 9)     /* DATA[7] */
    | (0 << 10)     /* DATA[8] */
    | (0 << 11)     /* DATA[9] */
    | (0 << 12)    /* DATA[10] */
    | (0 << 13)    /* DATA[11] */
    | (0 << 14)    /* DATA[12] */
    | (0 << 15)    /* DATA[13] */
    | (0 << 16)    /* DATA[14] */
    | (0 << 17)    /* DATA[15] */
    | (0 << 18);   /* DMM ENA */

    /** - DMM Port pullup / pulldown enable*/
    dmmREG->PC7 =  1           /* DMM SYNC */
    | (1 << 1)     /* DMM CLK */
    | (1 << 2)     /* DATA[0] */
    | (1 << 3)     /* DATA[1] */
    | (1 << 4)     /* DATA[2] */
    | (1 << 5)     /* DATA[3] */
    | (1 << 6)     /* DATA[4] */
    | (1 << 7)     /* DATA[5] */
    | (1 << 8)     /* DATA[6] */
    | (1 << 9)     /* DATA[7] */
    | (1 << 10)     /* DATA[8] */
    | (1 << 11)     /* DATA[9] */
    | (1 << 12)    /* DATA[10] */
    | (1 << 13)    /* DATA[11] */
    | (1 << 14)    /* DATA[12] */
    | (1 << 15)    /* DATA[13] */
    | (1 << 16)    /* DATA[14] */
    | (1 << 17)    /* DATA[15] */
    | (1 << 18);   /* DMM ENA */

    /* DMM set all pins to functional */
    dmmREG->PC0 = 0           /* DMM SYNC */
    | (0 << 1)     /* DMM CLK */
    | (0 << 2)     /* DATA[0] */
    | (0 << 3)     /* DATA[1] */
    | (0 << 4)     /* DATA[2] */
    | (0 << 5)     /* DATA[3] */
    | (0 << 6)     /* DATA[4] */
    | (0 << 7)     /* DATA[5] */
    | (0 << 8)     /* DATA[6] */
    | (0 << 9)     /* DATA[7] */
    | (0 << 10)     /* DATA[8] */
    | (0 << 11)     /* DATA[9] */
    | (0 << 12)    /* DATA[10] */
    | (0 << 13)    /* DATA[11] */
    | (0 << 14)    /* DATA[12] */
    | (0 << 15)    /* DATA[13] */
    | (0 << 16)    /* DATA[14] */
    | (0 << 17)    /* DATA[15] */
    | (0 << 18);   /* DMM ENA */
}

void spiInit(void)
{
/*skip other unrelated code here*/
......
   
 spiREG5->PCDOUT =  0        /* SCS[0] */
                    | (0 << 1)  /* SCS[1] */
                    | (0 << 2)  /* SCS[2] */
                    | (0 << 3)  /* SCS[3] */
                    | (0 << 8)  /* ENA */
                    | (0 << 9)  /* CLK */
                    | (0 << 10)  /* SIMO */
                    | (0 << 11) /* SOMI */
                    | (1 << 25); /* SOMI[1]/DMMData[13] */

    /** - SPI5 Port direction */
    spiREG5->PCDIR  =  0        /* SCS[0] */
                    | (0 << 1)  /* SCS[1] */
                    | (0 << 2)  /* SCS[2] */
                    | (0 << 3)  /* SCS[3] */
                    | (1 << 8)  /* ENA */
                    | (0 << 9)  /* CLK */
                    | (0 << 10)  /* SIMO */
                    | (0 << 11) /* SOMI */
                    | (1 << 25); /* SOMI[1]/DMMData[13] */

    /** - SPI5 Port open drain enable */
    spiREG5->PCPDR  =  0        /* SCS[0] */
                    | (0 << 1)  /* SCS[1] */
                    | (0 << 2)  /* SCS[2] */
                    | (0 << 3)  /* SCS[3] */
                    | (0 << 8)  /* ENA */
                    | (0 << 9)  /* CLK */
                    | (0 << 10)  /* SIMO */
                    | (0 << 11) /* SOMI */
                    | (0 << 25); /* SOMI[1]/DMMData[13] */

    /** - SPI5 Port pullup / pulldown selection */
    spiREG5->PCPSL  =  0        /* SCS[0] */
                    | (1 << 1)  /* SCS[1] */
                    | (1 << 2)  /* SCS[2] */
                    | (1 << 3)  /* SCS[3] */
                    | (0 << 8)  /* ENA */
                    | (0 << 9)  /* CLK */
                    | (0 << 10)  /* SIMO */
                    | (0 << 11) /* SOMI */
                    | (0 << 25); /* SOMI[1]/DMMData[13] */

    /** - SPI5 Port pullup / pulldown enable*/
    spiREG5->PCDIS  =  1        /* SCS[0] */
                    | (0 << 1)  /* SCS[1] */
                    | (0 << 2)  /* SCS[2] */
                    | (0 << 3)  /* SCS[3] */
                    | (1 << 8)  /* ENA */
                    | (1 << 9)  /* CLK */
                    | (1 << 10)  /* SIMO */
                    | (1 << 11) /* SOMI */
                    | (1 << 25); /* SOMI[1]/DMMData[13] */

    /* SPI5 set all pins to functional */
    spiREG5->PCFUN  =  1        /* SCS[0] */
                    | (0 << 1)  /* SCS[1] */
                    | (0 << 2)  /* SCS[2] */
                    | (0 << 3)  /* SCS[3] */
                    | (0 << 8)  /* ENA */
                    | (1 << 9)  /* CLK */
                    | (1 << 10)  /* SIMO */
                    | (1 << 11) /* SOMI */
                    | (0 << 25); /* SOMI[1]/DMMData[13] */

    /** - Finaly start SPI5 */
    spiREG5->ENA = 1U;
}