Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum

AVR32 RS232-Schnittstellen Kategorie: CC-Pro Unit & Appl.Board (von Roland Sebastian - 5.12.2013 18:08)



Hallo,

verwende seit einiger Zeit die RS232-UART0 meiner AVR32 Unit. Klappt prima.
Beim Einsatz der anderen UART┬┤s habe ich keine empfangene  
Zeichen im Puffer (Serial_IRQ_Info(1,....) = 0)
Habe ich vielleicht ein Zeitproblem?
Wer kann mir helfen?

Vielen Dank schon mal im Voraus.

Gruss Roland


Folgendes Testprogramm:

// Definition

    #define UART0 0
    #define FRAME0 450

    #define UART1 1
    #define FRAME1 400

// *****************************************************************************
// Declaration
    byte Buffer0[SERIAL_BUF(FRAME0,FRAME0)];    // UART0
    int Buffer0_Index;                         //   "
    int Buffer0_Anzahl;                         //   "
    byte Data_Buffer0[FRAME0];                  //   "

    byte Buffer1[SERIAL_BUF(FRAME1,FRAME1)];    // UART1
    int Buffer1_Index;                          //   "
    int Buffer1_Anzahl;                         //   "
    byte Data_Buffer1[FRAME1];                  //   "

//******************************************************************************
/*------------------------------------------------------------------------------
    Initialisierung
------------------------------------------------------------------------------*/
void init(void)
{
    // Init LED
    Port_Attribute(PORT_LED1,PORT_ATTR_OUTPUT|PORT_ATTR_DRIVE_MIN);
    Port_Attribute(PORT_LED2,PORT_ATTR_OUTPUT|PORT_ATTR_DRIVE_MIN);

    // Init UART0  8 Bit, 1 Stopbit,1 Stopbit
    Serial_Init_IRQ(UART0,Buffer0,FRAME0,10,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD9600);

    // Init UART1  8 Bit, 1 Stopbit,1 Stopbit
    Serial_Init_IRQ(UART1,Buffer1,FRAME1,10,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD9600);

}// ende Init

/*------------------------------------------------------------------------------
    Abfrage UART1
------------------------------------------------------------------------------*/
void abfrage_uart1(void)
{
    int sz;

    sz=0;                                 // serielle Zeichen
    Buffer1_Index=0;

    if( Serial_IRQ_Info(1,RS232_FIFO_RECV) != 0)  //Daten verf├╝gbar?
        {
            Port_WriteBit(PORT_LED2,PORT_ON);

            while(1)  // Daten lesen
            {
                sz=Serial_ReadExt(1);
                if(sz == 0x100) break;
                if(Buffer1_Index>324) break;
                Buffer1_Index++;
                Data_Buffer1[Buffer1_Index]=sz;
                AbsDelay(1);
            } // Ende While

            Port_WriteBit(PORT_LED2,PORT_OFF);

        } // Ende If

        AbsDelay(500);    // 500ms

} // Ende abfrage_uart2

/*------------------------------------------------------------------------------
    Abfrage UART0
------------------------------------------------------------------------------*/
void abfrage_uart0(void)
{
    int sz;

    sz=0;                                 // serielle Zeichen
    Buffer0_Index=0;

           if( Serial_IRQ_Info(0,RS232_FIFO_RECV) != 0)  //Daten verf├╝gbar?
           {
                Port_WriteBit(PORT_LED1,PORT_ON);
                while(1)  // Daten lesen
                {
                    sz=Serial_ReadExt(0);
                    if(sz == 0x100) break;
                    if(Buffer0_Index>392) break;
                    Buffer0_Index++;
                    Data_Buffer1[Buffer0_Index]=sz;
                    AbsDelay(1);
                 } // Ende While

                 Port_WriteBit(PORT_LED1,PORT_OFF);

            } // Ende If

        AbsDelay(500);    // 500ms

} // Ende abfrage_uart0

/*------------------------------------------------------------------------------
    Main Programm
------------------------------------------------------------------------------*/
void main(void)
{
    init();

    while(1)
        {
            abfrage_uart0();
            Msg_WriteInt(Buffer0_Index);
            Msg_WriteChar(13);

            abfrage_uart1();
            Msg_WriteInt(Buffer1_Index);
            Msg_WriteChar(13);

        } // Ende while
} // Ende Main







    Antwort schreiben


Antworten:

Re: AVR32 RS232-Schnittstellen (von Hermann Neuhaus - 22.12.2013 23:00)