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


von Werner (Gast)


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?

von Karl H. (kbuchegg)


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
1
// sicherheitshalber ein U um die 57600 definiert zu einem unsigned
2
// zu machen
3
#define baudrate   57600U
4
5
...
6
7
  // Uart initialisieren
8
  uart_init(baudrate);
9
10
  setze_cursor(0,2);                       // cursor in 2 Zeile setzen
11
12
  while(1) {                               // Hauptschleife
13
14
    unsigned int Uart_zeichen = uart_getc();              // zeichen und status speichern
15
 
16
    if( (Uart_zeichen & 0xFF00) == 0 ) {
17
      zeichen = Uart_zeichen & 0xFF;
18
      lcd_daten( zeichen );             // zeichen auf LCD ausgeben
19
    } 
20
  }
21
22
}

Ansonsten:
Schon mal die Checkliste hier durchgegangen:
http://www.mikrocontroller.net/articles/AVR_Checkliste#UART.2FUSART

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

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.