INFO: Dieses Forum nutzt Cookies...
Cookies sind für den Betrieb des Forums unverzichtbar. Mit der Nutzung des Forums erklärst Du dich damit einverstanden, dass wir Cookies verwenden.

Es wird in jedem Fall ein Cookie gesetzt um diesen Hinweis nicht mehr zu erhalten. Desweiteren setzen wir Google Adsense und Google Analytics ein.

Antwort schreiben 
 
Themabewertung:
  • 0 Bewertungen - 0 im Durchschnitt
  • 1
  • 2
  • 3
  • 4
  • 5
Zykluszeit bei 8Mhz vs 16Mhz gleich?
30.12.2018, 18:01
Beitrag #1
Zykluszeit bei 8Mhz vs 16Mhz gleich?
Hallo Arduino Freunde,

für mein bisheriges Nixieuhr Projekt habe ich bisher einen ProMini mit 3,3v und 8Mhz verwendet. Die Zykluszeit beträgt je nach Helligkeit ca 15ms.
Für das fertige Layout habe ich mir einen 328p pu mit 28 pins und 5v/16Mhz vorgestellt den ich erstmal einen Bootloader verpasst habe wie folgt. Den ProMini mit 8Mhz den Arduino als ISP geflasht, dann auf einem Steckbrett den 328p pu mit 16Mhz Quarz bestückt und die ISP Verkablung Mosi/Miso durchgeführt. Dann in der IDE auf einen Nano gestellt, als Programmer Arduino als ISP eingestellt und auf Bootloader brennen gedrückt. Das war erfolgreich und die auf dem Promini an Pin 13 verbaute LED blinkte weil ja der Bootloader den Blinkcode verinhaltet. Als weiteres sämliche Kabel entfernt und einen ftdi usb Adapter verkabelt, auch das Flashen darüber klappt ohne Probleme. Also auch den Uhren Sketch in den 328p Pu geflasht, auch das klappt und läuft. Nun die eigentliche Frage, wenn der Atmel nun mit 16Mhz rennt, sollte dann die Zykluszeit nicht geringer ausfallen als mit dem 8Mhz Promini? Wenn ich als Chip in der IDE den ProMini wähle, egal ob 3,3V/8Mhz oder 5V/16Mhz, der Uhrensketch rennt immer gleich. Kann mir jemand nen Tip geben wieso? Grobby
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2018, 18:09
Beitrag #2
RE: Zykluszeit bei 8Mhz vs 16Mhz gleich?
Ich weiß nicht, ob ich Dich richtig verstanden habe.

Die Zeitabläufe (millis(), delay(), Timer, Serial usw.) laufen immer in der richtigen Geschwindigkeit, vorausgesetzt die Fuses sind richtig gesetzt.
Wenn Du also z.B. einen AtMega, der mit 16 MHz läuft als 8MHz fust, stimmen die Zeiten nicht mehr.

Was verstehst Du unter Zykluszeit? Welcher Uhrensketch?

Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2018, 18:33
Beitrag #3
RE: Zykluszeit bei 8Mhz vs 16Mhz gleich?
Erstmal Danke, ich glaub ich hab mich durch die RTC in die Irre führen lassen, weil dort die Zeit über i2c geholt wird. Wenn ich nämlich in den StellenModus wechsle und den Sketch für 8Mhz kompiliert hab, dann blinken die Röhren doppelt so schnell, weil da ja die Millis() zum Einsatz kommen. Ist das denn dann so richtig, das die Zeiten bei 8Mhz doppelt so schnell ablaufen als bei 16Mhz? Zykluszeit messe ich einfach wie lange der Loop dauert.

(30.12.2018 18:09)Tommy56 schrieb:  Ich weiß nicht, ob ich Dich richtig verstanden habe.

Die Zeitabläufe (millis(), delay(), Timer, Serial usw.) laufen immer in der richtigen Geschwindigkeit, vorausgesetzt die Fuses sind richtig gesetzt.
Wenn Du also z.B. einen AtMega, der mit 16 MHz läuft als 8MHz fust, stimmen die Zeiten nicht mehr.

Was verstehst Du unter Zykluszeit? Welcher Uhrensketch?

Stelle Deinen Sketch bitte in Codetags.
Wie das geht, steht hier.

Gruß Tommy
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2018, 18:42
Beitrag #4
RE: Zykluszeit bei 8Mhz vs 16Mhz gleich?
Wenn der Bootlader/die Fuses zum realen Takt passen, dann ist millis() immer gleich schnell. Wenn nicht, hast Du beim Bootlader was falsch gemacht / falsch eingestellt.

Du hast einen AtMega 328P mit 16 MHz, wenn ich das richtig gelesen habe.
Also musst Du auch einen Bootlader für 16 MHz brennen.

Gruß Tommy

"Wer den schnellen Erfolg sucht, sollte nicht programmieren, sondern Holz hacken." (Quelle unbekannt)
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
30.12.2018, 20:02
Beitrag #5
RE: Zykluszeit bei 8Mhz vs 16Mhz gleich?
Hallo grobby,
Das hast du schon richtig erkannt.
Der Atmega ist ein RISC Microkontroller (Computer).
Die meißten Anweisungen brauchen daher nur 1 Takt, ein paar brauchen 2 Takte zum ausführen.
Deswegen läuft das kleine Teil recht flott und effektiv.
Im Grunde sind 8 MHz = 8 Millionen Takte pro sekunde, und 16 MHz eben 16 Millionen Takte pro sekunde.
Auf Assembler Ebene wird häufig Takt genau gerechnet, und ein Zyklus ist wie schon erkannt, ein Durchgang.
Hier in der IDE wird alles im Hintergrund gemacht, und man sieht nichts davon.
Deswegen können bei einen Befehl schon mal 4-6 Takte vergehen, und bei anderen schon 40 - 60 Takte.
Je nachdem wie die "Befehle in der IDE" programmiert wurden.
Was Tommy jetzt meint: Je nachdem ob du jetzt einen 8MHz oder 16MHz Bootloader brennst;
setzt die IDE im Hintergrund die entsprechenen TIMER Register, und rechnet auch die passenden Korrekturwerte dazu.
Deswegen ist dann 1 millisekunde auch 1 millisekunde. Egal ob jetzt mit 1, 4, 8 oder 16 MHz.
Wenn du einen 8 MHz Bootloader brennst, und da ein 16 MHz Quarz ist, stehen die Registerwerte falsch.
Die Zeit wird schneller ablaufen, aber nicht unbedinngt doppelt so schnell wie du vermuten würdest.

Solltest du mehr Infos brauchen, schau dir mal die Datenblätter zu den Atmegas an, und google mal nach Assembler oder Register in verbindung mit Arduino.
Gruß, Markus

Immer in Stress
Alle Beiträge dieses Benutzers finden
Diese Nachricht in einer Antwort zitieren
Antwort schreiben 


Möglicherweise verwandte Themen...
Thema: Verfasser Antworten: Ansichten: Letzter Beitrag
  Mehrere Servos gleich ansteuern? LoroLoco 2 2.173 12.01.2018 10:29
Letzter Beitrag: hotsystems
  Board nicht gleich Board Gandalf 3 2.071 04.06.2015 13:51
Letzter Beitrag: Gandalf
  Arduino in Breadboard, 8Mhz, 3,3V mitch_m 1 1.653 13.03.2015 11:37
Letzter Beitrag: mitch_m
  Ungenauigkeiten mit internen 8MHz Andi89 5 1.870 12.03.2015 11:17
Letzter Beitrag: Bitklopfer
  Externen Quartz von 16MHz auf 8 MHz abändern Andi89 2 1.581 03.02.2015 11:43
Letzter Beitrag: Andi89
  Pinbelegung Atmega328P 8MHz Georg 4 5.562 25.11.2013 14:54
Letzter Beitrag: Georg

Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 1 Gast/Gäste