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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum