Hallo Zusammen
Ich habe wieder mal eine Frage betreffend der Programmierung des UART0 meines Boards Mein Code sieht so aus:
_interrupt(18) void se_int_receive( void ) { x =3D U0RBL;
switch ( x ) { case stoppbit: //Auswertroutine result =3D rxbuffer[1]+ rxbuffer[2]+ rxbuffer[3]+ rxbuffer[4]+ rxbuffer[5]+ rxbuffer[6]+ rxbuffer[7] ; break;
case startbit: //startbit u =3D 0; //z=E4hler auf 0 setzten
break;
default:
rxbuffer[u] =3D x; //buffer f=FCllen u++; //U0RBL nach rxbuffer schreiben //z=E4hler um 1 erh=F6hen f=FCr n=E4chste //U0RBL nach rxbuffer schreiben
Meine =DCberlegung dahinter ist: es kommt ein startbit wert - der z=E4hler u wird auf 0 gesetzt
es kommt ein defaultwert - die Stelle "u" wird beschrieben mit dem wert U0RBL (x) der wert u wird um 1 erh=F6ht um die n=E4chste stelle zu beschreiben, beim n=E4chsten defaultwert beschreibt man die n=E4chste stelle
es kommt das stoppbit die auswertung wird ausgef=FChrt. Alle werte zusammenz=E4hlen um ein result zu erhalten
Das Startbit spricht an, das ist OK. Das Stoppbit spricht auch an auch OK.
Nun also meine Frage an Euch. Wenn ich das Resultat aber anschaue, habe ich jedesmal wenn ich einen neuen Lesevorgang mache ein anderes Resultat Auch die Einzelnen Werte im rxbuffer[1].....usw. sind jedesmal anders. Was kann das Problem sein. hat jemand eine Ahnung.
Ich habe noch meine Initialisierung des UART angeh=E4ngt. vielleicht ist hier noch ein unentdeckter fehler versteckt.
U0BRG =3D 103; /* baudrate 9600 */ //67 U0MR =3D 0x05; U0C0 =3D 0x10; /* no cts/rts, prescaler =3D F1 */ U0C1 =3D 0x05; /* enable receiver and transmitter 0x5*/ UCON =3D 0x04;
S0TIC =3D 0x6; /* Set UART0 transmit interrupt priority */ S0RIC =3D 0x6; /* Set UART0 transmit interrupt priority */
PD6_3 =3D 1; PD6_2 =3D 0;
Vielen Dank f=FCr Euren Einsatz
Oli