mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Attiny interner Takt nur sehr ungenau?


Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi Leute,

ich habe folgendes Problem. Ich habe eine USB-Anwendung (V-usb) auf dem 
Tiny85 und der läuft mit internem Takt, wo der OSCAL-Wert per Firmware 
kalibriert wird. Allerdings musste ich feststellen, dass zwar USB mit 
einem Takt von 12MHz läuft, allerdings meine delays sehr ungenau sind. 
Woran kann das liegen, was mache ich falsch?
liegt das daran, dass der OSCAL-Wert nun für USB optimiert ist und darum 
die eigentlichen delays in dem Programm nicht korrekt ablaufen?
Gruß Spice

Autor: Richard U. (ronw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das liegt daran, dass die USB-Interrupts busy-waiting Warteschleifen 
(die du wahrscheinlich verwendest) unvorhersagbar unterbrechen und damit 
zu dem beobachteten Verhalten führen.
Eine Lösung wäre es, einen Timer zu verwenden, mit dem die Wartezeiten 
gemessen werden.

Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für die Info.

ich verfolge das verhalten, dass du beschreibst auf dem Oszi.
Wenn ich die Interrupts ausschalte, bevor ich in die Warteschleife gehe, 
beobachte ich eine ungenauigkeit die gering ist, aber die ist da und um 
die geht es mir. Wenn ich aber in die warteschleife gehe, bevor ich die 
interrupts ausschalte, dauert die Warteschleife fast doppelt so lang, da 
dort die interrupts zwischen funken (verständlich)
Aber wie gesagt mir geht es um die ungenauigkeiten, die trotz 
deaktiviertem interrupt auftreten. Auch zu sehen ohne USB-Firmware...
Ich vermute, dass ich mit den Fuses nicht zurecht komme. Obwohl die 
Fuses richtig scheinen, da USB funktioniert. Wo liegt mein Fehler, 
welcher mich bereits tage und nächte kostet?
Für jede Hilfe und Anregung bin ich dankbar...
MFG Spice

Autor: hownottobeseen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Läuft der AVR bei automatischer Kalibrierung nicht bei 16,5MHz?

Autor: Spice (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das weiss ich nicht genau.
Der Tiny bzw die USB-Firmware war auf 16.5MHz eingestellt. Doch leider 
wurde da kein Device entdeckt. Aus dem Grunde habe ich mit den Fuses und 
mit der Freuquenz rumgespielt, bis Windows bei 12MHz (laut Makefile) ein 
Device gefunden hat.
Vielleicht weißt du näheres dazu oder hast sowas (VUSB) schon mal 
gemacht?
Danke nochmal und Gruß
Spice

Autor: hownottobeseen (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
soweit ich weiß läuft der USB bei interner Taktung auf den Tinys mit 
12,8 oder 16,5MHz, steht zumindest in der usbconfig-prototype.h:
Clock rate of the AVR in kHz. Legal values are 12000, 12800, 15000, 16000,
16500 and 20000. The 12.8 MHz and 16.5 MHz versions of the code require no
crystal, they tolerate +/- 1% deviation from the nominal frequency

Schalte doch einfach mal CKOUT an und schau, welcher Takt am 
entsprechenden Pin liegt. Macht dein Frequenzzähler den Takt nicht mit, 
nimm nen Timer, der für dich runterteilt.

Ansonsten kannst du auch den OSCCAL-Wert aus dem EEProm lesen bzw. 
direkt von der Firmware (-> Easylogger) ausgeben lassen.

Achja: lass den Tiny lieber bei 5V laufen, bei 3,3V (per 2 Dioden) sind 
anscheinend nur kurze Leitungslängen möglich bzw. liegt die Kalibrierung 
daneben (woran es genau liegt, kann ich nicht sagen)

hth

Autor: mp (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der interne Oscillator schwankt auch nach der Kalibrierung bis zu 10% 
mit der Temperatur.
Bei uns ist der Tiny deswegen aus der Serie rausgeflogen 
(>10000Stück/Jahr)
Steht aber auch so im Datenblatt, wobei die Realität noch schlimmer ist.

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Neuere ATMegas und ATTinys haben einen recht kräftigen Jitter auf dem 
internen RC-Oszillator. Der freundliche Japaner hat sich auch so seine 
Gedanken darüber gemacht:
http://elm-chan.org/docs/avr/jitter.html
Den Text braucht man nichtmal zu verstehen, die Oszi-Bilder sind 
deutlich genug. Mein Rat: Wenn man es stabil braucht, Quarz nehmen.

@mp (Gast): Glaubst du wirklich, bei anderen Controllern wäre die 
Stabilität großartig besser? RC ist RC, Drift durch Temperatur und 
Alterung sind da normal. Nur daß da Epoxy um den Chip drumherum ist, 
macht es nicht wirklich besser.

Gruß
Jadeclaw

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.