Atmega32 Gundschaltung so richtig?

Gast #2129310
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
Angehängte Dateien:
Gast #2129347
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
#2129372
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
Gast #2129415
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?
#2129420
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!
Gast #2129423
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
#2129450
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.
Gast #2129486
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...
#2129567
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.
#2129640
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.
#2129662
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.
Gast #2129706
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---
#2129737
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.
Gast #2129875
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.
#2130110
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.

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren