Forum: Mikrocontroller und Digitale Elektronik Fehler bei Datensendung über RS-232


von NobbyH (Gast)


Angehängte Dateien:

Lesenswert?

Hallo Forengemeinde,

benötige leider mal wieder Hilfe, da ich nicht wirklich weiterkomme.

Anbei deas Programm, welches nur funktioniert, wenn ich die rot 
markierte Delay-Funktion verwende.
Eigentlich sollte es mit der in der Senderroutine rs_send vorhandenen 
Abfrage des TCX0 Bits ohne funktionieren. Tut es aber nicht. Ohne 
Delay-Funktion erhalte ich nach dem ersten OK nur noch undefinierte 
Zeichen.
Mit Delay wird es einwandfrei ausgegeben.

Wo liegt der Gedankenfehler? Laut Datenblatt wird das Bit erst nach der 
Sendung des Zeichen gesetzt. Nur leider scheint die Sleep-Funktion
früher einzusetzen als das Zeichen gesendet ist.

Gruß
NobbyH

von NobbyH (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,

leider scheint die Formatierung im Text-Format verloren zu gehen.
Deshalb noch einal als Word-Doc.
Gruß
NobbyH

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

NobbyH schrieb:
> leider scheint die Formatierung im Text-Format verloren zu gehen.

Was für eine Formatierung?

> Deshalb noch einal als Word-Doc.

Das ist Quelltext. Den will sich niemand als Word-Dokument ansehen.

von NobbyH (Gast)


Lesenswert?

@rufus,

im Word-doc ist die Zeile mit dem Delay Aufruf rot markiert.
Diese Markierung ist im TXT File verloren gegangen.
Werde zukünftig keine Docs mehr anhängen.

Weiß denn niemand Rat?

Gruß
NobbyH

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

NobbyH schrieb:
> im Word-doc ist die Zeile mit dem Delay Aufruf rot markiert.
> Diese Markierung ist im TXT File verloren gegangen.

Das lässt sich mit einem Kommentar problemlos lösen.

Was sagt denn das AVR-Tutorial zur Behandlung der seriellen 
Schnittstelle?

Was soll denn das Programm überhaupt anstellen?

von Karl H. (kbuchegg)


Lesenswert?

NobbyH schrieb:
> @rufus,
>
> im Word-doc ist die Zeile mit dem Delay Aufruf rot markiert.

SChön.
Deswegen werden sich trotzdem die meisten davor hüten ein DOC 
aufzumachen.

> Diese Markierung ist im TXT File verloren gegangen.
1
    .....
2
3
//************************
4
//
5
    _delay_ms( .... )
6
//
7
//************************
8
    .....

auch so ist er nicht zu übersehen und du hast den Vorteil, dass du nicht 
erst Word hochstarten musst.

Oder so
1
    .....
2
    _delay_ms( .... );   // <--------- ***************
3
    .....

oder ....

von NobbyH (Gast)


Lesenswert?

Hi,

danke für den Tip mit dem Kommentar. Hätte ich auch drauf kommen können.

Bei dem Programm handelt es sich um eine reines Test-Programm, bei dem 
alle für diese Problem nicht erfoderlichen Dinge weggelassen sind.

Das Test-Programm soll nach dem Start über RS-232 und danach alle 168 
Sekunden "OK" ausgeben. Dazwischen geht es in sleep. Leider nach dem
ersten "OK" kein weiteres mehr ausgeben, sondern nur noch Fragmente.

Laut Datenblatt soll mit der Abfrage des TCX0 Bits das Ende der Sendung 
des RS-232 Bytes abgefragt werden können. Dies scheint aber nicht 
korrekt zu funktionieren.

Wenn ich hinter der Sendung von "OK" eine Zeitschleife einfüge, erfolgt 
die vollstndoge Sendung des Bytes. Es scheint als ob die CPU vor 
Sendeende in Sleep geht.

Gruß
NobbyH

von Georg G. (df2au)


Lesenswert?

Das "fertig mit senden" Bit wird nur gelöscht, wenn ein Interrupt 
ausgelöst wurde. Ansonsten musst du es von Hand löschen. So steht es im 
Datenblatt...

von NobbyH (Gast)


Lesenswert?

@df2au

Georg G. schrieb:
> Das "fertig mit senden" Bit wird nur gelöscht, wenn ein Interrupt
>
> ausgelöst wurde. Ansonsten musst du es von Hand löschen. So steht es im
>
> Datenblatt...

Das ist korrekt. Habe ich auch gelesen, aber dann doch nicht 
berücksichtigt.
Danke für den Hinweis. Manchmal sieht man den Wald vor lauter Bäumen 
halt nicht.

Gruß
NobbyH

PS: War eine Woche unterwegs, deshalb erst heute das Feedback.

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
Noch kein Account? Hier anmelden.