Hi, ich vermute zwar, dass mein Problem erst mit der kompletten Codesichtung (Helfer dürfen sich gerne per PN kurz melden) zu lösen ist, jedoch versuch ich mal meine Vermutungen zu erläutern. 1. Mein Programm läuft zu 100% in der aktuellen Version. 2. Es handelt sich um einen Atmega88, der mittels SoftPWM ein Mosfet(DC-Motor) im timer0 treibt. Die Auflösung ist 10Stufig. Timer1 ist auf 1Sekunden-Intervall eingestellt und beinhaltet lediglich die Veränderung des Stufenwertes von 0 auf 10 und zurück. (Der Motor soll etwas gedämpft anlaufen und abbremsen) 3. Nun gibt es auch noch 2 Relais, die eine Umpolung bewirken. Bevor dies geschieht soll der Motor noch auslaufen können. Ein simples zusätzliches Warten nachdem der Motor auf Stufe 0 runtergefahren wurde sollte meines Erachtens reichen. Das Problem: setze ich in den Funktionsablauf (zur Erinnerung: im timer1=1sec) ein _delay_ms(5000) ein, dann gibt es einen ziemlich unschönen Seiteneffekt. Das Mosfet haut noch mal die vollen 100% in den Motor bis die Relais schließlich schalten. Vermutlich bleibt der On-Zustand des Pins für den Mosfet während des _delay_ms hängen. Jedoch wurde vorher bereits auf Stufe 0 gefahren, weshalb mit dies nicht schlüssig erscheint. Kann sich Jemand denken, was dort schief laufen könnte, oder wo mein Denkfehler liegt? Den Code möchte ich hier nicht posten, weil er dann für immer online ist. Außerdem gibt es keinerlei Hexenwerk, wovon noch Jemand lernen könnte. Grüße Oekel
:
Verschoben durch User
Ralf G. schrieb: > Wie immer: Zeile 42 Sehr witzig #define ANTWORT_AUF_ALLES 42; hab ich sicherheitshalber immer in Zeile 1! Darf ich dir den Code zusenden und du schaust mal rein, oder wolltest du dich nur über mich lustig machen?
D a v i d K. schrieb: > Den Code möchte ich hier nicht posten, weil er dann für immer online > ist. Außerdem gibt es keinerlei Hexenwerk, wovon noch Jemand lernen > könnte. Tja, deine Entscheidung. Entweder posten, und Hilfe bekommen, oder sein lassen, und Zeile 42 selber suchen. Überlegs dir... Oliver
Schick's doch mal durch den Simulator. Und zwar mit angepassten Zeiten. Also 10stufige Auflösung mit 1ms, delay mit 5ms. [ Damit du da heute noch durchkommst ;-) ] P.S.: Hmm. '_delay_ms(5000)' geht das überhaupt? Gab's da nicht so eine F_CPU-abhängige Obergrenze?
Ralf G. schrieb: > P.S.: > Hmm. '_delay_ms(5000)' geht das überhaupt? Gab's da nicht so eine > F_CPU-abhängige Obergrenze? The maximal possible delay is 262.14 ms / F_CPU in MHz. When the user request delay which exceed the maximum possible one, _delay_ms() provides a decreased resolution functionality. In this mode _delay_ms() will work with a resolution of 1/10 ms, providing delays up to 6.5535 seconds (independent from CPU frequency). The user will not be informed about decreased resolution.
Timmo H. schrieb: > The maximal possible delay is 262.14 ms / F_CPU in MHz. ... > _delay_ms() will work with a resolution of 1/10 ms, providing delays up > to 6.5535 seconds (independent from CPU frequency). The user will not be > informed about decreased resolution. War bekannt, habe die Doku auch gelesen. Aber wer round About 4-6Sekunden verzögerung braucht, den jucken 1/10 ms eher weniger. @ralg: Den Simulator habe ich noch nie genutzt. Wird wohl höchste Zeit. Danke!
Timmo H. schrieb: > The user will not be informed about decreased resolution. Ach so, es ging da nur um die Genauigkeit...
D a v i d K. schrieb: > setze ich in den Funktionsablauf (zur Erinnerung: im timer1=1sec) ein > _delay_ms(5000) ein, dann gibt es einen ziemlich unschönen Seiteneffekt. Dann schmeiß halt das mistige delay raus, hast den Timer ja eh schon am laufen!
Teo Derix schrieb: > Dann schmeiß halt das mistige delay raus, hast den Timer ja eh schon am > laufen! Machmal möchte man/ich nicht nur das WorkArround benutzen, sondern verstehen wo der Fehler wirklich liegt ;) @Admins: Erstaunlich, dass ihr euch den Stress mit den "feigen" Gästen hier immer noch antut. Evtl. noch ein barmherziger Samariter unterwegs, der sich das mal anschauen möchte. Eilt auch nicht, möchte nur langfristig draus lernen. (400 Zeilen Code, relativ sauber strukturiert) Grüße Oekel
D a v i d K. schrieb: > Machmal möchte man/ich nicht nur das WorkArround benutzen, sondern > verstehen wo der Fehler wirklich liegt ;) Ok, kann ich mehr als verstehen :) D a v i d K. schrieb: > Evtl. noch ein barmherziger Samariter unterwegs, der sich das mal > anschauen möchte. Eilt auch nicht, möchte nur langfristig draus lernen. > (400 Zeilen Code, relativ sauber strukturiert) Warum diese Geheimhaltung? Post den Mist und es werden sich mehr dazu äußern als Dir lieb ist... Ähhh... 8-}
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.