www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Uart problem


Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo zusammen!

hab ein kleines prblem mit meinem uart vom amega8 den ich in winavr
programmiere:

wenn ich vom pc aus zeichen an meinen µc sende und die in einen puffer
schreibe, emfange ich als erstes zeichen immer 0 dafür fehlt mit das
letzte zeichen.
beispiele: ich schicke "test"
           ich empfange "0tes"

wo bekomme ich das letze zeichen her? im UDR steht noch das "s"

gruß michael

Autor: Tom (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Meine Kristallkugel sagt mir, dass du die Daten aus dem
Zwischenspeicher liesst, bevor diese hinein geschrieben wurden.
Initialisiere mal den Speicher mit 'a' und schau, ob du dann "ates"
bekommst ;-).

HTH

Tom

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo tom,

hab das mal so gemacht wie du gesagt hast.
ergebniss: "0tes"

hier mal ein auszug aus meinem programm
speicher soll ein ringbuffer sein, zeichenempfangen der zeiger.

signal (sig_uart_recv)
{
  zeichenempfangen++;
  if(zeichenempfangen>49)
    zeichenempfangen=0;
  speicher[zeichenempfangen]=udr;
}

Autor: A.K. (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und wenn Du nun "zeichenempfangen" Bytes ab "speicher[0]" ausgibst,
dann kommt als 1. Zeichen Müll und das letzte fehlt. Weil das erste
Zeichen nach [1] geschrieben wird.

Hier also: erst reinschreiben, dann inkrementieren.

Andere Frage: bist Du sicher das Du da keinen Ringpuffer brauchst?

Autor: Michael (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hey, na klar!

jetzt funzt es, super danke!!

a.k.
Andere Frage: bist Du sicher das Du da keinen Ringpuffer brauchst?

verstehe deine frage leider nicht, hab doch gesagt das ich speicher als
ringbuffer verwende. das hier war jedoch nur zu testen, den buffer
brauche ich erst später.

danke nachmals

michael

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.