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) |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum