Forum

Einloggen | Registrieren | RSS  

matzi682015(R)

E-Mail

Aachen,
25.12.2018,
23:42
(editiert von matzi682015
am 26.12.2018 um 00:01)
 

µC-Uhr (Elektronik)

Ich habe diesen Artikel gelesen:

https://www.mikrocontroller.net/articles/AVR-Tutorial:_Uhr

in Anlehnung an diesen Tread vom 13.12.2018 von mir:

http://www.elektronik-kompendium.de/forum/forum_entry.php?id=266574&page=0&category=all&order=time

mir wurde hier mitgeteilt, dass ich einen Ziehkondensator von 30pF auf 47pF vergrößern soll, aber jetzt geht die Uhr immernoch um 5s pro Tag vor. Das ist viel. Den µC umzuprogrammieren ist mir zu hoch. Was soll ich machen? Die Uhre geht immernoch merklich zu sehr voraus.

Mit den ganzen Interrupts und was da alles so softwaremäßig programmiert ist, ich weiß nicht wie ich das ändern oder beeinflussen soll.

--
greets from aix-la-chapelle

Matthes :hungry:

matzi682015(R)

E-Mail

Aachen,
03.01.2019,
21:38

@ bastelix

OCR1AL

» » erstens weiß doch die hardware nicht welche Software programmiert ist,
» und
» » die Software weiß auch nicht mit welcher Frequenz der Quarz schwingt...
» Bei den ATMega und ATTiny die ich verwende muss man (einmalig) den
» Oszillator einstellen, damit der µC weiß ob er einen externen oder internen
» Oszillator verwenden soll. Ob die Frequenz-Information für die Hardware
» wichtig ist kann ich dir nicht sagen.
»
» » Das Quarz schwingt mit meinetwegen 4MHz +/- 1kHz oder so, und die
» Hardware
» » hat ihre Laufzeiten, also der µC intern, wie kann man da dann exakt 1s
» » schalten?
» Exakt über einen längeren Zeitraum eigentlich nicht. Intern wird das wait()
» oder ähnliche Funktionen so gelöst, dass der µC einfach so viele Taktzyklen
» nichts macht (NOP) wie es bei der verwendeten Taktfrequenz dauert bis die
» gewünschte Zeit vergangen ist. Um die nötigen Taktzyklen zu berechnen
» braucht die Software die Information über die Taktfrequenz.
» Um eine LED alle zwei Sekunden für eine Sekunde leuchten zu lassen oder ein
» Bus-Protokoll in Software zum implementieren reicht das (egal ob das jetzt
» in einer Hochsprache oder in Assembler geschrieben ist) trotz der
» Frequenzabweichungen. Es geht da ja nur um maximal ein paar Sekunden. Für
» eine Uhr ist das was anderes, da kumulieren sich die Abweichungen über
» einen verhältnismäßig langen Zeitraum.
»
» » Kannste mir bitte einen Tip geben, ein kompaktes Buch oder so, wo ich
» etwas
» » über Programme und Hochsprachen lernen kann?
» Da schließe ich mich xy an. Für die Frage macht ein neuer Thread Sinn.

ok, ich mache mich mal so schlau. Danke für die vielen Beiträge! Und ich habe jetzt den Eindruck, dass die Uhr stabil läuft mit (fast) exakt 1Hz. Muss ich noch ein paar
Wochen beobachten.

--
greets from aix-la-chapelle

Matthes :hungry:

bastelix(R)

02.01.2019,
02:53

@ matzi682015

OCR1AL

» erstens weiß doch die hardware nicht welche Software programmiert ist, und
» die Software weiß auch nicht mit welcher Frequenz der Quarz schwingt...
Bei den ATMega und ATTiny die ich verwende muss man (einmalig) den Oszillator einstellen, damit der µC weiß ob er einen externen oder internen Oszillator verwenden soll. Ob die Frequenz-Information für die Hardware wichtig ist kann ich dir nicht sagen.

» Das Quarz schwingt mit meinetwegen 4MHz +/- 1kHz oder so, und die Hardware
» hat ihre Laufzeiten, also der µC intern, wie kann man da dann exakt 1s
» schalten?
Exakt über einen längeren Zeitraum eigentlich nicht. Intern wird das wait() oder ähnliche Funktionen so gelöst, dass der µC einfach so viele Taktzyklen nichts macht (NOP) wie es bei der verwendeten Taktfrequenz dauert bis die gewünschte Zeit vergangen ist. Um die nötigen Taktzyklen zu berechnen braucht die Software die Information über die Taktfrequenz.
Um eine LED alle zwei Sekunden für eine Sekunde leuchten zu lassen oder ein Bus-Protokoll in Software zum implementieren reicht das (egal ob das jetzt in einer Hochsprache oder in Assembler geschrieben ist) trotz der Frequenzabweichungen. Es geht da ja nur um maximal ein paar Sekunden. Für eine Uhr ist das was anderes, da kumulieren sich die Abweichungen über einen verhältnismäßig langen Zeitraum.

» Kannste mir bitte einen Tip geben, ein kompaktes Buch oder so, wo ich etwas
» über Programme und Hochsprachen lernen kann?
Da schließe ich mich xy an. Für die Frage macht ein neuer Thread Sinn.

finni(R)

30.12.2018,
22:17

@ matzi682015

OCR1AL

» ein kleines Platinchen Arduino Uno

Der ist doch schon ein guter Anfang für C++

xy(R)

E-Mail

30.12.2018,
21:24

@ matzi682015

OCR1AL

» Kannste mir bitte einen Tip geben, ein kompaktes Buch oder so, wo ich etwas
» über Programme und Hochsprachen lernen kann?

Not my department.

Du solltest dafür einen neuen Thread beginnen.

matzi682015(R)

E-Mail

Aachen,
30.12.2018,
21:01

@ xy

OCR1AL

» » Das Quarz ist Hardware, warum tut man dann in der Software das
» einstellen?
»
»
» Damit man in Hochsprachen einfach wait(x) (x in Sekunden) schreiben kann.

erstens weiß doch die hardware nicht welche Software programmiert ist, und die Software weiß auch nicht mit welcher Frequenz der Quarz schwingt... Das Quarz schwingt mit meinetwegen 4MHz +/- 1kHz oder so, und die Hardware hat ihre Laufzeiten, also der µC intern, wie kann man da dann exakt 1s schalten?

Kannste mir bitte einen Tip geben, ein kompaktes Buch oder so, wo ich etwas über Programme und Hochsprachen lernen kann? Ich habe mal mit Pascal programmiert, ganz früher mit Basic. Aber ich habe noch keinen wiedereinstieg hingekriegt, ich weiß einfach nicht wo ich da anfangen soll. Didaktisch wäre es - so denke ich - am Einfachsten, zuerst mal ein kleines Programm schreiben, aber womit und worüber? Ich habe das STK500-EvaluationBoard von Atmel, ein kleines Platinchen Arduino Uno, dann einen USB-Stick mySmartUSB light, und noch ein D-SubSteckerSeriell- auf USB-Adapter von Digitus.

--
greets from aix-la-chapelle

Matthes :hungry:

xy(R)

E-Mail

30.12.2018,
19:58

@ matzi682015

OCR1AL

» Das Quarz ist Hardware, warum tut man dann in der Software das einstellen?


Damit man in Hochsprachen einfach wait(x) (x in Sekunden) schreiben kann.

matzi682015(R)

E-Mail

Aachen,
30.12.2018,
19:45

@ xy

OCR1AL

» » Habe jetzt beide Kondensatoren auf 47pF vergrößert, und habe nun den
» » Eindruck, dass die Uhr etwas langsamer, also nach geht.
»
» Du kannst ja noch etwas mit den Werten spielen.
»
»
» » Eine Frage hätte ich doch jetzt, die mir unter den Nägeln brennt: Wieso
» » muss im Programm genau die Frequenz des Taktes oder Quarzes angegeben
» » werden, wenn diese aber sowieso nie exakt ist und sich ziehen läßt?
»
» Muss man ja gar nicht.

Das Quarz ist Hardware, warum tut man dann in der Software das einstellen?

--
greets from aix-la-chapelle

Matthes :hungry:

xy(R)

E-Mail

30.12.2018,
19:08

@ matzi682015

OCR1AL

» Habe jetzt beide Kondensatoren auf 47pF vergrößert, und habe nun den
» Eindruck, dass die Uhr etwas langsamer, also nach geht.

Du kannst ja noch etwas mit den Werten spielen.


» Eine Frage hätte ich doch jetzt, die mir unter den Nägeln brennt: Wieso
» muss im Programm genau die Frequenz des Taktes oder Quarzes angegeben
» werden, wenn diese aber sowieso nie exakt ist und sich ziehen läßt?

Muss man ja gar nicht.

matzi682015(R)

E-Mail

Aachen,
30.12.2018,
18:46

@ xy

OCR1AL

» » » » Wie wäre es mit einem externen Oszillator? Eine geeignete
» » » » Transistorschaltung lässt sich vermutlich besser ziehen als der µC.
» » »
» » » Ach wo.
» »
» » Bei mir war das einmal so, dass ein µC die Schwingung einfach abreissen
» » ließ, wenn die Cs zu groß wurden.
»
» Der Ziehbereich ist nunmal begrenzt. Und man muss dem Quarz noch
» ausreichend Leistung zum Schwingen lassen. Wenn man an die Grenze gehen
» will, dann macht man ehr den treiberseitigen Kondensator größer.

Habe jetzt beide Kondensatoren auf 47pF vergrößert, und habe nun den Eindruck, dass die Uhr etwas langsamer, also nach geht.

Eine Frage hätte ich doch jetzt, die mir unter den Nägeln brennt: Wieso muss im Programm genau die Frequenz des Taktes oder Quarzes angegeben werden, wenn diese aber sowieso nie exakt ist und sich ziehen läßt?

--
greets from aix-la-chapelle

Matthes :hungry:

xy(R)

E-Mail

30.12.2018,
16:59

@ Wolfgang Horejsi

OCR1AL

» » » Wie wäre es mit einem externen Oszillator? Eine geeignete
» » » Transistorschaltung lässt sich vermutlich besser ziehen als der µC.
» »
» » Ach wo.
»
» Bei mir war das einmal so, dass ein µC die Schwingung einfach abreissen
» ließ, wenn die Cs zu groß wurden.

Der Ziehbereich ist nunmal begrenzt. Und man muss dem Quarz noch ausreichend Leistung zum Schwingen lassen. Wenn man an die Grenze gehen will, dann macht man ehr den treiberseitigen Kondensator größer.

Wolfgang Horejsi(R)

30.12.2018,
16:42

@ xy

OCR1AL

» » Wie wäre es mit einem externen Oszillator? Eine geeignete
» » Transistorschaltung lässt sich vermutlich besser ziehen als der µC.
»
» Ach wo.

Bei mir war das einmal so, dass ein µC die Schwingung einfach abreissen ließ, wenn die Cs zu groß wurden.

xy(R)

E-Mail

28.12.2018,
17:52

@ Wolfgang Horejsi

OCR1AL

» Wie wäre es mit einem externen Oszillator? Eine geeignete
» Transistorschaltung lässt sich vermutlich besser ziehen als der µC.

Ach wo.

Wolfgang Horejsi(R)

28.12.2018,
17:38

@ finni

OCR1AL

» » Die Frage ist nicht wie, sondern ob sich der Aufwand in dem Fall lohnt
» ;-)
»
» Denke ich nicht. Der Aufwand lohnt sich definitiv, wenn ich nichts zu
» verlieren habe, aber etwas dabei gewinne. ;)
» Und das tun sie mit sicherer Effizienz.

Wie wäre es mit einem externen Oszillator? Eine geeignete Transistorschaltung lässt sich vermutlich besser ziehen als der µC.

finni(R)

28.12.2018,
00:30

@ bastelix

OCR1AL

» » Frag die Chinesen wie Reverse Engineering geht, die sind darin Spitze.
» :-D
» Die Frage ist nicht wie, sondern ob sich der Aufwand in dem Fall lohnt ;-)

Denke ich nicht. Der Aufwand lohnt sich definitiv, wenn ich nichts zu verlieren habe, aber etwas dabei gewinne. ;)
Und das tun sie mit sicherer Effizienz.

bastelix(R)

28.12.2018,
00:24

@ finni

OCR1AL

» Frag die Chinesen wie Reverse Engineering geht, die sind darin Spitze. :-D
Die Frage ist nicht wie, sondern ob sich der Aufwand in dem Fall lohnt ;-)