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

Re: rs232 lesen Kategorie: Programmierung C (von PeterS - 21.01.2010 23:14)
Als Antwort auf rs232 lesen von rms2 - 21.01.2010 19:55

> Mega 132 liest nicht alle Zeichen die an die Schnittstelle ankommen:
>
> void main(void)
> {
> Serial_Init(0,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD9600);
> while(1)
> {
> thread_0(77);
> }
> }
>
> byte tel[7];
> int len;
>
> void thread_0(byte slave)
> {
> int i;
>
> Thread_Delay(50);
> for(i=0;i<4;i++) tel[i]=Serial_ReadExt(0);
> if (tel[0]==slave)
> {
> len=4;
> Serial_Write(0,len);
> for (i=0;i<4;i++) Serial_Write(0,tel[i]);
>
> }
> }
>
>
> Gesendet wurde z.B. 77 4 3 1   an Computer ist aber 4 77 4 1 0 angekommen. es fehlt die 3.
> beim Senden den sieben Zeichen (dann ist nat. i<7 in for) kommen zwei erste und der letzte Zeichen (dazwischen kommen 0.
>
> Was sollte im Programm falsch sein. Danke im Voraus für Anregungen.

Nun ja, wenn man nicht die Interruptroutine benutzt, sondern per Hand die serielle Schnittstelle
polled, kann es passieren, das nicht alle Zeichen ankommen. Wenn man zusätzlich mit Thread_Delay()
eine halbe Sekunde wartet, kann man sicher sein, das nicht alle Zeichen erkannt werden.

Gruss Peter


    Antwort schreiben


Antworten: