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

RS232 lesen/schreiben bei hoher baudrate Kategorie: Programmierung C (von neutrino - 18.04.2009 1:15)
Ich nutze:
C-Control Pro Mega128, CC-Pro 128 Application Board
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 PeterS - 18.04.2009 10:11)
    Re: RS232 lesen/schreiben bei hoher baudrate (von neutrino - 19.04.2009 23:08)