Forum: Mikrocontroller und Digitale Elektronik ATmega16 vs. Quarzoszillator


von Bernhard Friedel (Gast)


Lesenswert?

Hallo!
Nachdem mir ein ATmega16 gestorben ist habe ich gleich einen neuen
gekauft und setzte die Fuses wie beim ersten.

ext. Clock (16MHz Quarzoszillator):
CLKSEL: 0000 (PonyProg: alle CKSEL angehakt)
sonst blieb alles default.

Wie es nicht anders zu erwarten war, funktionierte das ganze natürlich
nicht (PonyProg: Device missing or unknown device).

Im moment läuft er wieder mit dem internen RC-Oszillator (konnte ihn
durch ständiges "retry" drücken wieder zurücksetzen - nicht sehr
professionell, aber es hat funktioniert).

Bin dankbar für jeden noch so kleinen Tipp,

Bernhard Friedel

von Conlost (Gast)


Lesenswert?

Hallo Friedel,

nur um Missverständnissen vorzubeugen, meinst du nun
externen Quarz an XTAL1 und XTAL2 mit den beiden 22pF Kondensatoren,
oder Externen Oszillator nur an XTAL1?
Ich frage deshalb, weil es da schon öfter Verwechselungen gab.

Gruß,
Arno

von maxigs (Gast)


Lesenswert?

# nur um Missverständnissen vorzubeugen, meinst du nun
# externen Quarz an XTAL1 und XTAL2 mit den beiden 22pF Kondensatoren,
# oder Externen Oszillator nur an XTAL1?
# Ich frage deshalb, weil es da schon öfter Verwechselungen gab.

Was genau ist überhaupt der Unterschied zwischen diesen beiden
Möglichkeiten?
Was ist besser, stabiler ..oder so?
Bin erst seit einer weile dabei mich (soweit nur theoretisch) mit
AVR's zu befassen und da hab ich bisher noch nie ne Begründung
gesehen, wieso jemand das eine oder das andere benutzt.

von Conlost (Gast)


Lesenswert?

Hallo,

ein externer Quarz mit den beiden Kondensatoren nutzt die im
Controller vorhandene Elektronik um damit den Quarz zum
schwingen zu bringen.
Diese Schwingung wird dann auch wieder im Controller in eine
Rechteckschwingung gewandelt für den Takt.

Beim externen Oszillator wird ein schon fertiges Rechteck-
Signal an den XTAL1 Pin angelegt.
Dieses Signal wird also nicht im Controller erzeugt sondern
ausserhalb.
Dieser externe Oszillator den man fertig kaufen kann, zB. in einem
14 poligen IC-Gehäuse enthält also einen Quarz und die Elektronik
zur Takterzeugung.

Gruß,
Arno

von Conlost (Gast)


Lesenswert?

Hab noch was vergessen, was die Genauigkeit anbelangt ist der
externe Quarzoszillator der bessere, weil in der Schaltung
auch eine Temperaturkompensation enthalten ist.

Die preiswerteste Lösung ist der interne RC-Oszillator.
Dieser ist aber in der Frequenzkonstanz nicht gut und kann daher
zu Problemen führen wenn man den UART benutzt.

Die am meissten benutzte Variante ist die mit dem externen Quarz.
Die Genauigkeit ist viel besser als der interne RC-oszillator.

Gruß,
Arno

von maxigs (Gast)


Lesenswert?

wow das ging ja schnell - danke

also nen oszillator wenns genau sein soll, ein normaler quarz als gute
standartlösung und wenns egal ist den internen takt..

von Conlost (Gast)


Lesenswert?

So ist es.
Jede dieser Taktarten hat aber eine andere Fusebit-Einstellung.
Die Daten dazu findest du im Datenblatt.

Gruß,
Arno

von Bernhard Friedel (Gast)


Lesenswert?

>meinst du nun
>externen Quarz an XTAL1 und XTAL2 mit den beiden 22pF Kondensatoren,
>oder Externen Oszillator nur an XTAL1?

Ich meine den externen Oszillator an XTAL1.

von Conlost (Gast)


Lesenswert?

Ok, also die Einstellung stimmt dann so, hast du eventuell
einen ATmega16L ?
Hat der externe 16Mhz Quarzoszillator Spannung?
Kannst du feststellen ob er schwingt?
An XTAL1 sollten so ca. 2,5V zu messen sein.

von Bernhard Friedel (Gast)


Lesenswert?

ATMEGA16-16PI - müsste der Richtige sein
Die Oszillatoren (hab 2 zur verfügung) schwingen auch mit ihren 16MHz.

von Bernhard Friedel (Gast)


Lesenswert?

Könnte es am Steckbrett liegen?
Der ATmega16 funktioniert nur mit dem internen Oszillator einwandfrei -
mit einem ext. Quarz oder einem Quarzoszillator funktioniert er nicht
mehr. Ein mega8 hat sich ähnlich verhalten.

Wieso dann mein erster AVR auf diesem Steckbrett funktioniert hat, ist
wieder eine andere Frage ...

von Jan (Gast)


Lesenswert?

Hab ein ähnliches Problem,auch mit dem ATMega16.Benutze Bascom,und will
einen externen Quarz benutzen(8MHz),welche einstellung muß ich nun
genau nutzen?

danke

von Joern Gerhard (Gast)


Lesenswert?

Hi,

Wenn der Quartz von Reichelt stammt (Conrad ist wohl nicht anders,
weiss ich gerade nicht), dann hat er wohl ein C-load von 32pF.

Die beiden externen Kondensatoren (C1, C2) berechnen sich nun
folgendermassen:
c1=c2=(2*Cload)-Cstray
Cstray ist angeblich ca. 5-7pF, also sollten die C1 und C2 demnach
C1 = C2 = (2*32)-7 = 57pF gross sein.

Keine Ahnung, warum man das nie in irgendwelchen Schaltungen sieht,
aber ich vermute mal, dass (abgesehen von conrad reichelt) meistens
Quarze mit weniger C-load verkauft werden (Grosskunden können sich
quasi wünschen, wie die Quarze geliefert werden sollen), daher die
empfohlenen 22pF.
Aber ich würde einfach mal die von allen Quarzherstellern empfohlene
obige Formel benutzen und ca. 55pf versuchen.

Wenn die Kondensatoren falsch sind, dann schwingt der Quarz zu schnell
oder zu langsam oder eben gar nicht.

Aber es gibt viele andere Fehlerquellen, diese hier ist es wohl eher
selten. Bei den anderen hilft aber ein gründliches Lesen des
Atmel-Datenblatts! ;-)

cu JOern

von Bernhard Friedel (Gast)


Lesenswert?

Ich wäre froh wenn es am Quarz liegen würde, aber ein ext. Oszillator
funktioniert genauso wenig.

z.B.: wenn ich einen Rechteck an einem Pin ausgeben will funktioniert
dies mit dem internen RC Oszillator perfekt, aber zu langsam.
Lasse ich das Programm im Flash stehen und stelle die Fuse Bits auf
einen Quarz oder ext. Oszillator um wird das Programm zwar noch
ausgeführt, aber nicht richtig - der Rechteck kommt irgendwie raus und
hat keine gleichbleibende Periodendauer.

Aber nicht mal das Programmieren funktioniert noch, wenn man einen
Quarz oder ext. Oszillator benutzt.

Danke

von Markus Friedel (Gast)


Lesenswert?

Hallo Namenskollege,

hast du SUT0 und SUT1 gesetzt? Wenn nur eins davon gesetzt (also 0 bzw.
Häkchen) ist wird der Start des Controllers etwas verzögert und der
Oszillator hat mehr Zeit zum Anschwingen.

Alternativ könntest du zum Beispiel einen 8 Mhz Oszillator testen,
möglicherweise gibt es einfach EMV Probleme auf dem Steckbrett...

Hat der Mega16 eine ausreichende Betriebsspannung? Je höher die
Frequenz desto höher die minimale Spannung. Hatte das Problem auch als
meine Batterie lehrging, der 7805 lieferte nur noch 4V. Es lief zwar
noch mit 8Mhz, aber nicht mehr mit 16.

Gruss

Markus

von Bernhard Friedel (Gast)


Lesenswert?

Hallo

SUT1..0 ist auf 10 gesetzt - sind 65ms lt. Datenblatt.

Ein 8MHz Oszillator ist auch nicht besser wie ein 16MHz.

Betriebspannung hat er 4,97V.

Also hätte er eigentlich keinen Grund um nicht zu funktionieren ...

von Bernhard Friedel (Gast)


Lesenswert?

Ich habe den Oszillator etwas weiter vom µC entfernt und JTAG wieder
eingeschaltet.
Funktioniert nun problemlos mit einem 8MHz Oszillator:
http://dasboot.covers.de/8MHzJTAG.jpg
Schaltet man JTAG wieder ab (ich brauche den ganzen PORTC) so ergibt
sich dies hier: http://dasboot.covers.de/8MHz.JPG

Ein 16MHz Oszillator funktioniert nicht mal mit eingeschaltenem JTAG:
http://dasboot.covers.de/16MHzJTAG.JPG

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.