Skip to main content
Visitor II
February 22, 2006
Question

INTERUPT WHIT ST9 FOR SCI

  • February 22, 2006
  • 2 replies
  • 797 views
Posted on February 22, 2006 at 07:16

INTERUPT WHIT ST9 FOR SCI

    This topic has been closed for replies.

    2 replies

    guminaAuthor
    Visitor II
    February 22, 2006
    Posted on February 22, 2006 at 06:58

    hello to all,

    it is my first post that shipment.

    I have a problem with the ST9 F120, I am trying to create a software that to every data received on the serial me kinds a interrupt.

    I have connected the ST9 to a hyperterminal I am through SCI1(9,1,9,0), SCI0(5,2,5,1); digit on hyperterminal the SCI0 I would want that it generated a interrupt and that me correspondent to SCI1 wrote the characters on an other hyperterminal but unfortunately this does not happen could even help me with a small code of example? I enclose you mine more soon main and rows SCI.C aspect to yours news thanks

    MAIN.C

    void main(void)

    {

    di();

    INIT_PLL();

    INIT_SCI();

    INIT_SCI1();

    INIT_SCI_IT();

    ei();

    spp(P0C_PG);

    P0C2R = 0x00;

    P0C1R = 0xFF;

    P0C0R = 0x00;

    P0DR&=0;

    while(1)

    {

    INIT_SCI_IT();

    ei();

    spp(P0C_PG);

    P0DR &= 0x0;

    P0DR ^= 0x2;

    spp(SCI0_PG);

    ToRec=S_RXBR;

    if (ToRec != temp)

    {

    spp(SCI1_PG);

    S_TXBR=ToRec;

    temp=ToRec;

    }

    }

    spp(P0C_PG);

    P0DR ^= 0x80;

    }

    SCI.C

    #include ''sci.h''

    #include

    #include ''io_port.h''

    #include ''define.h''

    #include ''device.h''

    #include ''ioinit.h''

    #include ''string.h''

    unsigned char ToReceive;

    unsigned int c=0;

    void INIT_SCI(void)

    {

    spp(SCI0_PG);

    S_BRGHR = (unsigned char)((SCI_BRGENERATOR & 0xFF00)/256);

    S_CHCR = SCI_CHAR;

    S_CCR = SCI_MORECLOCK; /*CCR register: TXCLK = OCLK = XRX = CD = 0 */

    S_ISR = 0;

    S_IDPR = 0;

    S_BRGLR = (unsigned char)(SCI_BRGENERATOR & 0x00FF);

    IN_TTL(PORT_SCI0_IN, PIN_SCI0_IN);

    OUT_AFPP(PORT_SCI0_OUT, PIN_SCI0_OUT);

    }

    void INIT_SCI1(void)

    {

    spp(SCI1_PG);

    S_BRGHR = (unsigned char)((SCI_BRGENERATOR & 0xFF00)/256);

    S_CHCR = SCI_CHAR;

    S_CCR = SCI_MORECLOCK; /*CCR register: TXCLK = OCLK = XRX = CD = 0 */

    S_ISR = 0;

    S_IDPR = 0;

    S_BRGLR = (unsigned char)(SCI_BRGENERATOR & 0x00FF);

    IN_TTL(PORT_SCI1_IN, PIN_SCI1_IN);

    OUT_AFPP(PORT_SCI1_OUT, PIN_SCI1_OUT);

    }

    void INIT_SCI_IT(void)

    {

    spp(SCI0_PG);

    S_IVR = (IT_SCI_VECT & 0xF8);

    S_IDPR &= SCI_MASK;

    S_IDPR |= PRIO_SCI;

    S_IMR &= SCI_MASK;

    S_IMR |= Sm_rxdi;

    }

    #pragma interrupt INTSCI_Receive

    void INTSCI_Receive(void)

    {

    #ifdef NO_SAVE_RESTORE_PPR_IN_IT

    SAVE_PAGE;

    #endif

    spp(SCI0_PG);

    ToReceive=S_RXBR;

    spp(SCI1_PG);

    S_TXBR=ToReceive;

    spp(SCI0_PG);

    S_IMR &= ~Sm_rxa;

    S_ISR &= ~Sm_rxap; /*clear pending bits*/

    S_IMR &= ~Sm_rxdp;

    #ifdef NO_SAVE_RESTORE_PPR_IN_IT

    RESTORE_PAGE;

    #endif

    di();

    }

    Visitor II
    February 22, 2006
    Posted on February 22, 2006 at 07:16

    Hello,

    I am sorry, this forum is ST10 related and isn't dedicated to ST9 MCU.

    Thank you,

    Najoua.