Guest
Hallo Zusammen
Ich möchte Euch um Rat fragen betreffend der Programmierung des UART0
auf meinem Glyn Board EVBM16C/62P
Zum schreiben des Codes verwende ich den Tasking Compiler.
Hier mal ein Auszug aus dem Code:
#define startbit 002
#define stoppbit 004
unsigned char rxchar;
int result;
int u;
char rxbuffer[10];
unsigned char x;
char size;
_interrupt(18) void
se_int_receive( void )
{
x = U0RBL;
switch ( x )
{
case startbit:
u = 0; //u ist ein Zähler - zähler auf 0 setzten
break;
case stoppbit: //kommt das stoppbit, alle rxbuffer addieren
result rxbuffer[0]+
rxbuffer[1]+
rxbuffer[2]+
rxbuffer[3];
break;
default:
u = 0; //
rxbuffer = x;//byte um byte in den rxbuffer
u++;
**************************************************************
Die Initialisierung der Schnittstelle sieht so aus:
flag_TI = 1;
U0BRG = 0x67; /* baudrate 9600
U0MR = 0x5; /* no parity, 8 data-bits, 1 stop-bit, internal clock
*/
U0C0 = 0x10; /* no cts/rts, prescaler = F1 */
U0C1 = 0x5; /* enable receiver and transmitter */
U0IRS = 1; /* TX complete */
U0RRM = 1; //UART0 continous mode oli
U0SMR = 0x2; //update per byte oli
S0TIC |= 0x6; /* Set UART0 transmit interrupt priority */
S0RIC |= 0x6; /* Set UART0 transmit interrupt priority */
PD6_3 = 1;
PD6_2 = 0;
*******************************************************************
Die Daten welche ich empfangen möchte mit 9600 baud sind:
<STX> [Byte1] [Byte2] [Byte3] [Byte4] <EOT>
*******************************************************************
Nun meine Problem ist, dass ich immer nur das erste Byte empfangen kann
und die anderen 3 nicht.
Das Start- und das Stoppbit spricht überhaubt nicht an.
Hat jemand ein Lösungsvorschlag für dieses Problem? wie ich auch die
anderen Bytes auswerten kann.
Stimmt die Initialisierung?
Evt. mache ich einen Grundsätzlichen Fehler, welchen ich mir gerne
erklären lasse.
oder Hat jemand eine lauffähige Routine um diese eingehenden Daten aus
4 Bytes abfragen zu können?
Besten Dank jetzt schon
Oli
Ich möchte Euch um Rat fragen betreffend der Programmierung des UART0
auf meinem Glyn Board EVBM16C/62P
Zum schreiben des Codes verwende ich den Tasking Compiler.
Hier mal ein Auszug aus dem Code:
#define startbit 002
#define stoppbit 004
unsigned char rxchar;
int result;
int u;
char rxbuffer[10];
unsigned char x;
char size;
_interrupt(18) void
se_int_receive( void )
{
x = U0RBL;
switch ( x )
{
case startbit:
u = 0; //u ist ein Zähler - zähler auf 0 setzten
break;
case stoppbit: //kommt das stoppbit, alle rxbuffer addieren
result rxbuffer[0]+
rxbuffer[1]+
rxbuffer[2]+
rxbuffer[3];
break;
default:
u = 0; //
rxbuffer = x;//byte um byte in den rxbuffer
u++;
**************************************************************
Die Initialisierung der Schnittstelle sieht so aus:
flag_TI = 1;
U0BRG = 0x67; /* baudrate 9600
U0MR = 0x5; /* no parity, 8 data-bits, 1 stop-bit, internal clock
*/
U0C0 = 0x10; /* no cts/rts, prescaler = F1 */
U0C1 = 0x5; /* enable receiver and transmitter */
U0IRS = 1; /* TX complete */
U0RRM = 1; //UART0 continous mode oli
U0SMR = 0x2; //update per byte oli
S0TIC |= 0x6; /* Set UART0 transmit interrupt priority */
S0RIC |= 0x6; /* Set UART0 transmit interrupt priority */
PD6_3 = 1;
PD6_2 = 0;
*******************************************************************
Die Daten welche ich empfangen möchte mit 9600 baud sind:
<STX> [Byte1] [Byte2] [Byte3] [Byte4] <EOT>
*******************************************************************
Nun meine Problem ist, dass ich immer nur das erste Byte empfangen kann
und die anderen 3 nicht.
Das Start- und das Stoppbit spricht überhaubt nicht an.
Hat jemand ein Lösungsvorschlag für dieses Problem? wie ich auch die
anderen Bytes auswerten kann.
Stimmt die Initialisierung?
Evt. mache ich einen Grundsätzlichen Fehler, welchen ich mir gerne
erklären lasse.
oder Hat jemand eine lauffähige Routine um diese eingehenden Daten aus
4 Bytes abfragen zu können?
Besten Dank jetzt schon
Oli