Vielleicht kann mir jemand mit folgenden Problem mal auf die Sprünge helfen, was ich hier falsch mache. Ich würde gerne Stings per UART vom Atmega168 auf den PC übertragen. Hierzu nutze ich einen FT232RL. Ansich funktionier die Übertragung, solane ich nur einen kurzen String übertrage. Wird dieser länger, macht der µC scheinbar immmer einen Reset, sodass der Sting nur Abgehackt im Terminalprogramm (Putty) erscheint. Momentan verwender ich 19200 als Baudrate. Gehe ich runter auf 9600, wird noch weniger Inhalt übertragen. Mach ich beim Senden etwas falsch? Ich verwende den Code aus dem GCC-UART-Tutorial und gebe den Text wie folgt aus: uart_puts("\r\nHallo Welt, Hallo Welt, Hallo Welt, Hallo Welt"); Die Ausgabe sieht dann leider wie im Screenshot aus.
> Mach ich beim Senden etwas falsch?
WDP3..0 auf 0000 (16ms) programmiert?
Dann hast du sehr wahrscheinlich einen Speicher-Überlauf. Benutze an anderen Stellen weniger RAM oder beschränke Dich auf kurze Strings.
Wenn ich testweise, statt viermal "Hello World" in einem Rutsch auszugeben, 4 einzelne Übertragungen daraus mache, besteht das Problem dennoch. Zweimal klappts und dann gibts nen Reset.
Stefan U. schrieb: > Dann hast du sehr wahrscheinlich einen Speicher-Überlauf. Mark schrieb: > Gehe ich runter auf 9600, > wird noch weniger Inhalt übertragen. Das spricht gegen diese Prognose. Georg
> Zweimal klappts und dann gibts nen Reset.
Das klingt immernoch sehr nach WDP - überprüfen! Und wenn Du schon dort
bist dann schau Dir WDTON auch noch gleich an ob das 0 ist.
Mark schrieb: > Wenn ich testweise, statt viermal "Hello World" in einem Rutsch > auszugeben, 4 einzelne Übertragungen daraus mache, besteht das Problem > dennoch. Dann gibt dem Wachhund zwischen den Übertragungen doch mal eine Streicheleinheit.
Eigentlich ist zu dem Zeitpunkt der Ausgabe noch gar kein Watchdog aktiv. Mache die Übertragung momentan direkt nach der uart_init und nicht später im Programm, um solche Feher ausschließen zu können.
Moin, Rechne mal nach. 16ms Watchdog kommt bei 19200 Baud ziemlich gut hin. Gruß, Norbert
> Eigentlich ist zu dem Zeitpunkt der Ausgabe noch gar kein Watchdog > aktiv. Hast Du das anhand WDP und WDTON überprüft oder vermutest Du das nur?
Wie wird die Schaltung versorgt? Bricht vielleicht die Spannung ein?
Wie groß ist in der UART Lib der Puffer eingestellt?
Danke an alle, danke an g457. Du hattest recht. Lag am Watchdog!!! Vielen Dank, da wäre ich nicht drauf gekommen und hab schon sinnlose Stunden davorgehockt.
Aber noch eine weiter Frage. Momentan ist es ja so, dass die Strings ununterbrochen durch Putty jagen. Wie realisiert man eine einmalige Ausgabe, sodass die Daten nicht ständig Flackern? Einfach nur die Daten durch eine Schleife einmal übertragen lassen? Oder gibts da nen speziellen Befehl?
Mark schrieb: > Wie realisiert man eine einmalige Ausgabe, sodass die Daten nicht > ständig Flackern? Einfach nur die Daten durch eine Schleife einmal > übertragen lassen? Oder gibts da nen speziellen Befehl? Hä? Wenn Du das in einer Schleife sendest kommt es natürlich immer wieder. Was für eine Schleife? Übertrage es einmal und es kommt einmal. Überträgst Du es in der Schleife, kommt es natürlich bei jedem Durchgang der Schleife. Gruß, Norbert
Warscheinlich im Arduino-Loop() Gruss Chregu
Du kannst statt "Hallo Welt\n" einfach "Hallo Welt\r" senden, dann sollte außer dem Cursor nichts mehr flackern.
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.