mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik AVR Butterfly Taktfrequenz


Autor: justus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin mir nicht sicher mit welchem Takt der AVR Butterfly läuft. Nach
verschiedenen Versuchen mit einem Timerinterrupt und verschiedenen
Vorteilern mit Ausgabe an LEDs denke ich, dass es möglicherweise 1MHz
sind. Könnte dies korrekt sein? Leider habe ich kein KO um es direkt zu
messen...

Justus

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Von 1 MHz würde ich ohne Studium der Butterfly-Doku auch erstmal
ausgehen -- das wäre nämlich der interne RC-Oszillator.  Einen Quarz
hat er meines Wissens bestenfalls für die RTC (32 kHz).

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jep, Takt des BF ist im Auslieferungszustand mit der vorinstallierten
Applikation 1MHz vom internen RC-Osz. wie JW schreibt. Dieser Takt wird
bei der vorinstallierten Version (ab V0.6) mittels des on-board 32kHZ
"Uhrenquarzes" kalibriert. Beim vorinstallierten Bootloader und in
der Funktion zum Eingeben des Namens bei der Applikation wird temporaer
auf 2MHz "internal-RC" umgestellt (19200bps bei mgl. kleinem Fehler).
Die Doku zum BF ist nicht besonders hilfreich, aus den Kommentaren im
Quellcode der Original-Applikation und des Bootloaders kann man jedoch
einiges an Information herausziehen.

Autor: justus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Danke für den Hinweis, das Problemchen ist, dass ich 1. noch nie uCs
prorammiert habe,... 2. C nicht kann, da zu meiner Zeit an der
Hochschule Modula2 in war und ich mich anschliessend aufs Feld
Hochfrequenztechnik verlegt habe und 3. ich, was Messinstrumente
anbelangt, relativ schlecht ausgerüstet bin....

So, genug geweint.... wahrscheinlich hilft halt wirklich nur "sich
durchbeissen".

Viele Grüsse und einen schönen Sonntag
Justus

Autor: justus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist es für eine Übertragung über die serielle Schnittstelle zwingend
nötig, die Taktrate zu kalibrieren?
Ich habe vor, Daten mit dem 1MHz Takt über den UART mit 4800bps zu
senden (Fehler der Datenrate gemäss Datenblatt: 0.2%). Bzw. hat jemand
Erfahrung, wie stark der 1MHz Takt vom Sollwert abweicht? Wie sieht es
denn mit der Abweichung des "Uhrenquarzes" gegenüber der Sollfrequenz
aus? Auch dieser ist ja Temperaturschwankungen unterworfen.

Justus

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja, eine gewissen Kalibrierung braucht's schon, um die 0,2 %
einzuhalten.

Der interne RC-Oszillator wird im Auslieferungszustand so kalibriert
(Voreinstellwert des OSCCAL-Registers), daß er bei 5 V Ucc die 1 MHz
recht genau einhält (genau genug für eine RS-232 auf jeden Fall).
Leider hilft das natürlich bei den 3 V des ,,Schmetterlings'' nicht
viel.  Der 32 kHz Quarz hat sicher auch einen Temperaturgang (zumal
Armbanduhrenquarze oft bei Ta = 30 °C den geringsten Temperaturgang
haben) und eine Grundabweichung, aber in einer Größenordnung von
einigen 1E-5 sollt er schon ohne weitere Kalibrierung genau sein, also
dicke ausreichend, um Deine Forderung von 2E-3 für die RS-232 zu
erfüllen.

Autor: Th. Böttcher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,
bin zufällig über diesen Beitrag gestolpert.
Also ich bin zwar auch noch ein Newbi aber ich habe mir den Butterfly
zugelegt und eine Serielle Übertragung gebastelt.
In den Butterfly Sourccodes erkennt man, das diese mit 8 MHz standard
läuft. Für die serielle Übertragung wird diese per Teiler auf 2 MHz
gesetzt.

Bei Fragen... mail.

Autor: mthomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In der Standardanwendung wird der ATmega169V wie spezifiziert mit 1MHz
betrieben (Teiler 8). Bei RS232 wg. "sauberen 19200bps" mit 2MHz
(Teiler 4).

Autor: Th. Böttcher (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hast recht, so meinte ich es auch.
Nachdem ich es abgeschickt hatte, dachte ich mir auch schon es ist blöd
formuliert.
Ich hatte nur in einer anderen Ecke was gelesen, das der Butterfly mit
1MHz getaktet wird, und die serielle Übertragung danach ausgerichtet.
Der Prozessortakt ist aber 8MHz und wenn ich meine Anwendung lade, so
muss ich halt davon ausgehen und die Prescaler entsprechend setzen.
Also Sorry für die etwas unglückliche formulierung, ich hoffe das es
diesmal besser 'rüber kommt.

hier nochmal ein Ausschnitt der Funktion aus main.c

CLKPR = (1<<CLKPCE);        // set Clock Prescaler Change Enable

// set prescaler = 8, Inter RC 8Mhz / 8 = 1Mhz
CLKPR = (1<<CLKPS1) | (1<<CLKPS0);

Mich hat es als noch-Anfänger auch nerven gekostet, da ich immer von
1MHz ausgegangen bin.

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.