ich habe seit kurzem Probleme mit der RS232. Im Terminal erscheinen die Daten erst, sobald (während) ich einen Reset am PIC auslöse. Was kann das sein? Ich gebe die Daten mit folgender FUnktion aus: void Usart_write(unsigned char data) { while(!TXIF); TXREG = data; }
Ein bißchen mehr von Deinem Quelltext würde uns allen das Antworten erleichtern. ;-)
da ist nicht viel... ist bei einer schleife das selbe: i=48 //ASCII48 = "0" 57 = "9" do{ Usart_write(i) }while((i++)<58); so bekomm ich die Zahlen von 0 bis 8 geliefert, wenn ich resete, kommt auch noch die 9
Ich kenne mich mit PICs nicht aus. Vielleicht musst du auf ein Flag warten, dass du neue Daten nachliefern kannst und der Buffer nicht grade voll ist. Warum beim Reset die 9 kommt, kann ich dir leider nicht sagen.
Er wartet doch mit
>while(!TXIF);
Die 9 kommt wahrscheinlich, weil die anderen Zahlen überschrieben
werden. Ich glaueb es kann im Terminal eingestellt werden, dass bei
einem neuen Zeichen ein \n eingefügt wird. Dann sollten die Zahlen
untereinander geschrieben werden.
Das Problem konnte ich inzwischen klar definieren: das letzte Zeichen wird erst während (?) eines Resets übermittelt, und dann nochmal anstatt dem ersten Zeichen nach dem Neustart... schon merkwürdig
Chipsammler schrieb:
> das letzte Zeichen wird erst während (?) eines Resets übermittelt...
Welches Terminal-Programm verwendest du?
übertrage mal nach jedem Zeichen ein \n, kann sein das Windows/dein Programm da was puffert
ich verwende Teraterm... aber danke für den Hinweis! Habe nun HyperTerminal versucht und dort trat der Effekt nicht auf... VIelen Dank also!
noch eine Frage: wenn ich TXREG = 0x0A sende müsste ja der Cursor im Terminal in die nächste Zeile springen oder?
Chipsammler schrieb: > wenn ich > TXREG = 0x0A > sende müsste ja der Cursor im Terminal in die nächste Zeile springen oder? Aber nicht unbedingt an den Zeilenanfang zurück :-o 0x0A = Linefeed 0x0D = Carriage Return http://de.wikipedia.org/wiki/Steuerzeichen
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.