Also mein Problem is folgendes: Ich habe auf einem ATMEG88 einen Regler laufen der mir mit Hilfe eines Schrittmotors ein Gelenk positionieren kann, was auch die meiste Zeit funktioniert, nur manchmal habe ich das Problem, dass der ganze Controller viel langsamer arbeitet, d.h. der Steppertackt ist um einiges zu langsam, führe ich dann ein Reset durch läuft alles wieder normal. Ich hab mir dann mal gedacht es könnet am Quarz liegen der einfach mit einer zu geringen Geschwindigkeit schwingt, hab dann den Takt ausgemessen und alles war normal :-/ jetzt weiß ich nicht mehr so recht woran es sonst noch liegen könnte. Habt ihr vielleicht eine Idee? Atmega88 @ 14.7456MHz mit 2 33pF Kondis lg
> jetzt weiß ich nicht mehr so recht woran es sonst noch liegen könnte.
Software?
Poste doch mal den Sourcecode.
Kenne das für gewöhnlich nur mit internem RC. Der KONDENSATOR intern ist nicht sehr Temperaturstabil.Fuses richtig gesetzt??
der Sourcecode ist leider ein bischen lang ;-) soll ich evt nur einen bestimmten Teil Posten? Fuses sind sicher richtig gesetzt, wie gesagt, meistens funktioniert es auch richtig nur manchmal (ohne neuprogrammieren oder anderen änderungen) sieht es eben so aus als ob die Quarzfrequenz viel geringer währe. lg
Ich hab übrigens den Speicher relativ voll: Program: 7900 bytes (96.4% Full) (.text + .data + .bootloader) Data: 805 bytes (78.6% Full) (.data + .bss + .noinit) kann es sein, dass dadurch Probleme entstehen? also dass C den Speicher nicht immer gleich vergibt (zb wegen Interrupts) und evt. manchmal dadurch langsamer ist?
Hallo, Dein Programm ist abgestürzt... Irgendein Teilprogramm gerät in den Zustand, daß es den AVR mehr beschäftigt als nötig. Bei C würde ich auch Stack-Overflow in Betracht ziehen oder eben Interruptroutinen, die Dinge erledigen, die nicht dort reingehören, Berechnungen z.B., die bei bestimmten Datenkombinationen viel zu lange brauchen oder Zählerüberläufe, die nicht sauber bearbeitet werden und eine volle Zusatzrunde einlegen oder... Ohne das Programm nur Stochern im Nebel, sicher ist für mich nur, daß der AVR-Takt sich nicht von selber um extreme Werte ändert und ein Quarz schon garnicht, zumindest nicht Grundwellenquarze in AVR-üblicher Benutzung. Gruß aus Berlin Michael
Das kann ungefähr 138 Gründe haben. Ohne Sourcecode kann man dazu keine Aussage treffen. Außer dieser: Am Quarz liegts nicht, denn der schwingt immer gleich schnell.
> Außer dieser: Am Quarz liegts nicht, denn der schwingt
immer gleich schnell.
Im Prinzip ja....
Aber wenn die CKOPT nicht gesetzt ist, setzt er schonmal aus.
Ok hier ist mal der Quellcode, wie es aussieht ist es ein Softwareproblem und der Quarz dürfte immer gleich schnell schwinden, da die Serielle Schnittstelle immer funktioniert. Zum Programm selbst: es wird ein 50kHz Sinussignal getriggert abgetastet, ein beobachter errechnet dann den systemzustand, und der regler (läuft mit 1/4 der abtastrate des beobachters) soll dann die Position ausregeln bzw einer linearisierten sollposition folgen (rampe). einige der Interruptoutienen sind schon etwas länger, aber warum das nur manchmal zu problemen führt wundert mich lg
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.