www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Takt nicht immer gleich?


Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Lothar Miller (lkmiller) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> jetzt weiß ich nicht mehr so recht woran es sonst noch liegen könnte.
Software?
Poste doch mal den Sourcecode.

Autor: Sebastian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kenne das für gewöhnlich nur mit internem RC. Der KONDENSATOR intern ist 
nicht sehr Temperaturstabil.Fuses richtig gesetzt??

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Toni (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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?

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Bensch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> 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.

Autor: Toni (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht lesenswert
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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.