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


von Christian D. (Gast)


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);
}

von hORST (Gast)


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)

von Christian D. (Gast)


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 ..... ^^

von Rahul (Gast)


Lesenswert?

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

von Christian D. (Gast)


Lesenswert?

ich habe UDR = "31" probiert ascci für 1

von Christian D. (Gast)


Lesenswert?

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

von Rahul (Gast)


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?

von Christian D. (Gast)


Lesenswert?

ja auf 9600 gestellt

von Christian D. (Gast)


Lesenswert?

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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.