Re: Serial_Init_IRQ Kategorie: Programmierung C (von PeterS - 13.09.2010 21:11) | |
Als Antwort auf Re: Serial_Init_IRQ von Torsten - 13.09.2010 20:25
| |
> > > > > Hallo Zusammen, > > > > > > > > > > langsam bin ich echt am Verzweifeln... Habe die C Pro Mega128 und möchte gerne die Funktion > > > > > Serial_Init_IRQ benützen. Ich lade lediglich das Beispiel aus der Doku - und bin nicht > > > > > mal in der Lage den String zu verschicken. Es kommen immer nur die ersten 2 Zeichen am Rechner an. > > > > > Das gleiche Verhalten in C, Basic, mit dem Beispiel aus der Bibliothek und in meinem eigentlichen > > > > > Projekt. Was geht da schief?!? Mit der einfachen Version "Serial_Init" klappt alles bestens!! > > > > > > > > > > Vieleicht hat ja jemand einen Tipp... > > > > > Vielen Dank, > > > > > > > > > > Wolfgang > > > > > > > > Das Beispiel an sich ist fast zu kurz. Füge mal als letzte Zeile ein "while(1);" als Endlosschleife > > > > ein. Es kann gut sein, das das Programm beendet wird, bevor der gesamte RS232 Buffer ausgegeben > > > > ist. > > > > > > > > Gruss Peter > > > > > > Danke für den Hinweis Peter, > > > leider hilft auch das nicht :-( > > > Es kommen immer nur die ersten zwei Zeichen des Strings an. Bei Verwendung von > > > "Serial_WriteText(0,str);" passiert übrigens genau das selbe. > > > > > > So sieht der Code exakt aus: > > > > > > // 35 byte Sende + Empfungspuffer + 6 byte interne FIFO Verwaltung > > > byte buffer[41]; // Array deklariert > > > //------------------------------------------------------------------------------ > > > // Hauptprogramm > > > // > > > void main(void) > > > { > > > int i; > > > char str[10]; > > > AbsDelay(8000); // Zeitpuffer zum Umschalten auf das Terminal > > > str="Test"; > > > i=0; > > > > > > // Initialisiere Schnittstelle mit 19200baud, 8 Bit, 1 Stop Bit, keine Parität > > > // 20 byte Empfangspuffer - 15 byte Sendepuffer > > > > > > Serial_Init_IRQ(0,buffer,20,15,SR_8BIT|SR_1STOP|SR_NO_PAR,SR_BD19200); > > > while(str[i]) Serial_Write(0,str[i++]); // Gib den String aus > > > while(1); > > > } > > > > > > Ich verwende die IDE 2.1.0.0, Compact-C Compiler Version 1.51.0.51. > > > Bin schon am �berlegen, ob ich die IDE mal neu installieren soll?!? > > > > > > Viele Grü�e, > > > Wolfgang > > > > > > > Sorry, fällt mir jetzt nichts neues zu ein. Wenn ich eine Eingebung habe, dann schreib ich > > das hier. > > > > Gruss Peter > > > > Hallo Wolfgang, > > eine Patentlösung kann ich leider auch nicht bieten. > Aber ein paar kleine Tips. > > 1. Mir fällt auf da�, "AbsDelay(8000);" noch vor dem Aufruf von > "Serial_Init_IRQ(...)" steht. Würde vorschlagen den Funktionsaufruf > "Thread_Delay(xxx);" nach der Initialisierung der seriellen Schnittstelle > einzufügen. > > 2. Auf der suche nach der Baudrate mit welcher die IDE arbeitet bin ich > bis jetzt erfolglos. Warscheinlich hilft hier nur die verschiedenen Baudraten > mal durchzuprobieren. Nun da kann ich helfen, einfach fragen! Die IDE arbeitet fest mit 38400 Baud, es sei denn es ist ein Applicationboard, da wird die Kommunikation mit 1 Mbit über einen FT245, einen Mega8 und dann per SPI zum C-Control Modul übertragen. Demnächst werden die Bootloader von Mega32 und Mega128 mit 115kb arbeiten. Die IDE prüft dann 38400 und 115000 nacheinander durch um kompatibel zu bleiben. > > 3. Sofern es sich bei der Ausgabe an die serielle Schnittstelle immer um Textdaten > handelt kann man das Windowsprogramm "HyperTerminal" für den Empfang > von Daten verwenden. Die Baudrate lä�t sich dann auch einstellen. Ich glaube Wolfgang benutzt schon das interne Terminalprogramm der IDE, oder? Gruss Peter > > VG Torsten | |
Antwort schreiben Antworten: |
Zur Übersicht - INFO - Neueste 50 Beiträge - Neuer Beitrag - Suchen - Zum C-Control-I-Forum - Zum C-Control-II-Forum