mikrocontroller.net

Forum: Compiler & IDEs UART Probleme


Autor: jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Ihr Wissenden,

ich hab mir mal aus den Beispielen aus dem Datenbaltt des mega8
folgenden Code gebastelt um ein paar Daten zum PC zu schicken:

#include <avr/io.h>
#include <avr/interrupt.h>
#include <avr/signal.h>


#define F_CPU            1000000      /* 4Mhz */
#define UART_BAUD_RATE      9600      /* 9600 baud */


#define BAUD (F_CPU/(UART_BAUD_RATE*16l)-1)

void USART_INIT( unsigned int baud)
{
  UBRRH = (unsigned int) (baud >> 8);

  UBRRL = (unsigned int) baud;

  UCSRB = (1<<RXEN) | (1<<TXEN);

  UCSRC = (1<<URSEL) | (1<<USBS) | (3<<UCSZ0);
}

void USART_Transmit(unsigned char data)
{
  while ( !(UCSRA & (1<<UDRE)))
  ;

  UDR = data;
}

void main(void)
{
  USART_INIT(BAUD);

  for(;;)
  {
    USART_Transmit("H");
    USART_Transmit("a");
    USART_Transmit("l");
    USART_Transmit("l");
    USART_Transmit("o");
    USART_Transmit(0x0A);
    USART_Transmit(0x0D);
  }

}

Laut Datenblatt ist der Transfer auf 8N2 eingestellt. Das gleiche hab
ich im Windows im Hyperterminal eingestellt.
Ich bekomme aber anstatt dem erwarteten String "Hallo" folgendes:
"¦Š ¢¤¤" was ja zumindest mal gleichlang wie Hallo +0x0A + 0x0D
ist.

Kennt das Problem jemand bzw. sieht einen Fehler im Code.

Danke schon mal, der Jochen

P.S. weiß jemand wie man den internen Oszi deaktivieren kann. Hab bei
mir ein 4MHz Quarz am uC trag ich allerding 4MHz im Code ein tut sich
garnichts. Das müsste dann wohl heisen das der interne Quarz den UART
steuert.

Autor: Andreas Schwarz (andreas) (Admin) Benutzerseite Flattr this
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der interne Oszillator ist nicht genau genug, jedenfalls nicht ohne
Kalibrierung. Stell am besten auf den externen Quarz um:

http://www.mikrocontroller.net/tutorial/io-basics.htm

Autor: Jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo noch mal,

hab jetzt mal meinen uC erzählt das er nur den externen Takt verwenden
soll. Ich hab das mit diesem Programm noch nicht gecheckt, aber bei
einem ähnlichen Prg das Daten über die Serielle sendet hat es
funktioniert.

Der Jochen

Autor: S. Schiller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du wirst es zwar nicht mehr brauchen, aber vieleicht haben andere ein
änliches Problem.

Die lösung lautet (man achte auf den unterschied ' und " ):

    USART_Transmit('H');
    USART_Transmit('a');
    USART_Transmit('l');
    USART_Transmit('l');
    USART_Transmit('o');
    USART_Transmit(0x0A);
    USART_Transmit(0x0D);

Autor: jochen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oh man,

das ist jetzt auch schon wieder 6 Monate her g. Mitlerweile ist nir
der Unterschied zwischen " und ' natürlich klar gg

Trotzdem Danke gg
Jochen

Autor: Mark Hämmerling (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Salut,

außerdem fällt mir in der Definition von BAUD ein Typo auf: 161 statt
16. Ist aber inzwischen sicherlich nicht mehr relevant. :)

Gruß,
Mark

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.