-         

Ergebnis 1 bis 6 von 6

Thema: USART Senden und Empfangen von Daten.

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    37
    Beiträge
    196

    USART Senden und Empfangen von Daten.

    Anzeige

    Hallo

    Ich habe das stk500 und ATmega8 mit 8 MHz,
    Ich habe bei einem UART Programm das Problem das ich bei diesem Programm.: http://www.avrbuch.de/index.php?view...ntent&Itemid=3
    Daten empfangen kann Ader keine senden z.B "version",
    Ich verwende das Terminal.: http://www.compuphase.com/software_termite.htm

    Das Programm geht.: http://www.roboternetz.de/wissen/ind...lo.2C_world.29
    Aber da sendet der µC nur,

    wie nennt man das eigentlich wen der PC sendet oder der µC sendet gibt’s da einen Unterschied?

    Mit freundlichen Grüßen Ferdinand.
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  2. #2
    Erfahrener Benutzer Robotik Visionär Avatar von Hubert.G
    Registriert seit
    14.10.2006
    Ort
    Pasching OÖ
    Beiträge
    6.183
    Auf der roboternetz Seite gibt es aber auch eine Empfangsfunktion. Die Auswertung der Zeichen musst du dir selbst schreiben.
    In der Datenrichtung gibt es keinen Unterschied, das musst du dir selbst definieren.
    Grüsse Hubert
    ____________

    Meine Projekte findet ihr auf schorsch.at

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    37
    Beiträge
    196
    Hi,

    Ich hab’s jetzt getestet und das Funktioniert.

    http://www.roboternetz.de/wissen/ind...statur-Echo.29

    also die Hardware tut.
    aber das Bsp. geht trotzdem nicht.

    Mit freundlichen Grüssen Ferdinand Haug.
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  4. #4
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    stell mal in deinem Terminalprogramm in dem Fenster "Serial Port settings" unter "Transmittet test" "Append CR" ein. Das Programm ließt solange Zeichen ein, bis es die 13, also ein CR, empfängt. Wenn dein Terminalprogramm das nicht mitschickt, klappt das nicht.

    Gruß

    Jens

  5. #5
    Erfahrener Benutzer Fleißiges Mitglied Avatar von Ferdinand
    Registriert seit
    10.09.2004
    Ort
    Stuttgart
    Alter
    37
    Beiträge
    196
    Hi

    ich weis nicht genau was dabei ableuftaber es tut,
    könndest du mir das mit dem RC noch mal genauer erkleren.

    THX

    by Ferdinand
    habe schreiben erst heute gelernt.

    bin legasteniger.

    by Ferdinand.

  6. #6
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    20.05.2006
    Ort
    Lippe
    Alter
    48
    Beiträge
    524
    Hallo,

    hier erst einmal der wichtige Codeschnipsel aus deinem Programm mit ein paar eingefügten Kommentaren.

    Code:
    	while (1) //Schleife bis ein Enter/CR/13 empfangen wird
    	{
    		c = uart_getchar(); //Zeichen abholen
    		if (c != -1) //Ist ein Zeichen da?
    		{
    			if (c == 13) //Is das Zeichen Enter/CR/13
    			{
    				/* Ende der Zeile erreicht,
    				   also String abschließen */
    				str[index] = 0;
    
    				/* Funktion beenden */
    				return; // hier wird die Schleife verlassen
    			}
    			else /* Normales Zeichen, anhängen an die Zeichenkette */
    			{
    				str[index] = c;
    				index++;
    			}
    		}
    	}
    Jetzt zu Enter/CR/13. Wenn du die Entertaste drückst, ist das auch nur ein Zeichen, wie zum Beispiel das A. Jedes Zeichen hat einen ASCII-Code. Der ist bei dem A 65, für Enter 13. Jetzt ist es ja möglich das A als A darzustellen. Das geht bei Enter nicht, darum hat man sich darauf geeinigt, dass Enter als CR dargestellt wird. CR kommt noch von den alten Druckern und bedeutet carrige return, Wagenrücklauf.
    Wenn du bisher in deinem Terminal nach der Zeichenkette Enter gedrückt hast, hat das T-Programm die Zeichenkette abgeschickt. Aber das Enter für sich behalten! Dadurch ist das Programm auf dem Controller nie aus der Schleife gekommen. Wenn du jetzt dem T-Programm gesagt hast, schicke jeder Zeichenkette ein CR nach, schickt es das Enter mit und die Schleife kann verlassen werden.

    Gruß

    Jens

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •