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
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.
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 ;)
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
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
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
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 ...
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
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?
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!
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
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.
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...
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.
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.
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.
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---
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.
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.
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.