mikrocontroller.net

Forum: Compiler & IDEs atmega32 - uart -


Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Forum,

ich bin neu hier und habe eine Frage zum UART beim Atmega32. Ich weiß, 
leidiges Thema. Das Problem bei mir ist jedoch nicht, dass es nicht 
funktioniert, sondern, dass es mich verwirrt wie es funktioniert. Ich 
benutze unten stehenden Codeabschnitt zur Initialisiertung und zum Test 
des UART.

Laut Avr-Gcc-Tutorial müsste der Modus(?) auf 8N1 gesetzt sein. Wenn ich 
aber in meinem Terminalprogramm(GtkTerm) 8N1 einstelle, kommt nur Quark 
raus. Stelle ich das aber auf 7N1 funktioniert alles perfekt. Ich 
verstehe nicht warum das so ist?

Ach ja, Baudrate ist 9600 und Frequenz 16MHz.


  UBRRH=0;
  UBRRL=103;
  UCSRB |= (1<<TXEN);                            
  UCSRC |= (1<<URSEL)|(1 << UCSZ1)|(1 << UCSZ0); // Asynchron 8N1 
  

  while(1)
  {
    while (!(UCSRA & (1<<UDRE)))  
    {
    }
    UDR = 'a'; 
    while (!(UCSRA & (1<<UDRE)))  
    {
    }
    UDR = 'b'; 
    setGreen(1);
  }

Gruß Tobias

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ach mist vergessen, ignoriert das "setGreen(1);"

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum beschreibst Du die Steuerregister mit "|="? Lass das "|" weg.

Ansonsten: Wie sieht es mit Taktquelle und so aus? Quarz?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, ich hab die das "|" rausgenommen, keine Veränderung. Bin noch nicht 
so fit mit C.

Taktquelle ist ein Quarz. Fuses sind korrekt gesetzt.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tja, also die Einstellungen sind lt. Datenblatt offensichtlich 
tatsächlich korrekt. An obigem Code liegt es also wahrscheinlich 
nicht...

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tobias wrote:
> Ok, ich hab die das "|" rausgenommen, keine Veränderung. Bin noch nicht
> so fit mit C.
Mit dem "|=" werden eventuell bereits gesetzte Bits beibehalten. Wenn am 
Register sonst noch nichts gemacht wurde, sollten zwar alle Bits 0 sein, 
aber sicher ist sicher. In so einem Fall ist das "|=" nicht ratsam 
(zumal es auch noch mehr Code erzeugt als ein einfaches "=").

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn Du hast, nimm einen Ossi und messe mal die Bitzeit, sollte bei 9600 
Baud 104us sein.
Dann sende ein 'U' = 0x55 = 0b01010101.
Es sollte also 4 Null-Bits und 4 EINS-Bits + Startbit und Stopbit 
erscheinen.
Wenn er tatsächlich nur 7 Bits übertragt, dann fehlt ein Null-Bit.

Gruß 900ss

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
900ss D. wrote:
> Wenn Du hast, nimm einen Ossi
Das ist Diskriminierung! Oder meinst Du, ein Ossi kann das besser, als 
ein Wessi?

Autor: 900ss D. (900ss)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Johannes M. wrote:
> 900ss D. wrote:
>> Wenn Du hast, nimm einen Ossi
> Das ist Diskriminierung! Oder meinst Du, ein Ossi kann das besser, als
> ein Wessi?

Klaro. Zeig mir einen Wessi, der so kurze Bitzeiten messen kann. Ein 
Ossi schafft das locker.

Autor: Stefan B. (stefan) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
900ss D. wrote:

> Klaro. Zeig mir einen Wessi, der so kurze Bitzeiten messen kann. Ein
> Ossi schafft das locker.

Dann müsste es aber heissen

>> Dann sende ein 'U' = 0x58 = 0b01011000.

SCNR

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ne, ein Oszilloskop hab ich leider nicht. Gibts noch andere Vorschläge?

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok, anscheinend gibt es ein Problem bei der Spannungsversorgung. Ich 
werde versuchen das zu korriegieren und melde mich dann nochmal.

Autor: Tobias (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Alles klar. Problem gelöst. Es lag tatsächlich an einer falschen 
Spannungsversorgung. Danke für eure Hilfe!

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.