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

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: