PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Arduino Uno - Frage zum Quartz



Andi#87
24.02.2019, 21:12
Hallo,

auf dem Arduino-Uno-Board befindet sich ein Quartz mit 16.000 MHz. Kann man auch einen anderen Quartz verwenden, z.B. 10.000 MHz?

Andi

Sisor
24.02.2019, 21:21
Jain!
Ja, weil es rein vom Microprozessor kein Problem darstellt.
Nein, weil nicht alle Arduino-Funktionen korrekt funktionieren werden. Z.B. millis() würde falsche Werte liefern. Alle Programme, die darauf beruhen damit auch. Das zu beheben wäre mit Programmieraufwand verbunden, dessen Größe vom konkreten Projekt abhängt.

Andi#87
24.02.2019, 22:20
Danke. Für einen Sketch, der lediglich Taster/Schalter beinhaltet, die relativ zeitunkritisch sind, könnte ich also auch einen 10.000er Quartz verwenden (?) Kann ich den einfach statt des 16ers einsetzen? Oder muss da Bauteilseitig auch etwas angepasst werden? Viele Bauteile sind es ja nicht...

Andi

Sisor
24.02.2019, 23:22
Ich bin der Meinung ein Tausch geht einfach so, weil die Oszillatorschaltung für einen relativ breiten Frequenzbereich ausgelegt ist. Hab ich aber selbst noch nicht getestet.
Ist das eine rein hypothetische Frage oder welchen Grund gibt es, den Quarz zu tauschen?

Gnom67
24.02.2019, 23:26
Wozu willst du einen geringeren Takt? Um was geht es dir dabei? Willst du Energie sparen?

Erstmal kannst du den Clock-Divider einstellen, so dass der Takt runtergeteilt wird mit einem Faktor bis zu 256. Noch mehr bringt es, wenn du den internen 128 KHz Oszillator als Clock einstellst. Je geringer der Takt, desto geringer der Stromverbrauch.
Wenn es nur um Taster geht, kann der µC in den Deep Sleep Modus versetzt werden, da braucht er fast keinen Strom. Wenn eine Taste gedrückt wird, wird er über einen Interrupt wieder aufgeweckt.
Ein Uno ist dafür aber schlecht geeignet, weil der noch allerhand drumherum auf der Platine hat. Wenn es um Stromersparnis für eine reine Tasteranwendung geht, nimm einen Pro Mini.

Andi#87
24.02.2019, 23:53
Danke für Eure Antworten. Es ist ein simpler Grund für meine Frage: ich habe noch 20 Quartze je 10.000 MHz rumliegen. Wenn ich die (für zeitunkritische Sketches) verwenden kann, muss ich nicht extra neue 16er kaufen...

Andi

Gnom67
25.02.2019, 00:03
Etwas verwirrend, dass deine Frage auf den Uno Bezug nimmt - da ist doch schon ein Quartz drauf... ;-)
10 MHz reicht nicht nur für gänzlich zeitunkritische Tasteraufgaben. Ich glaube, schon standardmäßig ist der Divider auf 8 gesetzt, d. h., ein "frischer" Atmega328 läuft nur mit 2 MHz (bei 16 MHz Quartz). Und in vielen Fällen wird das wahrscheinich nie geändert...
Im Übrigen gibt es meines Wissens verschiedene Konstanten, die dem Compiler sagen, mit welchem Takt der µC tatsächlich läuft. Damit kann man die millis() usw. anpassen. (Zumindest kenn ich das vom Atmel Studio so.)

Andi#87
25.02.2019, 04:58
...weil ich meistens den UNO auf meinen Schaltungen nicht als fertiges Board verwende, sondern seine nötigen Komponenten (ohne USB usw) nachbaue und somit in meine Schaltung integriere.

Andi

Gnom67
25.02.2019, 08:21
Na, dann ist es ja auch kein Uno... ;-)

021aet04
25.02.2019, 09:14
Wie bereits erwähnt kann man, wenn man nur einen uC verwendet, auch einen internen Takt verwenden. Es gibt mehrere, Standard ist 8MHz mit Teiler von 8. Den Teiler kann man auch abschalten. Zusätzlich gibt es noch weitere Oszillatoren.

MfG Hannes

oberallgeier
25.02.2019, 09:25
.. den UNO auf meinen Schaltungen nicht als fertiges Board verwende, sondern .. nachbaue und somit in meine Schaltung integriere ..Das ist ja mal ne klare Ansage, jetzt verstehe ich Deinen Wunsch . . .

Ok, dann mal was Grundlegendes: wenn Du Deine Controller fabrikfrisch kaufst (für Deine selbst aufgebauten Schaltungen) dann ticken die sowieso schon mit dem internen Takt - Du bräuchtest dann keinen separaten Taktgeber. Der interne Takt fabrikfrischer (Atmel-)Controller ist (fast) durchwegs 8 MHz, dazu ist Fuse CHKDIV8 gesetzt. Daher wird der interne Takt durch 8 geteilt, sodass de fakto 1 Mhz am >>fabrikfrischen<< Controller anstehen. Ohne zusätzliche Aktionen, ohne zusätzliches Bauteil. Durch Ändern von CLKPS, CHKDIV8 und so wird der anstehende Controllertakt ausgewählt und beeinflusst.


.. ich habe noch 20 Quartze je 10.000 MHz rumliegen. Wenn ich die (für zeitunkritische Sketches) verwenden kann, muss ich nicht extra neue 16er kaufen ..Für zeitunkritische Programme braucht man keinen Quartz, ich habe etliche Anwendungen die "ohne" laufen (keine arduino-Sketches!). ABER es ist oben ja deutlich drauf hingewiesen, dass die Sketches für arduino bei Taktfragen davon ausgehen, dass der Quarztakt 16 MHz ist . . . und jetzt musst Du entscheiden, ob Dein(e) Sketch/es auf diese Tatsache zurückgreifen. Da Du keinen Sketch nennst, kann hier niemand ne verbindliche Antwort geben, aber die bisherigen Antworten sind für Dich doch Entscheidungsgrundlage genug ! ?

Andi#87
03.03.2019, 10:21
"...Da Du keinen Sketch nennst..." Es handelt sich um einfache Schaltvorgänge, Taster drücken, On/Off.

Danke für Eure Antworten.

Andi

monkye2000
03.03.2019, 13:19
Also, einige Chips können intern auch mit anderen Frequenzen laufen, z.B. 16 MHz.

Beschrieben ist das Ganze mit Anleitung hier: LINK (https://www.hackster.io/porrey/attiny-16mhz-610d41)

Macht manchmal Sinn und funktioniert aus eigener Erfahrung auch gut. Allerdings besitzen nicht alle AVR die technischen Möglichkeiten. (z.B. PLL)