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

Re: RS232 lesen/schreiben bei hoher baudrate Kategorie: Programmierung C (von PeterS - 18.04.2009 10:11)
Als Antwort auf RS232 lesen/schreiben bei hoher baudrate von neutrino - 18.04.2009 1:15


Hallo,

was auf jeden Fall falsch ist, ist die Dauer-Neuinitialisierung mit Serial_Init_IRQ() in der
"while(true) Schleife". Der Aufruf von Serial_Init_IRQ() sollte nur EINMAL am Anfang gemacht
werden, sonst werden dauernd die internen Zähler gelöscht.

Gruss Peter

> Hallo Forum
>
> Habe folgendes Problem mit den RS232 Schnittstellen.
> Es soll von einem Gerät ein Protokoll ausgeleden (COM0) und an der zweiten (COM1) ausgegeben werden.
> Es ist nur möglich einen Baud von 19200 ohne Steuermöglichkeit einzustellen.
> Sendevorgang auslösen und eine Protikolldatei mit ca.850 Zeichen (inklusive Steuerzeichen) wird gesendet.
> wird später ein Unterprogramm:
>
> byte buffer0[255];
> byte buffer1[255];
>
> //------------------------------------------------------------------------------
> // Hauptprogramm
> //
> void main(void)
> {
>     byte count;
>     byte sz;
>
>     while(true)      //Endlosschleife nur zum testen
>     {
>
>     Serial_Init_IRQ(0,buffer0,240,10,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200);
>     Serial_Init_IRQ(1,buffer1,10,240,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200);
>
>     count=Serial_IRQ_Info(0,RS232_FIFO_RECV);
>
>     while(count!=0)
>         {
>         sz=Serial_ReadExt(0);
>         Serial_Write(1,sz);
>         count=Serial_IRQ_Info(0,RS232_FIFO_RECV);
>         }
>     }
> }
>
> Leider geht das Programm so nicht. Es werden nur einige zeichen gesendet der rest fehlt oder ist an der
> falschen Stelle. (test über Hyperterminal)
> Wird ein Thread_Delay(1) eingefügt verschlimmer das die Sache noch.
> Werden allerdings einige Msg_WriteInt(count) eingefügt gehts dann fast vollständig.
> Hab aber keine Ahnung warum. Msg_WriteInt(count) bremsen den Controler doch auch nicht anders aus
> als ein Delay? Soll ja auch ohne USB-Anbindung bzw. Testboard laufen.
> Zuerst in Arrays scheiben und danch ausgeben hat auch keien erfolg gebracht.
> Wird die Baud testhalber auf 9600 gesetzt geht es dann tadellos.(test über Hyperterminal)
> Das wurde aber dafür sprechen das der mega128 zu langsam währe.
> Steht aber im wiederspruch zum ausbremsen mit Msg_WriteInt(count).
> Allerdings kann man ja noch sehr viel höhere Bauds einstellen (115200bps) nach dem Handbuch.
> Und mit weniger schritten wie jetzt, um die Zeit zu optimieren, geht es denke ich auch nicht.
>
> Ich hoffe das ich nicht zuviel Infos reingepackt habe, und es unübersichtlich wird.
> Vieleicht kann mir ja jemand den Denkfehler den ich habe erklären, oder ein Beispeilprogramm
> Schreiben, wo mit baud 19200 einen ca.850 Zeichendatei mittels RS232 durch den Mega128 geleiten werden
> kann.
>
> gruÃ?
> neutrino
>
>
>
>
>


    Antwort schreiben


Antworten:

Re: RS232 lesen/schreiben bei hoher baudrate (von neutrino - 19.04.2009 23:08)