mikrocontroller.net

Forum: Compiler & IDEs ATMega88, UART, Fleury bekomme ständig '#'


Autor: Fittipaldi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo zusammen, hab hier ein kleines problem mit UART auf ATmega88 (bin 
neu bei UART, aber hab schon mit atmels gearbeitet). Das problem 
nämlich: will daten vom computer lesen, dafür zwichen den uC und den 
rechner gibts max3232 (wenn das wichtig ist). Ich starte das "gerät" und 
bekomme ständig auf dem lcd nur '#' oder sowas ähnliches. Aber das gerät 
ist überhaupt nicht mitm computer verbunden! Hier ist das source:
        // in der tabelle vom datasheet steht's error=0.0% für 8MHz und 250k baud
        uart_init(UART_BAUD_SELECT(250000,F_CPU)); // F_CPU is 8000000
        lcd_clrscr();
  lcd_puts("WAIT RCV\n");
  char data_rcvd = ' ';
  while(1) {
    data_rcvd = uart_getc();
    if(data_rcvd & UART_NO_DATA) {
      lcd_puts("NO DATA\n");
    }
    else if(data_rcvd & UART_FRAME_ERROR) {
      lcd_puts("FRAME ERROR\n");
    }
    else if(data_rcvd & UART_OVERRUN_ERROR) {
      lcd_puts("OVERRUN ERR\n");
    }
    else if(data_rcvd & UART_BUFFER_OVERFLOW) {
      lcd_puts("BUF OVERFLOW\n");
    }
    else { lcd_putc(data_rcvd); }
  }

Bin dankbar für jede hilfe :(

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Tolles Gerät...
Ich würde sagen dein Gerät funktioniert nicht richtig.

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

Bewertung
0 lesenswert
nicht lesenswert
250 kBd? Welche PC-Schnittstelle kann das denn? Und wenn sie es 
tatsächlich können sollte, weiß der PC das auch, dass er mit 250 kBd 
senden soll?

Welche Taktquelle verwendet der Controller?

Autor: Peter (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bezweifle, dass der PC eine Baudrate von 250000 Baud unterstützt. 
Normalerweise ist das maximum 115200 Baud, versuch es aber zum Anfangen 
lieber mal mit 9600 Baud.

Was verwendest Du auf der PC-Seite um  Daten auf die RS232 zu senden? 
Hyperterminal? Welche Einstellungen?

Fehlt da nicht noch ein LCD-Init in deiner uC Software?

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

Bewertung
0 lesenswert
nicht lesenswert
Peter wrote:
> Ich bezweifle, dass der PC eine Baudrate von 250000 Baud unterstützt.
> Normalerweise ist das maximum 115200 Baud,
Und wenn höher, dann eher 230400 Bd, aber keine 250000...

Allerdings schreibt er ja, dass (noch) gar keine Verbindung zum 
"Rechner" besteht...

Autor: Fittipaldi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jup, es gibt noch keine verbindung zw. max3232 und den computer. also 
nur zw uC und max3232 ... warum sollte der rechner 250k nicht 
unterstützen, es existiert die möglichkeit, wenigstens auf meinem 
lenovo, aber ok, das ist jetzt in dem fall kleinigkeit. aber i kann auch 
mit 9.6k oder 19.2k versuchen, in der tabelle steht für sie 0.2%. i 
benutze der interne oszillator

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

Bewertung
0 lesenswert
nicht lesenswert
Fittipaldi wrote:
> benutze der interne oszillator
Vergiss es! Der interne Oszillator ist für asynchrone Datenübertragung 
ungeeignet.

Autor: Fittipaldi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, trotzdem, das ist kein grund ständig interrupts zu bekommen (soweit 
ich das lib von fleury verstehe, uart_getc() liefert ein char, nur wenn 
ein interrupt entstanden ist). und wenn ich ständig lesen kann -> 
ständig interrupts, oder?

Autor: Stefan Ernst (sternst)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Es scheint nur so, als könntest du ständig was lesen, weil uart_getc 
einen 16-Bit-Wert zurück gibt und die Info "nichts empfangen" steckt in 
den oberen 8-Bit. Bei einer Zuweisung an ein char geht diese Info somit 
verloren.

Autor: Fittipaldi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Pff, das sollte ich selbst von der zeile:
return (UART_LastRxError << 8) + data;

erkennen können. Danke für das Tip, jetzt kann ich mich auf die 
computer<->ding verbindung konzentrieren.

lg

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.