Uart problem

Gast #170590
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
Gast #170591
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
Gast #170592
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;
}
Gast #170593
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?
Gast #170594
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

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