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
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
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; }
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?
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
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.