USART

Gast #99143
Hallo!

Jetzt muss ich euch nochmals nerve - aber ich verspreche, es war das
lezte Mal vorm Wochenende g

Für alle die's noch nicht wissen: Ich arbeite mit dem Mega8515 und dem
IAR Workbench AVR C Compiler.

Ich initialisiere das USART so:

UCSRA = 0x00;
UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0) ;
UBRRH = 0x00;
UBRRL = 0x19;
UCSRB = (1 << TXEN);

Also:
- asynkron
- keine Parität
- 1 Stoppbit
- 8 Datenbits
- Baudrate: 38400 (25 in das Baudratenregister)

Wenn ich nun mit puts("F"); oder printf("F"); versuche etwas
auszugeben, meldet sich weder am PC was noch kann ich mit dem Oszi was
am TXD Pin messen.

Ich habe alle Registereinstellungen mehrfach kontrolliert - aber ich
finde den Fehler nicht ...

Viele Grüße Ralf
Gast
So ich nochmal ...

Wenn ich das UDR Register von Hand setze funktioniert es einwandfrei.
Mir reicht das so, aber rein aus Interesse wüsste ich nun schon gerne,
warum die anderen Funktionen (Printf und puts) nicht funktionieren ...

Grüße Ralf
Gast
hm - also ich hab die Interrupts jetzt aktiviert und es funktioniert
dennoch noch nicht ...

#include <stdio.h>

  UCSRA = 0x00;
  UCSRC = (1 << URSEL) | (1 << UCSZ1) | (1 << UCSZ0);
  UBRRH = 0x00;
  UBRRL = 0x19;
  UCSRB = (1 << TXEN) | (1 << RXEN) | (1 << TXCIE) | (1 << RXCIE) | (1
<< UDRIE);

  __enable_interrupt();


    printf("t");
oder
    puts("t");

Grüße Ralf
Gast
Ach ja: ich habs auch versucht von Hand zu machen. Setze uch das UDR
Register, so geht das auch:

UDR = 0x20;

Mit zwei funktioniert er auch noch

UDR = 0x20;
UDR = 0x30;

aber alles was drüber ist funktioniert nicht korrekt.

So habe ich versucht zwischen den einzelnen UDR immer zu warten, bis
das USART Transmit Complete Bit gesetzt ist (und hab es anschließend
durch setzen auf 1 wieder auf 0 zurück gesetzt).

Wo liegt jetzt schon wieder das Problem?

Ralf

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 22 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.