- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 11

Thema: Problem mit Ausführungszeit bzw. micros() und delayMicroseconds()

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Das mit dem Multiplizieren mit 4 beim UNO Rev3 ist jedenfalls irgendwie Quatsch. Wenn ich micros auslese gibt er ganz normal micros zurück (nix mit 4 oder so) - wenn ich das mit millis vergleiche. Wenn ich millis auslese, soll er ja auch millis zurückgeben.

    Na ja, entscheidend für mich ist, dass ich immer dieselbe Messeinheit dort auslese, um Verarbeitungszeiten untereinander zu beurteilen.

    Danke für Deine Hilfe mxt!

  2. #2
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    07.03.2011
    Beiträge
    1.899
    Zitat Zitat von Moppi Beitrag anzeigen
    Das mit dem Multiplizieren mit 4 beim UNO Rev3 ist jedenfalls irgendwie Quatsch.
    Hast du schon mal 3 oder 5 oder 6 oder 7 als Ergebniss bekommen?

    MfG Klebwax
    Strom fließt auch durch krumme Drähte !

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Wie man hier lesen kann, ist micros() bei den Arduino 8-Bittern mit einem Zähler implementiert, der alle 4 us weiterzählt
    https://ucexperiment.wordpress.com/2...cros-function/
    Die Einheit ist also Mikrosekunden aber die Auflösung nur 4 Mikrosekunden. Zu multiplizieren gibt es da nichts, das macht micros schon intern.

  4. #4
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Danke für den Hinweis!




    Um aber nicht wieder einen neuen Thread aufzumachen:

    Nachdem ich nun gestern ATmega328 ohne Bootloader bekommen habe, war ich gezwungen, mich den halben Tag damit auseinanderzusetzen, inkl. Beschaltung und Quarz.

    Ich habe mal im Datenblatt geschaut, wegen Geschwindigkeit:

    Speed Grade:
    ̶ 0 - 4MHz@1.8 - 5.5V, 0 - 10MHz@2.7 - 5.5.V, 0 - 20MHz @ 4.5 - 5.5V

    Mal gucken, ob ich das richtig denke, zum 328P:

    Man kann den mit max. 10 MHz bei 3.3V betreiben?
    Man kann den mit max. 20 MHz an 5V betreiben?
    Die unterste Grenze liegt bei 0 Hz? - Dann tut er nichts mehr.

    Den 328P findet man immer mit 16MHz@5V betrieben. Warum nicht mit 18MHz oder 20MHz?
    Weniger MHz = geringere Geschwindigkeit = geringerer Stromverbrauch?

    Und wenn ich schon beim Fragen bin:

    Der interne Taktgeber, so habe ich im Netz gelesen, kann auch benutzt werden. Das muss aber über diese Fuse-Bits eingestellt werden. Wo ändert man die? - Wohl beim Bootlader aufspielen. Aber wo stehen die im Sketch ArduinoISP? - Dort müssten die doch zu finden sein. Oder stehen die in einer extra Datei, die man ändern muss?

    Noch was zu einem externen Takt: muss das ein Quarz sein oder kann das auch was anderes sein? Wie ein Takt am Digitalausgang eines anderen Mikrokontrollers? - Dann könnte man auch an einem andern ein PWM-Pin abgreifen.
    Geändert von Moppi (20.09.2018 um 05:39 Uhr)

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Ich versuche mal einen Teil zu beantworten, den Rest werden ggf. Leute erklären, die sich mehr mit den AVRs auskennen.

    Den 328P findet man immer mit 16MHz@5V betrieben.
    Das stimmt nicht, ich kenne z.B. Displays, wo er als Controller verbaut ist, die arbeiten mit 10,... oder 14,... MHz. Das braucht man auch, um bestimmte Baudraten bei der seriellen Schnittstelle exakt hinzubekommen, die werden nämlich durch ganzzahlige Teilung aus dem Takt erzeugt.
    Und ich bin sicher, hier im Forum gibt es Leute, die verwenden ihn bei 20 MHz.

    Weniger MHz = geringere Geschwindigkeit = geringerer Stromverbrauch?
    Das gilt für den Prozessor, aber nicht für Bauteile drum herum, wie z.B. Spannungsregler.

    Aber wo stehen die im Sketch ArduinoISP?
    Wenn der Sketch aus der IDE gemeint ist: Gar nicht. Dieser Sketch dient dazu aus einem Arduino einen Programmer zu machen. Das ist nicht der Code für einen Bootloader.

    muss das ein Quarz sein oder kann das auch was anderes sein?
    Bei einem normalen Uno ist das kein Quarz, sondern aus Kostengründen ein Keramikresonator. Der ist billiger, hat aber einer größere Toleranz bei der Frequenz.
    Digitalausgang statt Quarz glaube ich nicht.
    Auch darf die Frequenz eher nicht variabel sein, die Teilerverhältnisse für millis, Serial, I2C, SPI, PWM usw. sind bei den Dingern ja meist fest eingestellt.
    Geändert von Mxt (20.09.2018 um 07:59 Uhr)

  6. #6
    Erfahrener Benutzer Robotik Einstein
    Registriert seit
    18.03.2018
    Beiträge
    2.650
    Zitat Zitat von Mxt Beitrag anzeigen
    Auch darf die Frequenz eher nicht variabel sein, die Teilerverhältnisse für millis, Serial, I2C, SPI, PWM usw. sind bei den Dingern ja meist fest eingestellt.
    So etwas habe ich mir auch gedacht. Weswegen die UNOs wohl dann immer mit 16MHz betrieben werden - dazu habe ich gerade das hier gefunden: https://www.mikrocontroller.net/topic/341298

    ZU den Fuse-Bits habe ich auch was passendes gefunden:

    Geändert von Moppi (20.09.2018 um 09:15 Uhr)

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Warscheinlich laufen die meisten Einstellungen bei Arduino über die boards.txt. Ob der Bootlader da überhaupt beteiligt ist, weiß ich nicht.

    Die Takteinstellungen im Menu der Arduino IDE, wie hier bei Teensy 3.2 wählen auch nur unterschiedliche Zeilen in der Boards.txt aus
    Klicke auf die Grafik für eine größere Ansicht

Name:	Takt.png
Hits:	5
Größe:	93,4 KB
ID:	33656
    Geändert von Mxt (20.09.2018 um 09:38 Uhr)

Ähnliche Themen

  1. Antworten: 48
    Letzter Beitrag: 16.11.2014, 07:46
  2. Antworten: 2
    Letzter Beitrag: 01.11.2012, 15:21
  3. ATMega32 UART problem --> Problem gelöst
    Von ChristophB im Forum C - Programmierung (GCC u.a.)
    Antworten: 3
    Letzter Beitrag: 12.03.2010, 18:45
  4. Problem mit Atmega644P Erkennung (Bascom-Versions-Problem)
    Von Rohbotiker im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 3
    Letzter Beitrag: 11.08.2008, 18:52
  5. [ERLEDIGT] Wie am einfachsten Ausführungszeit Unterprogramms messen?
    Von PICture im Forum PIC Controller
    Antworten: 11
    Letzter Beitrag: 06.05.2006, 23:50

Berechtigungen

  • Neue Themen erstellen: Nein
  • Themen beantworten: Nein
  • Anhänge hochladen: Nein
  • Beiträge bearbeiten: Nein
  •  

LiFePO4 Speicher Test