Forum: Mikrocontroller und Digitale Elektronik Atmega32 Gundschaltung so richtig?


von Ikarus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich starte gerade meinen ersten Versuch eine eigene Leiterplatte mit 
einem Atmeag32 zu machen.

Ist die Grundschaltung so richtig?
Was sollte ich verbessern?

Ich brauche einen später genauen Takt. Ich muss auf 0.1 Sekunden genau 
einen Pin Toggeln. Für was einen Quarz, OCXO würdet ihr mir denn Raten?

Vielen Dank!

Ikarus

von spess53 (Gast)


Lesenswert?

Hi

>Was sollte ich verbessern?

An jedes VCC-GND-Paar einen Kondensator.

MfG Spess

von Mathias H. (mathias_h)


Lesenswert?

0,1 Sek genau sollte kein Problem sein mit den Standard-Quarzen ... Ich 
würde vielleicht noch ein paar 100nF Kondensatoren zwischen VCC und GND 
einplanen, sicher ist sicher.

von Ikarus (Gast)


Angehängte Dateien:

Lesenswert?

besser?

von Mathias H. (mathias_h)


Lesenswert?

Ja, und auf dem Board dann dicht an die VCC-Pins ran ...

von Ikarus (Gast)


Lesenswert?

Soll ich dann einen Quarz oder einen TCXO / OCQO nehmen?
Welche Frequenz nimmt man für solche Dinge?

Danke

von Mathias H. (mathias_h)


Lesenswert?

Die Frage ist, wie oft du den Pin toggeln willst. Wenn du 
ihnbeispielsweise einmal pro Tag toggeln willst und dann auf 0.1s 
genauigkeit ist das schwieriger, als jede Sekunde mit einer genauigkeit 
von 0,1s ... für eine richtige antwort brauchen wir mehr infos ;)

von Mathias H. (mathias_h)


Lesenswert?

achja die Temperatur spiel eine wichtige Rolle, bei großen Schwankungen 
sind TCXOs sinnvoll ...

von Ikarus (Gast)


Lesenswert?

Sorry, dann liefere ich mal Infos nach.

Also ich muss auf 0.1 Sekunden genau Toggeln.
Genauer, Ich muss einen Pin jede Sekunde entweder 0.1 oder o.5 Sekunden 
auf High nehmen. Das dauert das ca. 10 Minuten lange und dann darf der 
uC in Sleepmodus gehen.

Wenn der Passende interupt kommt das selbe von vorne. Jede Sekunde 
entweder ein 0.1 Sek. oder ein 0.5 Sek. High. Nach ca. 10 min -> 
sleep...

Temperatur ist 25°C +- 15 °C. Also Theoretisch alles was in einem Zimmer 
so vorkommen kann...

Vielen Dank

von Ikarus (Gast)


Lesenswert?

So bin zwischenzeitlich bei Version 3.
Habe noch ein HD44780-LCD vorgesehen. Was geht mir denn wichtiges 
verloren wenn ich das LCD an PCx anschließe?

Vielen Dank

von Ikarus (Gast)


Angehängte Dateien:

Lesenswert?

Aaah - Anhang vergessen, sorry!

von spess53 (Gast)


Lesenswert?

Hi

>Was geht mir denn wichtiges verloren wenn ich das LCD an PCx anschließe?

I2C und JTAG. Und damit dein LCD funktioniert, muss JTAG deaktiviert 
sein.

MfG Spess

von Ikarus (Gast)


Lesenswert?

I2C ist nicht so schlimm und JTAG auch nicht.
Ich habe nur einen AVRISP MKII.

Lässt sich JTAG vie ISP deaktivieren? Wird vermutlich eine FUSE sein?

von Mathias H. (mathias_h)


Lesenswert?

Zum Quarz ... was du beschreibst wäre 10% genauigkeit ... ich denke das 
ist selbst mit dem internen RC-Glied machbar, wenn du auf Nummer sicher 
gehn willst nimmst du halt einen stink normalen Quarz oder Resonator mit 
100ppm und das ganze hat sich gegessen ...

von Ikarus (Gast)


Lesenswert?

Verrätst du mir wie man auf die Genauigkeit kommt?

Dennoch vielen Dank

von Ikarus (Gast)


Lesenswert?

Misst ich muss mich echt anmelden. Dann kann ich wenigstens 
bearbeiten...

Welche Frequenz sollte man für so eine Anwendung nehmen?

von Mathias H. (mathias_h)


Lesenswert?

jede Sekunde entweder 0.1 oder o.5 macht 10% bzw 50% ... ;) aber solange 
es nicht um ms geht ist das alles eigentlich ungefährlich, zumal du mit 
den Timern ja noch rumspielen kannst ... soll heißen, wenn du einen 
4Mhz-Quarz verwendest kannst du den Timer ja so verstellen, dass es auf 
0,1s genau ist ...


ist das ein Batteriebetrieb, also kommt es auf den Verbrauch an? Ich 
würde wahrscheinlich 4 ofer 8Mhz nehmen wenn du den "L" hast sogar 16Mhz 
... umso höher die Frequenz umso besser am Ende deine "Messung" ... denn 
100ppm bei 4Mhz machen sich mehr bemerkbar als 100ppm bei 16Mhz ... 
leider hab ich aber bei den Atmegas keine so große Ahnung ... beim 
MSP430 ist es so, dass man einen Quarz mit 16Mhz anschließt und ihn dann 
trotzdem auf 1Mhz laufen lässt ... damit bekommt man dann eine höhere 
Genauigkeit ...

Wenn es auf den Energieverbrauch ankommt könnten für dich Uhrenquarze in 
Frage kommen ... also mit 32768kHz

von Ikarus (Gast)


Lesenswert?

Der Verbrauch ist völlig egal.
Die Versorgungsspannung kommt aus einem gekauften Schaltnetzteil bzw. 
Steckdose.

von Mathias H. (mathias_h)


Lesenswert?

8 bzw 16Mhz Quarz mit den entsprechenden Kondensatoren und dann sollte 
es für dich völlig in Ordnung sein ;)!

von Rolf Magnus (Gast)


Lesenswert?

Mathias H. schrieb:
> jede Sekunde entweder 0.1 oder o.5 macht 10% bzw 50% ... ;)

Das ist aber nicht die Genauigkeit, sondern das Tastverhältnis. Das sind 
zwei völlig verschiedene Dinge. Um die richtige Taktquelle auszuwählen, 
ist weniger die Pulsdauer entscheidend, als wie genau diese Dauer 
eingehalten werden muß (sowohl die 0,1 bzw. 0,5 Sekunden Pulsdauer, als 
auch die 1 Sekunde Periodendauer).

> aber solange es nicht um ms geht ist das alles eigentlich ungefährlich,
> zumal du mit den Timern ja noch rumspielen kannst ... soll heißen, wenn
> du einen> 4Mhz-Quarz verwendest kannst du den Timer ja so verstellen,
> dass es auf 0,1s genau ist ...

Wenn du einen 0,1-Sekunden-Puls auf 0,1 Sekunden genau ausgeben willst, 
ist es besonders einfach, denn dann ist es auch ok, wenn der Puls gar 
nicht kommt. ;-)

> denn 100ppm bei 4Mhz machen sich mehr bemerkbar als 100ppm bei 16Mhz ...

Wie kommst du denn darauf?

von Mathias H. (mathias_h)


Lesenswert?

Rolf Magnus schrieb:
> Mathias H. schrieb:
>> jede Sekunde entweder 0.1 oder o.5 macht 10% bzw 50% ... ;)
>
> Das ist aber nicht die Genauigkeit, sondern das Tastverhältnis. Das sind
> zwei völlig verschiedene Dinge. Um die richtige Taktquelle auszuwählen,
> ist weniger die Pulsdauer entscheidend, als wie genau diese Dauer
> eingehalten werden muß (sowohl die 0,1 bzw. 0,5 Sekunden Pulsdauer, als
> auch die 1 Sekunde Periodendauer).
>
schon klar, aber im ersten Beitrag hieß es noch "0,1s genau" und jetzt 
jede 0,1s einen Wechsel ...

>> aber solange es nicht um ms geht ist das alles eigentlich ungefährlich,
>> zumal du mit den Timern ja noch rumspielen kannst ... soll heißen, wenn
>> du einen> 4Mhz-Quarz verwendest kannst du den Timer ja so verstellen,
>> dass es auf 0,1s genau ist ...
>
> Wenn du einen 0,1-Sekunden-Puls auf 0,1 Sekunden genau ausgeben willst,
> ist es besonders einfach, denn dann ist es auch ok, wenn der Puls gar
> nicht kommt. ;-)

das mein ich auch ;)! deshalb hab ich ja gesagt, dass es auch mit dem 
internen RC-Glied geht! ...
>
>> denn 100ppm bei 4Mhz machen sich mehr bemerkbar als 100ppm bei 16Mhz ...

schon, beim MSP430 istes wie gesagt so, dass wenn ich einen 16Mhz Quarz 
verwende den µC aber nur auf 1Mhz laufen lasse bleibt von der 
Ungenauigkeit nurnoch 1/16 übrig ... also besser als bei einem 1Mhz 
Quarz mit 100ppm oder hab ich da jetzt einen Denkfehler? *Taschenrechner 
raushol* ... okay vergesst dieses Statement ... ;) ... Egal welcher 
Quarz egal welche Geschwindigkeit ... aber was Festhalten ist ... wenn 
ein Quarz mit einer höheren Genauigkeit verwendet wird kann der Timer 
sehr viel genauer eingestellt werden! ... Was es braucht ist ein Oszi 
und ein wenig Zeit!

von spess53 (Gast)


Lesenswert?

Hi

>schon, beim MSP430 istes wie gesagt so, dass wenn ich einen 16Mhz Quarz
>verwende den µC aber nur auf 1Mhz laufen lasse bleibt von der
>Ungenauigkeit nurnoch 1/16 übrig ... also besser als bei einem 1Mhz
>Quarz mit 100ppm oder hab ich da jetzt einen Denkfehler?

Ja. Was soll sich durch Teilen am Fehler ändern?

>Was es braucht ist ein Oszi und ein wenig Zeit!

Kein Kommentar.

MfG Spess

von Norbert S. (norberts)


Lesenswert?

Hi,

ein Oszi um die Genauigkeit eines Quarzes zu bestimmen - schon klar.
Kalibrierst Du mit dem Oszi auch Deine Multimeter?

Mal so für die Genauigkeit: Bei einem stinknormalen Keramikresonator hat 
man so etwa 0,5% Toleranz plus etwas Temp.-Drift, dann ist Deine Sekunde 
entweder 0,995s oder 1,005s. Auf die 10 Minuten macht das 3 Sekunden.
Bei einem Quarz dürfte das mit Tempdrift und Alterung <100ppm sein, also 
1,0001s bis 0,9999s sein. Auf die 10 Minuten sind das dann max 0,06s 
Abweichung.

von Ikarus (Gast)


Lesenswert?

Ok, dann habe ich mich falsch ausgedrückt.

Also der Takt ist genau eine Sekunde.
Das Tastverhältnis ist entweder 0,1 oder 0,5 Sek high.

Im Prinzip wird das so ähnlich wie die Amplitudenmodulation bei DCF77...

von Mathias H. (mathias_h)


Lesenswert?

Norbert S. schrieb:
> ein Oszi um die Genauigkeit eines Quarzes zu bestimmen - schon klar.
> Kalibrierst Du mit dem Oszi auch Deine Multimeter?

nicht den Quarz aber den Wert für den Timer ... wenn der Takt dann 
0,095s lang ist setzt man halt den Wert für den Timer (die Zählvariable 
also höher ...) macht natürlich ein wenig Arbeit aber so kann man es 
zumindest für Prototypen machen.

von Norbert S. (norberts)


Lesenswert?

Mathias H. schrieb:
> nicht den Quarz aber den Wert für den Timer ... wenn der Takt dann
> 0,095s lang ist setzt man halt den Wert für den Timer (die Zählvariable
> also höher ...) macht natürlich ein wenig Arbeit aber so kann man es
> zumindest für Prototypen machen.

Also wenn man schon nicht in der Lage ist, das halbwegs genau zu 
programmieren (weil man nicht genau weiß was der Compiler da macht), 
dann testet man das mit dem Simulator.
Normalerweise ist es aber überhaupt kein Problem, sowas nahezu taktgenau 
zu programmieren, in jeder Hochsprache. ASM muss dazu gar nicht sein.

Und wenn Du da die 0,095s misst, Dein Oszi ist ganz bestimmt so genau, 
daß es nicht vielleicht 0,098s sind?
Um Quick & Dirty mal zu testen, ob man zeitlich mit einem Programmteil 
in Kalamitäten komt oder alles gut ist, taugt das Oszi wohl (dauert der 
Teil nun eher 50µs oder das Doppelte?) aber sicher nicht, um solche 
Zeiten genau zu justieren.

Da kann man dann bei solchen Zeiten (also 0,1s und so) auch gleich mit 
dem Delay des Compilers arbeiten. (waitms bei Bascom, Delay_ms() oder so 
in C)
Daß das nicht 100% genau ist, wirst Du mit dem Oszi nicht feststellen 
können bzw. Du wirst sehen, wie falsch Dein Oszi ist.

von Ikarus (Gast)


Angehängte Dateien:

Lesenswert?

Hallo,
ich habe euch mal die aktuelle Version.

Viel hat sich nichtmehr geändert.

*Möglichkeit externer Referenz hinzugefügr
*TCXO hinzugefügt

von Norbert S. (norberts)


Lesenswert?

Hi,

Du brauchst keinen externen Oszillator. Das ist nur ein Quarz mit einem 
Oszillator wie er auch im µC ist, wobei der dann nur abgeschaltet wird.
Nimm nen Keramikresonator oder nen Quarz.
Der Quarz ist übrigens nur so genau wie beschrieben, wenn Du die 
Lastkapazität richtig hinbekommst. Die parasitären Kapazitäten spielen 
da eine große Rolle und eine falsche Lastkapazität verbiegen die 
Frequenz.

Also wie groß darf die Abweichung Deiner Zeiten sein?

Wenn das wie bei DCF77 ist, also sich das Datensignal selbst 
synchronisiert (das ist nicht amplitudenmoduliert, was Du da vorhast 
nennt sich Puls-Pausen-Modulation), dann ist das vollkommen Latte. Dann 
nimm den internen RC-Oszillator. Dafür sind diese Protokolle gemacht.

Das Timing bei solchen Signalen ist wie im wirklichen Leben "Kumpel ist 
gleich da" = 1 und "Kumpel braucht noch etwas, bis er da ist" = 0.
"Der Arsch kommt wohl echt nicht mehr" ist dann Timeout.

von Ikarus (Gast)


Lesenswert?

Norbert S. schrieb:
> Du brauchst keinen externen Oszillator. Das ist nur ein Quarz mit einem
> Oszillator wie er auch im µC ist, wobei der dann nur abgeschaltet wird.
> Nimm nen Keramikresonator oder nen Quarz.

Oh da hast du natürlich recht. Aber ist in dem Atmega nicht ein 
RC-Schwingkreis?

Das Teil in meiner Schaltung hat wenigstens einen Quarz---

von Norbert S. (norberts)


Lesenswert?

Hi,

jaja, die Begriffe.
Ein Oszillator, das ist erst mal etwas das schwingt.
Das sind Logikgatter mit einem zeitabhängigen Element.

Letzeres ist entweder ein Quarz, ein Keramikresonator oder eben ein 
RC-Glied.
Die Logiggatter sind im ATMega drin, man schliesst den Quarz oder den 
Keramikresonator extern an.
Man kann auch das interne RC-Glied nutzen, das ist im µC schon drin.

Also der µC macht den Takt entweder mit dem externen Quarz oder 
Keramikresonator (das ist quasi das selbe) oder mit seinem internen 
RC-Glied.
Der Unterschied liegt nur bei der Genauigkeit.

Dein externer Oszillator hat Quarz und Gatter und alles an Bord und gibt 
einen genauen Takt aus.
Das ist sicherlich am genauesten, weil das Problem mit der Lastkapazität 
in dem Ding erledigt wurde aber das brauchst Du nicht.

Lies Dir bitte diesen Teil im Datasheet nochmal genau durch. Eigentlich 
steht das da alles.

von Rolf Magnus (Gast)


Lesenswert?

Norbert S. schrieb:
> jaja, die Begriffe.

Du hast es aber auch etwas mißversständlich formuliert:

Norbert S. schrieb:
> Du brauchst keinen externen Oszillator. Das ist nur ein Quarz mit einem
> Oszillator wie er auch im µC ist

Das liest sich, als wollest du sagen, im µC sei ein Quarz eingebaut, und 
wie Ikarus bemerkt, stimmt das nicht.

Norbert S. schrieb:
> Dein externer Oszillator hat Quarz und Gatter und alles an Bord und gibt
> einen genauen Takt aus. Das ist sicherlich am genauesten, weil das
> Problem mit der Lastkapazität in dem Ding erledigt wurde aber das
> brauchst Du nicht.

Woher weißt du das? Er hat immer noch nichts über die tatsächlich 
benötigte Genauigkeit geschrieben. Er hat nur geschrieben:

> Also der Takt ist genau eine Sekunde.

Aber wie genau, hat er immer noch nicht verraten.

von Norbert S. (norberts)


Lesenswert?

Rolf Magnus schrieb:
> Norbert S. schrieb:
>> Dein externer Oszillator hat Quarz und Gatter und alles an Bord und gibt
>> einen genauen Takt aus. Das ist sicherlich am genauesten, weil das
>> Problem mit der Lastkapazität in dem Ding erledigt wurde aber das
>> brauchst Du nicht.
>
> Woher weißt du das? Er hat immer noch nichts über die tatsächlich
> benötigte Genauigkeit geschrieben. Er hat nur geschrieben:
>
>> Also der Takt ist genau eine Sekunde.
>
> Aber wie genau, hat er immer noch nicht verraten.

Ok, das habe ich mal unterstellt. Ich unterstelle weiterhin, daß der 
interne RC-Oszillator auch reicht, wenn er so ein digitales PPM-Signal 
erzeugen will.

von Mathias H. (mathias_h)


Lesenswert?

http://www.mikrocontroller.net/articles/AVR-Tutorial:_Equipment#Erg.C3.A4nzende_Hinweise_zur_Taktversorgung_.28kann_.C3.BCbersprungen_werden.29

da stehn nochmal die Genauigkeiten ... meiner meinung nach reicht auch 
der interne RC-Oszillator, aber ich würde immer die Möglichkeit eines 
externen Quarzes auf einer Platine vorsehen ...

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.