ATMega88, UART, Fleury bekomme ständig '#'

Gast #1192375
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:
1
        // in der tabelle vom datasheet steht's error=0.0% für 8MHz und 250k baud
2
        uart_init(UART_BAUD_SELECT(250000,F_CPU)); // F_CPU is 8000000
3
        lcd_clrscr();
4
  lcd_puts("WAIT RCV\n");
5
  char data_rcvd = ' ';
6
  while(1) {
7
    data_rcvd = uart_getc();
8
    if(data_rcvd & UART_NO_DATA) {
9
      lcd_puts("NO DATA\n");
10
    }
11
    else if(data_rcvd & UART_FRAME_ERROR) {
12
      lcd_puts("FRAME ERROR\n");
13
    }
14
    else if(data_rcvd & UART_OVERRUN_ERROR) {
15
      lcd_puts("OVERRUN ERR\n");
16
    }
17
    else if(data_rcvd & UART_BUFFER_OVERFLOW) {
18
      lcd_puts("BUF OVERFLOW\n");
19
    }
20
    else { lcd_putc(data_rcvd); }
21
  }

Bin dankbar für jede hilfe :(
Gast
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?
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...
Gast
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
Gast
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?
Gast
Pff, das sollte ich selbst von der zeile:
1
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

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