UART TXD Atmega8

Gast #4827790
Hallo,
ich bin noch nicht lange beim Thema MC. Nun wollte ich mich mit dem UART 
beschäftigen und komme nicht weiter. Ich habe auch gerade noch keinen 
MAX232 zur Hand und kann daher keine Daten zum PC senden. Deshalb habe 
ich erstmal eine LED an TXD angeschlossen, aber die gibt kein Signal von 
sich. Auch an PD7 ist eine LED angeschlossen (zur Kontrolle).Hier mein 
Quelltext:

#include <avr/io.h>
#define F_CPU 16000000
#include<util/delay.h>
#define BAUD 31250
#include<util/setbaud.h>

void uart_init(void)
{

  UBRRH = UBRRH_VALUE;
  UBRRL = UBRRL_VALUE;
 UCSRB |= (1<<TXEN);
 UCSRC  = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);

}

int main(void)
{  DDRD = 0b11111011;
   while(1)
   {  while(!(UCSRA & (1<<UDRE)))
            {
      }
          UDR = 0b11110000;
        PORTD |=  (1<<PD7);
              _delay_ms(1000);
                          PORTD &= ~(1<<PD7);
                             _delay_ms(1000);
   }
}

Was mache ich da verkehrt? Warum gibt die LED Kein Signal von sich ?
Ich würde mich freuen wenn mir Jemand auf die Sprünge helfen könnte.
Danke schonmal.
Hallo,
danke erstmal für eure Antworten.
Das mit der Funktion habe ich verstanden.
Bevor ich gestern die Funktion (von der ich nicht einmal wusste was sie 
ist) benutzt habe, hatte ich die Register vom UART in main initialisiert 
und hatte das selbe Problem wie jetzt: die an TXD angeschlossene LED 
leuchtet ständig (also ununterbrochenes high Potenzial).
Warum wird nicht im 2-Sekundentakt ein Byte ausgegeben?
1
#include <avr/io.h>
2
#define F_CPU 16000000
3
#include<util/delay.h>
4
#define BAUD 31250
5
#include<util/setbaud.h>
6

7
void uart_init()
8
{
9

10
  UBRRH = UBRRH_VALUE;
11
  UBRRL = UBRRL_VALUE;
12
 UCSRB |= (1<<TXEN);
13
 UCSRC  = (1<<URSEL) | (1<<UCSZ1) | (1<<UCSZ0);
14

15
}
16

17
int main(void)
18
{  DDRD = 0b11111111;
19
   uart_init();
20
   while(1)
21
   {  while(!(UCSRA & (1<<UDRE)))
22
            {
23
            }
24
           UDR = 0b11110000;
25
        PORTD |=  (1<<PD7);
26
        _delay_ms(1000);
27
              PORTD &= ~(1<<PD7); 
28
              _delay_ms(1000);
29
   }
30
}

Ich hoffe ich nerve euch nicht zu sehr.
Danke

--

C-Quelltext in [ c ] [ /c ] -Tags einschließen, wie es auch oberhalb des 
Texteingabefeldes unter "Formatierung" steht.

-rufus
Hi, kannst Du mal bitte dein Coding C-mäßig formatieren. Und nimm bitte 
eine
niedrigere Baudrate vielleicht siehst Du dann das kurze flackern.
Im Datenblatt ist eine simple Initialisierungs- und Senderoutine 
angegeben,
versuche es mal damit.
Falk H. schrieb:
> Wie mache ich das mit dem Formatieren ?
> 9600 Baud hatte ich gestern auch schon. War das selbe Problem. Müsste
> zwischen den Bytes nicht LOW Pegel sein?
> Datenblatt sehe ich mir gleich nochmal an.
>
> Danke

Zum Formatieren die c-code tags wie im Antwortform angegeben benutzen
und dann die geschwungenen Klammern nett ausrichten etc.

9600 ist wahrscheinlich auch noch zu schnell am besten mal was gaaanz
langsames (vllt. 300) zum testen nehmen und als zu sendendes Byte 
0b01010101.
Was hießt " wie im Antwortform angegeben "
Und danke erstmal. Ich habe 300 Baud eingegeben und dann sah ich die 
Unterbrechung im High-Signal. Ich habe jetzt die LED umgedreht und gegen 
vcc (statt gnd) geschaltet und nun sehe ich den Impuls sogar bei 31250 
(weil ich mit Midi experimentieren will).
Also ist zwischen den Bytes High Pegel auf TXD ?!
Soweit war ich noch nicht.

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 9 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.