Arduino läuft mit falschem Takt?

Hallo,

für ein Projekt habe ich den Arduino Mini Pro mit SMD Bauteilen nachgebaut und geringfügig erweitert (Siehe Bild).

Programmiert wird mit dem avrisp mk2. Den Bootloader konnte ich damit schon erfolgreich aufspielen. Der Blink Sketch ließ sich damit auch problemlos auf das Board aufspielen.

Jetzt aber zum Problem:

Wenn ich bei dem Blink Sketch jeweils ein delay(10000) einstelle, solte die LED 10s an und 10s aus sein.
Jedoch ist die LED auf meinem Board nur ca. 6,4s an und 6,4s aus. Woran kann dies liegen ?

elektro31:
Wenn ich bei dem Blink Sketch jeweils ein delay(10000) einstelle, solte die LED 10s an und 10s aus sein.
Jedoch ist die LED auf meinem Board nur ca. 6,4s an und 6,4s aus. Woran kann dies liegen ?

Das könnte daran liegen, dass Du anstelle des geplanten 16 MHz Schwingquarzes einen 10 MHz Schwingquarz eingebaut hast.

eingebaut ist diese Quarz

https://www.reichelt.de/Quarze-SMD-Keramikgehaeuse/2/index.html?ACTION=3;ARTICLE=85005;SEARCH=16,000000-MJ

Hallo,

oder irgendwas stimmt mit den "programmierten Takt" nicht. Fuses falsch gesetzt oder passen nicht zum µC. ???

Was steht auf dem Quarz gedruckt?
Grüße Uwe

elektro31:
eingebaut ist diese Quarz

16,000000-MJ: Keramik-SMD-Quarz, 3x5x1mm, 16,0MHz bei reichelt elektronik

Keinerlei Beschriftung auf dem Gehäuse erkennbar?

In dem Fall würde ich mir mal, wenn Du eins hast, mit einem Oszilloskop ansehen, mit welcher Frequenz der Quarz tatsächlich schwingt.

Ich habe mal ein Foto von dem Quarz gemacht, welchen ich von Reichelt geliefert bekommen habe(Siehe Anhang).

Steht 25,00000M drauf. Hat Reichelt mir also wirklich ein falsches Bauteil geliefert? >:(

elektro31:
Steht 25,00000M drauf. Hat Reichelt mir also wirklich ein falsches Bauteil geliefert? >:(

Sieht ja wohl ganz so aus.

Einen AVR Atmega Controller auf 25 MHz zu übertakten, funktioniert möglicherweise schon mal an sich nicht, ein Atmega328 ist überhaupt nur bis 20 MHz maximale Taktrate spezifiziert.

Auch die Arduino-Libraries können damit nicht umgehen. D.h. selbst wenn der Quarz Deinen AVR mit 25 MHz Übertaktung noch zum Takten bringt, mußt Du Dir Deine Timing-Library dafür natürlich selber schreiben und kannst nicht die Arduino-Core Library dafür verwenden.

Wenn ich bei dem Blink Sketch jeweils ein delay(10000) einstelle, solte die LED 10s an und 10s aus sein.
Jedoch ist die LED auf meinem Board nur ca. 6,4s an und 6,4s aus.

16MHz *10/6,4 = 25MHz: der Aufdruck auf dem Quarz stimmt also.
Ist natürlich ausserhalb der Spezifikation (max. 20 MHz) aber schwingt wohl trotzdem.

Müsstest du dir in der boards.txt einen zusätzlichen Eintrag (z.B. myfastmini statt uno) mit

myfastmini.build.f_cpu=25000000L

bauen.

Nachdem er schon eingelötet ist, brauchst du ihn an Reichelt nicht mehr zurückzuschicken :wink:

Hallo,

ist ein geänderter Takteintrag in der Boards.txt ausreichend das alle Timing des Sketches wieder stimmen?
delay, millis o.ä.

delay() und millis() schon, ob alle Libraries den Wert verwenden oder "wissen", dass ein Arduino immer mit 16 MHz läuft, wäre rauszukriegen.
Zum Glück wird der ganze Kram immer komplett kompiliert, kann also klappen.

Wie geschrieben hab ich einen neuen Eintrag in der boards.txt verfasst.

Und siehe da es passt wieder alles. Auch mein Programm weches LED-Stripes per Bluetooth steuert funktioniert wieder.

Vielen Dank!

Ich würde aber nicht darauf bauen, daß der ATmega ewig stabil mit 25Mhz läuft.

Ich rate Dir einen 16MHz Quarz zu besorgen und den 25 auszutauschen.

Grüße Uwe

Ich melde mich nochmal. Der Arduino läuft jetzt zwar, aber es kommt immer wieder zu Programm Störungen.

Was mir aufgefallen ist, dass der Spannungsregler (MIC5205) extrem heiß wird. Gemessen habe ich bis zu 85 °C und dann kam es auch meistens zu den Störungen.

Kann es sein, dass diese auch durch den falschen Quarz verursacht wird?

Kann es sein, dass diese auch durch den falschen Quarz verursacht wird?

Ja, die Verlustleitung ist proportional zum Takt.

Grüße Uwe

Reichelt hat mir schon geantwortet und schickt mir den richtigen Quarz zu. Wie bekomme ich den alten denn am besten wieder ab ?

Hallo,

das geht total beschissen. Hab aber schon gestaunt wie du den so sauber drauf gelötet hast. Sieht nämlich astrein aus.

Am besten Du hast eine Entlötsaugpumpe. So ein Handpumpe reicht aus. Entlötzlitze ist auch nicht falsch und ein Streifen Papier. Erstmal so viel wie möglich Lötzinn wegnehmen. Notfalls nochmal mit der Entlötlitze ran. Wenn der dann noch festhängt. Mit Lötspitze erwärmen und den Streifen Papier dazwischen schieben. Notfalls mit 4 Händen.