www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART sendet nur punkte bzw 000000


Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo, versuche gerade per uart daten an meine serielle schnittstelle zu
senden jedoch kommen im terminal immer nur punkte an, ich habe es hier
mit einem beispielprogramm aus einem tutorial versucht, woran könnte es
liegen?

#include <avr/io.h>

#define F_CPU    3686400
#define BAUD    9600
#define UBRR_BAUD  ((F_CPU/(BAUD*16))-1)

/* USART initialisieren */
void uart_init(void);


int main(void)
{
  unsigned char buffer;

  /* USART initialisieren */
  uart_init();

  while (1)
  {

    /* Warten bis Daten empfangen wurden */
    while ( !(UCSRA & (1<<RXC)) )
      ;

    /* Empfangsregister auslesen */
    buffer = UDR;

    /* Warten bis der Sendepuffer frei ist */
    while ( !( UCSRA & (1<<UDRE)) )
      ;

    /* Daten in den Puffer schreiben und damit senden */
    UDR = buffer;
  }
}

/* USART initialisieren */
void uart_init(void)
{
  /* Baudrate einstellen ( Normaler Modus ) */
  UBRRH = (unsigned char) (UBRR_BAUD>>8);
  UBRRL = (unsigned char) UBRR_BAUD;

  /* Aktivieren von receiver und transmitter */
  UCSRB = (1<<RXEN)|(1<<TXEN);

  /* Einstellen des Datenformats: 8 Datenbits, 1 Stoppbit */
  UCSRC = (1<<URSEL)|(1<<UCSZ1)|(1<<UCSZ0);
}

Autor: hORST (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nimmst du nen MEGA ? dann mal die Fuse Bits kontrollieren. Bei mir lags
immer daran.

Und nimm am besten auch das HTerm Programm. Das stellt zu jedem
enpfangenen Byte 4 Ansichten dar(Ansi, Hex, Dez, Binär)

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm fuse bits müssten passen, weil in assembler funktioniert das uart
senden problemlos, ich habe bereits ein terminal das verschiedene
ansichten hat, hm irgendwie sendet mir der atmega8 nur ..... ^^

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du mal "UDR = buffer" durch "UDR = 0xFF" oder dergl. ersetzt?

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ich habe UDR = "31" probiert ascci für 1

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm es kommt immer nur als ascii \0 an binär 00 und dezimal 0

Autor: Rahul (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast du wirklich UDR = "31" geschrieben?
Müsste eigentlich eher 0x31 heissen... Daran wird es aber eher nicht
liegen.
Hast du an den Baudrate gedreht?

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja auf 9600 gestellt

Autor: Christian D. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hm jetzt sendet er: \0 und ein A mit so einem komische strich drüber

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.