Hallo Leute,
ich beschäftige mich seit kurzem mit der Mikrocontroller-Entwicklung und
habe neulich erst meinen ersten Mikrocontroller auf einem Bread-Board
aufgebaut. Jetzt habe ich einige Fragen dazu.
In der Entwicklung von irgendwelchen Geräten spielt der Preis auch immer
eine gewisse Rolle. Ich habe jetzt mal den ATmega328 verwendet. Der Chip
hat ja z.B. einen eigenen Quarz für die Takterzeugung eingebaut, genauso
wie Pull-Up Widerstände. Ich glaube, ich habe aber noch nie den
ATmega328 irgendwo ohne externen Quarz gesehen. Bei den Pull-Up
Widerständen bin ich mir da nicht sicher, aber überall wird einem
geraten, externe Widerstände zu verbauen.
Kann mir jemand erklären, wieso?
Frank S. schrieb:> einen eigenen Quarz für die Takterzeugung eingebaut
Nö
Frank S. schrieb:> aber überall wird einem> geraten, externe Widerstände zu verbauen
Weil die internen eventuell zu schwach für die Anwendung sind.
Frank S. schrieb:> . Der Chip> hat ja z.B. einen eigenen Quarz für die Takterzeugung eingebaut,
nein hat er nicht. Er hat einen RC-Oszillator der z.b für UART schon zu
ungenau ist. (bzw erst Kalibriert werden muss)
Der interne Taktgenerator ist ohne Quarz, extern gehen meistens höhere
Frequenzen und genauer sind sie auch.
Die internen Pullups sind für einige Anwendungen zu hochohmig und haben
hohe Streuungen.
Wenn die Werte (Frequenz, Widerstandswert, Genauigkeit) reichen, kannst
Du die internen nehmen.
Frank S. schrieb:> eine gewisse Rolle. Ich habe jetzt mal den ATmega328 verwendet. Der Chip> hat ja z.B. einen eigenen Quarz für die Takterzeugung eingebaut
nein. Er hat einen internen Taktgeber eingebaut, ja. Der ist aber
wesentlich ungenauer als ein Quarz und deshalb oft nicht für die
Anwendung geeignet.
> ATmega328 irgendwo ohne externen Quarz gesehen. Bei den Pull-Up> Widerständen bin ich mir da nicht sicher, aber überall wird einem> geraten, externe Widerstände zu verbauen.
Entweder sind sie nicht kräftig genug. Oder sie müssen schon beim Reset
aktiv sein.
Anderes Beispiel: AD-Wandler. Die können nicht genau genug sein, nicht
schnell genug, oder der Prozessor kann die analogen Signale stören.
fchk
Du musst Bastler und professionelle Entwickler strikt von einander
trennen.
Der Bastler benutzt oft das Wörtchen vielleicht. Also vielleicht reicht
mir die Genauigkeit des Quarzes nicht aus, möglicherweise sind die
Pull-Up Widerstände doch nicht geeignet. Manchmal reicht auch ein: Habe
ich noch in der Schublade – ist zwar total überdimensioniert aber...
Im professionellen Bereich da geht es im Grunde um zwei Dinge:
1. Kosten
2. Kosten
3. Kosten
4. Folgekosten.
Jeder unnötige Pin am Prozessor kostet. Den Hersteller Material und Dich
Fläche auf der späteren Platine.
Ein unnötiger Quarz kostet natürlich Geld, kostet Platinenfläche und der
Bestücker ist auch aus der sozialistischen Partei ausgetreten.
Bei größeren Stückzahlen, kann schon der Gedanke an einen weggelassenen
Quarz, die Mundwinkel deines Chefs in die Höhe schnellen lassen.
Eventuell reicht die Genauigkeit des eingebauten A/D-Wandlers doch aus…
Jedes unnötige Teil reduziert die Betriebssicherheit des Produktes. So
reizvoll eine Reise nach Japan auch sein mag, wenn dies nur wegen einer
Reparatur geschieht, so sind die Mundwinkel deines Vorgesetzten schnell
wieder unten.
Okay, ich verstehe schon, worauf ihr hinauswollt.
Ich habe hier gerade einen Toaster bei mir auf dem Tisch liegen. Verbaut
ist ein ATtiny der offensichtlich die Eingabe der Knöpfe auswertet und
per Optokoppler / SSR den Strom zu dem Elektromagneten und zu den
Heizspiralen freigibt.
Bei der Schaltung ist sowohl ein externer Quarz verbaut als auch Pull-Up
Widerstände für die Taster.
Ein Toaster macht ja nichts zeitkritisches, nichts was auf ein paar
100ms ankommt. Und ebenso die Taster. Da braucht man diese Genauigkeit
nicht. Deshalb wundere ich mich schon, wieso der Hersteller sich
entschieden hat, sowohl einen Quarz zu verbauen, als auch Pull-up
Widerstände.
Ich gebe dir völlig recht, das verstehe ich auch nicht. Selbst das Thema
Zuverlässigkeit kommt wohl hier nicht in Frage, im Zeitalter der
geplanten Obsoleszenz...
Aber in einem Fall muß ich dir heftig widersprechen:
> Ein Toaster macht ja nichts zeitkritisches, nichts was auf ein paar> 100ms ankommt. Und ebenso die Taster. Da braucht man diese Genauigkeit
Ein paar 100ms sind für den Prozessor absolut nichts zeitkritisches. Da
ist er fast noch im Tiefschlaf und macht das so nebenbei. Wenn du von
paar µs geschrieben hättest, wäre das was anderes.
Aber wie gesagt, der Kern deiner Aussage bleibt richtig, siehe oben.
Warum man dann einen Quarz und Pullups einbaut, weiß ich auch nicht...
ich schrieb:> Warum man dann einen Quarz und Pullups einbaut, weiß ich auch nicht...
Ich habe das jetzt nicht mit dem Datenblatt verglichen und mal
nachgerechent. Wenn der Toaster am Anfang 3 Minuten toastet, sich
erwährmt und danach nur noch 2,5 Minuten toastet, weil der RC-OSzillator
Hitzewallungen bekommt, dann ist das auch nicht so toll.
Gibt von dem Toaster vielleicht auch noch eine Luxusvariante, wo ein
genauer Quarz vielleicht nötig ist.
Oder der Hersteller hat auf eine fertige, zwar etwas teurere Platine
zurückgegriffen und musste selber nichts entwickeln.
Martin Kreiner schrieb:>> Ich habe das jetzt nicht mit dem Datenblatt verglichen und mal> nachgerechent. Wenn der Toaster am Anfang 3 Minuten toastet, sich> erwährmt und danach nur noch 2,5 Minuten toastet, weil der RC-OSzillator> Hitzewallungen bekommt, dann ist das auch nicht so toll.>
Ich hab jetzt nicht nachgerechnet, aber ist es wirklich so viel? Der
Prozessor sitzt doch nicht auf den Heizdrähten, oder? ;-))
Gefühlsmäßig würde ich sagen, bei 3min wäre eine Sekunde schon viel...
Für einen Quarz sehe ich im Toaster auch wirklich keine Notwendigkeit -
außer ggf. falls der Toaster per Bluetooth auch gleich den Kaffee
anstellen soll oder ähnliches.
Für den externen Widerstand kann es schon den einfachen Grund geben,
dass der interne zu groß ist und damit leichter Störungen einfängt.
Es kommt aber auch vor das kommerzielle Entwickler Fehler machen - sonst
würden die Produkte ja noch seltener kaputt gehen.
ich schrieb:> Gefühlsmäßig würde ich sagen, bei 3min wäre eine Sekunde schon viel...
Das wären nur ca. 0.5% Abweichung.
Realistisch sind aber eher +-10%.
Markus schrieb:> ich schrieb:>> Gefühlsmäßig würde ich sagen, bei 3min wäre eine Sekunde schon viel...>> Das wären nur ca. 0.5% Abweichung.> Realistisch sind aber eher +-10%.
Hallo Markus,
ich hab jetzt auf die Schnelle im Datenblatt keine Angabe gefunden, wie
weit der interne RC bei einer bestimmten Temperaturdifferenz driftet.
Wenn du von +-10% schreibst, würde das ja bedeuten, daß die 8MHz von
7,2..8,8MHz laufen würden. Sorry, aber ich habe mich mit dem internen RC
noch nie beschäftigen müssen, weil bei mir immer das Timing eine Rolle
spielt (USART, CAN...)
Kannst du mir was genaues dazu sagen, evtl. wo man Infos darüber findet?
Vielleicht habe ich es auch im Datenblatt übersehen...
ich schrieb:> ich hab jetzt auf die Schnelle im Datenblatt keine Angabe gefunden, wie> weit der interne RC bei einer bestimmten Temperaturdifferenz driftet.
Ich hab grad mal schnell das ATmega88 Datenblatt runtergeladen, auf
Seite 337 (Typical Characteristics / Internal oscillator speed) ist ein
Diagramm zum Thema.
Hmm...
Nehmen wir mal die typischen Betriebstemperaturen, dann habe ich einen
Bereich von 8-8,1MHz. Das wären "nur" ca. 1,5% Abweichung. Ich denke,
dass man damit leben kann.
Danke, Andreas!
In diesem Diagramm sehe ich, daß der interne RC bei einer
Temperaturspanne von 0..70°C von 7.9 bis 8.1MHz läuft. Bezogen auf die
8MHz sind das knapp über +/- 1,0% und da lag ich doch gar nicht sooo
falsch, oder? Und bezogen auf die oben genannten 3min sind das ca. 1,8s.
Habe ich richtig gerechnet?
amateur schrieb:> Im professionellen Bereich da geht es im Grunde um zwei Dinge:> 1. Kosten> 2. Kosten> 3. Kosten> 4. Folgekosten.
Das gilt aber nur für Massenproduktion. Bei Einzelstücken sieht es
vollkommen anders aus. Lieber kauft man eine fertige Baugruppe für 2000
Euro, als sich den Aufwand zu geben, mit Eagle eine einfache
Leiterplatte zu entwerfen, zu bestücken und zu testen. Letzteres ist
nämlich teurer, auch wenn die Materialkoten dann nur 100 Euro betragen.
> Jedes unnötige Teil reduziert die Betriebssicherheit des Produktes.
Genauso wie das Fehlen jedes nötigen Teils, das von einem übereifrigen
Sparer wegoptimiert wurde.
So aus der Erinnerung heraus kenne ich mehr Stories von Ausfällen, weil
ein Teil weggelassen wurde, als von solchen, die durch zuviele Teile
passiert sind.
ich schrieb:> Danke, Andreas!> In diesem Diagramm sehe ich, daß der interne RC bei einer> Temperaturspanne von 0..70°C von 7.9 bis 8.1MHz läuft. Bezogen auf die> 8MHz sind das knapp über +/- 1,0% und da lag ich doch gar nicht sooo> falsch, oder? Und bezogen auf die oben genannten 3min sind das ca. 1,8s.> Habe ich richtig gerechnet?
Wahrscheinlich ja. Die Tendenz passt.
Aber guck dir mal die geichen Kurven beim Atmega8 an. Dann siehst du, wo
die +-10%, die hier immer gehandelt werden, herkommen. Und da der
Atmega8 bei 99,9731% der Leute hier State-Of-The-Art ist, hat ein AVR
ganz allgemein nun mal 10% Abweichung.
Mit Atmega48 Co. kann man problemlos Datenübertragung bis 9600 Bit/s
machen. Kalibriert man den Oszillator auf 7,3728MHz, was im definierten
Bereich von 7,3-8,1 MHz liegt, hat man eine Baudratenfrequenz und kann
mit Prescaler 8 bei 921,6Khz sogar 115K2 fahren.
Das kann ein gemeiner Atmega8-User natürlich gar nicht glauben. Die
Minderheit der 0,0269% Nicht(mehr)-Atmega8-User überrascht das
selbstverständlich überhaupt nicht.
mfg.
Stimmt, der ATMega88 & Co. ist ja auch bei der Stabilität gegenüber dem
Mega88 besser geworden. Aber wie gesagt, ich mußt den internen bis jetzt
noch nicht verwenden, weil ich immer mit zeitkritischen Sachen zu tun
habe und deswegen gegerell mit Quarz arbeite.
Danke für die Tipps :-)
Nochmal ich :-)
Im Diagramm vom M8 sehe ich zwar eine größere Abweichung als beim 88,
aber so viel ist es auch wieder nicht. Bei 20°C sind es 8.1MHz, bei 70°C
sind es 7.9MHz. Das ist doch auch noch weit von 10% weg...
Beim Toaster gebe ich Euch recht, was den Quarz betrifft.
Anders sieht es aber bei den Pullup-Widerständen aus. Je nach verbautem
Prozessor können das bis zu 70k oder 80k für die internen sein. Je höher
dieser Widerstandswert ist, desto anfälliger ist die Steuerung gegen
Störeinflüsse (wurde oben auch schon mal erwähnt). Die häufigsten
Störungen, die zu Problemen führen dürften hier z. B. Verschutzungen der
Taster sein, die zu höheren Kriechströmen führen können und ähnliches.
Je hochohmiger der Pullup- /down- Widerstand ist, um so eher führt das
zu Problemen.
Die meisten Empfehlungen die ich bislang gelesen habe gehen in Richtung
5k bis 10k (letztere verbaue ich eigentlich standardmäßig). Siehe z. B.
auch: http://www.elektronik-kompendium.de/public/schaerer/pullr.htm
ich schrieb:> Nochmal ich :-)> Im Diagramm vom M8 sehe ich zwar eine größere Abweichung als beim 88,> aber so viel ist es auch wieder nicht. Bei 20°C sind es 8.1MHz, bei 70°C> sind es 7.9MHz. Das ist doch auch noch weit von 10% weg...
Betrachte das mal über den gesamtem Spannungsbereich. Den 88er kannst du
bei Zimmertemperatur von 1,8 - 5V ohne Nachkalibrierung für DÜ bis 9600
einsetzen. Der 8er liefert mit Werkskalibrierung bei 5V/25° 8Mhz, bei
2,7V nur noch 7,2MHz.
mfg.
Thomas Eckmann schrieb:>> Betrachte das mal über den gesamtem Spannungsbereich. Den 88er kannst du> bei Zimmertemperatur von 1,8 - 5V ohne Nachkalibrierung für DÜ bis 9600> einsetzen. Der 8er liefert mit Werkskalibrierung bei 5V/25° 8Mhz, bei> 2,7V nur noch 7,2MHz.>> mfg.
Ja, in Bezug auf die Spannung hast du recht. Ich habe es nur auf die
Temperatur bezogen, weil weiter oben davon die Rede war. Kann natürlich
sein, daß der Toaster auch keine stabilen 5V hat, sonden diese auch mit
der Temperatur weglaufen, dann addieren sich die Fehler :-)
ich schrieb:> Ja, in Bezug auf die Spannung hast du recht. Ich habe es nur auf die> Temperatur bezogen, weil weiter oben davon die Rede war. Kann natürlich> sein, daß der Toaster auch keine stabilen 5V hat, sonden diese auch mit> der Temperatur weglaufen, dann addieren sich die Fehler :-)
Ich denke da jetzt weniger an den Toaster als allgemein an
Batteriebetrieb. Da läuft der Atmega8 ja völlig aus der Spur wenn die
Spannung absinkt.
mfg.
Stimmt, da sind wir uns einig. Da ist beim 88er schon viel gemacht
worden. Ich bin eben nur auf den Beitrag von Martin Kreiner eingegangen.
Schönen Abend!
ich schrieb:> Hallo Markus,>> ich hab jetzt auf die Schnelle im Datenblatt keine Angabe gefunden, wie> weit der interne RC bei einer bestimmten Temperaturdifferenz driftet.> Wenn du von +-10% schreibst, würde das ja bedeuten, daß die 8MHz von> 7,2..8,8MHz laufen würden.
Ich hab mich auf einen ATtiny45 bezogen mit Werkskalibrierung.
(Datenblatt S. 164)
Ja, wenn man ihn kalibriert, wird er wesentlich genauer.
Ich denke aber, das bedeutet in der Massen-Produktion doch auch wieder
einen zusätzlichen Arbeitsschritt, oder? (Das würde doch auch wieder
etwas Kosten verursachen, oder irre ich mich?) Von dem her, habe ich das
Gefühl, wird man daher lieber gleich einen Quarz verwenden, der ohne
Kalibrierung genau ist.
Hm, also ich denke, hier stimmen wir alle überein.
Die neueren sind genauer und laufen weniger als die älteren Typen. Und
wenn man die Genauigkeit nicht braucht, weil eben beispielsweise nur
unkritische Steuerungs- oder Logik-Aufgaben zu bewältigen sind, kann man
getrost den inneren RC nehmen.
Und bei den Pullups kommt es auch darauf an, ob die inneren reichen.
Wenn die eben zu hochohmig sind, braucht man außen noch welche. Immer je
nach Einsatz-Zweck...
Markus schrieb:> ich schrieb:>> Hallo Markus,>>>> ich hab jetzt auf die Schnelle im Datenblatt keine Angabe gefunden, wie>> weit der interne RC bei einer bestimmten Temperaturdifferenz driftet.>> Wenn du von +-10% schreibst, würde das ja bedeuten, daß die 8MHz von>> 7,2..8,8MHz laufen würden.>> Ich hab mich auf einen ATtiny45 bezogen mit Werkskalibrierung.> (Datenblatt S. 164)> Ja, wenn man ihn kalibriert, wird er wesentlich genauer.>> Ich denke aber, das bedeutet in der Massen-Produktion doch auch wieder> einen zusätzlichen Arbeitsschritt, oder? (Das würde doch auch wieder> etwas Kosten verursachen, oder irre ich mich?) Von dem her, habe ich das> Gefühl, wird man daher lieber gleich einen Quarz verwenden, der ohne> Kalibrierung genau ist.
Das sehe ich grundsätzlich genau so. Allerdings sind dann vom Tiny45
zwei Pins weg. Und mit seiner Pll hat er noch andere Qualitäten. Bei
Controllern mit mehr Pins, z.B. 4313, kommt ein Quarz dran und fertig.
Nur bei Atmega 48 & Co. sieht das etwas anders aus.
Da kann man am Quarz- Anschluss alternativ zum normalen Quarz einen
Uhrenquarz anschliessen und Timer2 asynchron damit takten, was im
Batteriebetrieb, wenn er sich selbst aufwecken können soll, die
stromsparendste Lösung ist. Soll in dieser Konstellation
Datenübertragung gemacht werden, kann der Controller sich selbst zur
Laufzeit mit dem Uhrenquarz als Zeitreferenz auf 7,3728MHz(921,6KHz)
kalibrieren.
mfg.
Thomas Eckmann schrieb:> Nur bei Atmega 48 & Co. sieht das etwas anders aus.> Da kann man am Quarz- Anschluss alternativ zum normalen Quarz einen> Uhrenquarz anschliessen und Timer2 asynchron damit takten, was im> Batteriebetrieb, wenn er sich selbst aufwecken können soll, die> stromsparendste Lösung ist. Soll in dieser Konstellation> Datenübertragung gemacht werden, kann der Controller sich selbst zur> Laufzeit mit dem Uhrenquarz als Zeitreferenz auf 7,3728MHz(921,6KHz)> kalibrieren.
Interessanter Ansatz. Danke für den Tipp!
Quarz und externe Pullups braucht es im Normalbetrieb sicher nicht.
Ich sehe die Möglichkeit, dass der Toaster durch einen EMV-Test musste,
bevor er in den Handel kam. Das soll es ja noch geben.
Hier wären größere Pullup-Ströme vorteilhafter.