-         

Ergebnis 1 bis 3 von 3

Thema: UART echo't nicht den gesendeten Test

  1. #1
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2012
    Beiträge
    132

    UART echo't nicht den gesendeten Test

    Anzeige

    SMARTPHONES & TABLETS-bis zu 77% RABATT-Kostenlose Lieferung-Aktuell | Cool | Unentbehrlich
    Hallo zusammen

    Ich bin z.Zt. wieder daran, mich in das Thema Mikrocontroller einzuarbeiten und experimentiere z.Zt. mit dem UART.
    Ich möchte gerne ein empfangenes Zeichen oder einen String auf dem angeschlossenen LCD anzuzeigen. Das LCD an und für sich funktioniert tiptop, das ist also nicht das Problem

    Hier mal mein Code:
    Ich habe den von hier: http://www.avrfreaks.net/index.php?n...ntview&t=48188
    Code:
    #include <avr/io.h>
    
    #define USART_BAUDRATE 9600
    #define F_CPU 1000000
    #define BAUD_PRESCALE (((F_CPU / (USART_BAUDRATE * 16UL))) - 1)
    
    int main (void)
    {
    	char ReceivedByte;
    
    	UCSRB = (1 << RXEN) | (1 << TXEN);   // Turn on the transmission and reception circuitry
    	UCSRC = (1 << URSEL) | (1 << UCSZ0) | (0 << UCSZ1); // Use 8-bit character sizes
    
    	UBRRH = (BAUD_PRESCALE >> 8); // Load upper 8-bits of the baud rate value into the high byte of the UBRR register
    	UBRRL = BAUD_PRESCALE; // Load lower 8-bits of the baud rate value into the low byte of the UBRR register
    
    	for (;;) // Loop forever
    	{
    		while ((UCSRA & (1 << RXC)) == 0) {}; // Do nothing until data have been received and is ready to be read from UDR
    		ReceivedByte = UDR; // Fetch the received byte value into the variable "ByteReceived"
    
    		while ((UCSRA & (1 << UDRE)) == 0) {}; // Do nothing until UDR is ready for more data to be written to it
    		UDR = ReceivedByte; // Echo back the received byte back to the computer
    	}
    }
    Ich hatte uerst eigentlich einen anderen Code der mehr tat. Da dieser aber nicht sauber funktionierte habe ich mich dann entschieden auf etwas zurück zu greifen was eigentlich funktionieren sollte

    Als Mikrocontroller habe ich einen ATmega8. Auf dem Computer setze ich HTerm ein, Baud 9600, 1 Stop-bit.
    Wenn ich vom Mikrocontroller aus direkt ein paar bits an den Mc sende kommen die richtig an. Wenn ich die sende-Leitung vom PC mit der Empfangs-leitung direkt verbinde kommt alles richtig wieder am PC an was von da gesendet wurde.
    Als Pegelwandler setze ich den MAX233CPP ein, dieser kommt ohne externe Kondensatoren aus und scheint soweit korrekt zu funktionieren.

    Wenn ich nun vom PC aus an den MC einen Text oder einzelne Bits sende, kommen die nicht so zurück wie sie gesendet werden. Hier ein paar Beispiele:

    aus 10101010 wird 01101010
    aus 00000000 wird 01101010
    11001100 bleibt 11001100

    Kann mir jemand sagen, wo der Hund vergraben liegt? Ich finde den Fehler leider schon seit ein paar Tagen nicht.
    Den MC habe ich übrigens immer wieder mal "neu gestartet", genau so wie den PC.

    Liebe Grüsse

    Thor_

  2. #2
    Erfahrener Benutzer Roboter Experte Avatar von sternst
    Registriert seit
    07.07.2008
    Beiträge
    672
    Zitat Zitat von Thor_ Beitrag anzeigen
    Kann mir jemand sagen, wo der Hund vergraben liegt?
    Ich sehe zwei Probleme:

    1) Du hast den UART auf 6 Bit eingestellt.

    2) Bei 9600 Baud und 1 Mhz liegt der Fehler nur dann im erlaubten Bereich, wenn man U2X benutzt, was du nicht tust.
    MfG
    Stefan

  3. #3
    Erfahrener Benutzer Fleißiges Mitglied
    Registriert seit
    22.01.2012
    Beiträge
    132
    Hi Sterst!

    Hätte ich doch früher geschrieben

    Ich habe nun
    UCSRC = (1 << URSEL) | (1 << UCSZ0) | (1 << UCSZ1)
    gesetzt, so dass im 8-bit Modus übertragen wird

    Und die Taktfrequenz des Controllers auf 8Mhz eingestellt und siehe da:
    Es tut alles so wie es soll=)

    Vielen Dank und einen schönen Tag!

Ähnliche Themen

  1. Antworten: 35
    Letzter Beitrag: 06.11.2013, 19:37
  2. Antworten: 7
    Letzter Beitrag: 10.03.2013, 18:44
  3. Aufbau eines Echo-Test zwischen PC und Atmega644p
    Von jiodatsinga im Forum C - Programmierung (GCC u.a.)
    Antworten: 0
    Letzter Beitrag: 19.02.2013, 17:27
  4. Antworten: 8
    Letzter Beitrag: 30.08.2006, 14:13
  5. uart echo in asm
    Von slaud im Forum AVR Hardwarethemen
    Antworten: 1
    Letzter Beitrag: 04.05.2005, 19:59

Berechtigungen

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