mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik UART Atmega 8, avrgcc, AVR


Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ich versuchte gerade die Uart Bibliothek von Peter Fleury zu verwenden.
Homepage: http://jump.to/fleury unter AVR-Software (UART Library)

Wollte nur die empfangenen Zeichen am LCD ausgeben, funktioniert aber 
überhaupt nicht.

Meine LCD Routinen funktionieren zuverlässig, wurden schon oft 
verwendet.

Stimmt die Initialisierung nicht?

Code
#include "uart.h"        // Serielle Schnittstelle

#define xtalcpu   18432000L
#define baudrate   57600

// Uart initialisieren
uart_init(baudrate);


while(1) {                               // Hauptschleife

setze_cursor(0,2);                       // cursor in 2 Zeile setzen
Uart_zeichen = uart_getc();              // zeichen und status speichern

while ( !(Uart_zeichen & 0xFF00) ) {
         zeichen = Uart_zeichen & 0xFF;
         lcd_daten(zeichen);             // zeichen auf LCD ausgeben
         _delay_ms(50);_delay_ms(50);_delay_ms(50);_delay_ms(50);

  Uart_zeichen = uart_getc();
}

}

Was mache ich falsch?

Bitte um hilfreiche Beiträge
Werner

P.S wie kann ich die Baudrate auf 115200 stellen ? ist ja nur ein 
unsigned int in der uart_init?

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Werner wrote:

Was kann man sich unter

> Wollte nur die empfangenen Zeichen am LCD ausgeben, funktioniert aber
> überhaupt nicht.

vorstellen?

Dir ist schon klar, dass du fast alle empangenen Zeichen an Position
0, 2 ausgeben wirst?

Ich würde das Testprogramm so schreiben
// sicherheitshalber ein U um die 57600 definiert zu einem unsigned
// zu machen
#define baudrate   57600U

...

  // Uart initialisieren
  uart_init(baudrate);

  setze_cursor(0,2);                       // cursor in 2 Zeile setzen

  while(1) {                               // Hauptschleife

    unsigned int Uart_zeichen = uart_getc();              // zeichen und status speichern
 
    if( (Uart_zeichen & 0xFF00) == 0 ) {
      zeichen = Uart_zeichen & 0xFF;
      lcd_daten( zeichen );             // zeichen auf LCD ausgeben
    } 
  }

}

Ansonsten:
Schon mal die Checkliste hier durchgegangen:
http://www.mikrocontroller.net/articles/AVR_Checkl...

>
> P.S wie kann ich die Baudrate auf 115200 stellen ? ist ja nur ein
> unsigned int in der uart_init?

Das wirds dann wohl nicht spielen.

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.