Forum: Mikrocontroller und Digitale Elektronik AVR Butterfly Taktfrequenz


von justus (Gast)


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

von Jörg Wunsch (Gast)


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).

von mthomas (Gast)


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.

von justus (Gast)


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

von justus (Gast)


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

von Jörg Wunsch (Gast)


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.

von Th. Böttcher (Gast)


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.

von mthomas (Gast)


Lesenswert?

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

von Th. Böttcher (Gast)


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.

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
Noch kein Account? Hier anmelden.