www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Uart kann keine 0 übermitteln


Autor: Ralf Ramsauer (rralf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Moin.

Mein AVR schaffts absolut nicht ne "echte 0" auf den PC zu übertragen. 
Am PC kommt alles mögliche an, nur keine null.

An was kann das liegen?

Noch n bisschen Code:


Initialisierung der Uarts:
        UCSRB |= (1<<TXEN)|(1<<RXEN)|(1<<RXCIE);
        UCSRC |= (1<<URSEL)|(3<<UCSZ0);
        UBRRH=(uint8_t)(UART_BAUD_CALC(UART_BAUD_RATE,F_OSC)>>8);
        UBRRL=(uint8_t)UART_BAUD_CALC(UART_BAUD_RATE,F_OSC);
Und ich mach zu Testzwecken im Moment folgendes:
for(;;) uart_send(0)

Konfiguration: ATMega32, 16MhZ Quarz

Egal welche Baudraten ich verwende, es kommt nur Käse an.
Alle anderen Zahlen von werden korrekt übermittelt.
Habt ihr ne Idee?

Danke schonmal!

Ralf

Autor: Werner B. (werner-b)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das Problem dürfte der PC sein...

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

die erste Frage wäre: welches Terminalprogramm am PC?
0 ist ja schließlich ein Steuercode, der in üblichen Terminalemulationen 
"nichts" bedeutet und das macht das Terminalprogramm dann auch.
HTerm könnte dann weiterhelfen.

Gruß aus Berlin
Michael

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
wenn es HEX 0x00 ist ... das ist meist ein stringterminierungszeichen

vlt dadurch

Autor: Ralf Ramsauer (rralf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Terminalprogramm ist gtkterm, der mir direkt alle Zeichen als Hexzahlen 
anzeigen kann, von demher kanns also nicht als Steuerzeichen 
interpretiert werden, was auch irgendwo keinen Sinn macht weil es kommen 
ständig von null verschiedene Werte, und nicht nur ein Wert, der von 0 
verschieden ist.

Achja und ich verwende nen USB-RS232 Wandler

Autor: UART (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

da die Quellen von  "uart_send(0)" nicht vorliegen sagt meine 
Kristallkugel ein "überfahren" des Senderegisters voraus.

MfG

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Schick doch mal eine 0 aus dem PC raus und mach eine Brücke zwischen Pin 
2 und 3 am Sub-D...
Was passiert dann?

Autor: Ralf Ramsauer (rralf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
void uart_send(char c){
        while (!(UCSRA & (1 << UDRE)));
        UDR = c;
}


Wenn ich ne Brücke reinhänge und 0 übermittle kommt sie richtig zurück

Bin verwirrt....

Autor: UART (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie passen die 16Mhz zur Baudrate (Fehlertoleranz)?

Autor: Ralf Ramsauer (rralf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab 9600bps, kann mir nicht vorstellen dass es daran liegt, weil alle 
anderen zeichen gehen ja

Im moment versuch ich das hier:

uart_send(10);
uart_send(20);
uart_send(30);
uart_send(40);
uart_send(50);
uart_send(60);
uart_send(0);


10-60 kommt richtig an, bei der 0 kommt was er gerade will:)

Autor: UART (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Datenblatt zum Mega32 ab Siete 140 könnte helfen.

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> bei der 0 kommt was er gerade will:)
Dann wackle doch mal mit den hinteren Bits: 0x01, 0x02, 0x04...

Autor: Ralf Ramsauer (rralf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also hab rausgefunden dass anscheinend wirklich am Terminal Programm 
liegt

wenn ich mit hexdump -C /dev/ttyUSB0 rangeh zeigt er mir alles richtig 
an.

Aber ich versteh trotzdem nicht wieso er erst lauter Kram rauslässt.

Autor: Urbs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Aber ich versteh trotzdem nicht wieso er erst lauter Kram rauslässt.
Kannst Du das mal näher erläutern? Ich meine gelesen zu haben, das die 
Null garnicht rüberkkommt. Dann scheint doch etwas rüberzukommen, aber 
statt der gesendeten Null irgendwelche Zufallsbits.
>bei der 0 kommt was er gerade will

Oder der Satz
>Am PC kommt alles mögliche an, nur keine null.
bedeutet, das entweder statt der Null nichts oder ein anderer Wert 
kommt.
Das wäre schon wichtig zu wissen.

Aus der Verwendung von Am gtkterm folgere ich, das Du unter *n*x 
arbeitest. Was gibt denn stty aus?

Ich habe kürzlich ein ähnliches Problem mit einem Perl Programm gehabt. 
Da musste ich mit stty rumspielen.

Das
>wenn ich mit hexdump -C /dev/ttyUSB0 rangeh zeigt er mir alles richtig
>an.
spricht wiederrum gegen ein Problem, das mit stty zu lösen wäre. Aber 
vielleicht ändert gtkterm ja die Einstellungen. Andererseits wundert 
mich, das hexdump das richtig ausgibt. Vor allem ohne "<" oder so.

Ausserdem ist neu, das Du die serielle Schnittstelle über USB 
angeschlossen hast. Was ist das für ein Konverter? Das kann manchmal 
auch Probleme geben.

Autor: Hegy (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Mit dem gtkterm 0.99.5 und der fehlenden 0.....
Das ist definitiv ein Bug in gtkterm.
Das habe ich vor einiger Zeit schonmal erforscht, kukkkst du mal hier:

Beitrag "Bug in GTKTerm 0.99.5"

Autor: Ralf Ramsauer (rralf)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Genau das selbe hatte ich auch

Schon lustig, ich kram ewig rum bis ich den Fehler gefunden habe ;)

Autor: Patrick (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann es vielleicht daran liegen, dass in der ASCII-Tabelle die "0" nicht 
"0", sondern "NUL" bedeutet? Eine echte "0" hat den Wert 48.

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.