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
Hallo, leider scheint die Formatierung im Text-Format verloren zu gehen. Deshalb noch einal als Word-Doc. Gruß NobbyH
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.
@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
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?
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 ....
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
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...
@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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.