- LiFePO4 Speicher Test         
Ergebnis 1 bis 10 von 30

Thema: Programm ablauf langsam

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    millis() und micros() Funktionswerte sind in Arduino-C++ libs immer (!) als unsigned long definiert, stattdessen kann man auch uint32_t verwenden ( das ist auf dem Mega genau das gleiche, man erkennt diesen plattform-unabhängigen expliziten Datentyp nur besser beim Programmieren ). Wie mxt schon schrieb, ist float viel zu ungenau, und es führt höchstens zu Rechenfehlern und zu unnötigen Typecasting-Rechenoperationen. Aber intern wird doch bei millis() und micros() eh in 32bit Integer gerechnet, also warum abweichen? Das führt höchstens zu Rechenfehlern u/o zeitaufwändigen, unnötigen Umrechnungen.

    Im Übrigen ist Arduino Sketch nicht C, sondern es benutzt C++, und das wäre ein ganz entscheidender Unterschied , wie einmal ein Arduino Entwickler schrieb (Paul Stoffregen, IIRC) denn es hat viele Eigenheiten, die nicht 100% C++ standard- und lib-kompatibel sind. Daher sollte man sich möglichst an die Arduino-Definitionen halten, wie sie in der Referenz veröffentlicht wurden (die aber auch manchmal fehlerhaft sind, wie in Github-Diskussionen nachzulesen ist).
    Allgemeine C-Hinweise zu K+R oder gnu C oder was auch immer helfen bei Arduino Sketch also definitiv nicht weiter!
    Geändert von HaWe (29.08.2016 um 08:43 Uhr)

  2. #2
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Ihr wisst sehr viel,

    aber klarer wird es mir dadurch nicht.

    Daher noch mal:

    "else if (dir == 1 && (micros() - M2_microsalt) > Schrittdauer) "

    Bitte möglichst eine konkrete Antwort.

    M2_microsalt als .....
    Schrittdauer als .....

    die Schrittdauer, das habe ich vorher was falsche angegeben, hat eine Größenordnung von 400 us bis 20ms

    vG

    fredyxx

  3. #3
    HaWe
    Gast
    ich schrieb doch ( mehrfach ):
    millis() und micros() Funktionswerte sind in Arduino-C++ libs immer (!) als unsigned long definiert, stattdessen kann man auch uint32_t verwenden

    also mach alles, was solche Werte zwischenspeichert und damit rechnet, ebenfalls zu unsigned long , stattdessen kann man auch hier uint32_t verwenden.

  4. #4
    Erfahrener Benutzer Begeisterter Techniker
    Registriert seit
    18.03.2013
    Beiträge
    242
    Zitat Zitat von HaWe Beitrag anzeigen
    ich schrieb doch ( mehrfach ):

    also mach alles, was solche Werte zwischenspeichert und damit rechnet, ebenfalls zu unsigned long , stattdessen kann man auch hier uint32_t verwenden.
    Danke, das ist nun eindeutig.

    Und noch mal herzlichen Dank für eure Geduld mit mir.

    vG

    fredyxx

Ähnliche Themen

  1. UART, zeitlicher Ablauf Subprogramme
    Von mollyman im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 6
    Letzter Beitrag: 14.06.2013, 17:10
  2. Programm-Ablauf wird nicht eingehalten.
    Von RobbyMartin im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 5
    Letzter Beitrag: 11.06.2011, 15:39
  3. Programm zu langsam?
    Von Hübi im Forum Basic-Programmierung (Bascom-Compiler)
    Antworten: 16
    Letzter Beitrag: 05.03.2009, 17:03
  4. Ablauf von Programmen generell
    Von The Man im Forum Assembler-Programmierung
    Antworten: 2
    Letzter Beitrag: 18.08.2007, 14:21
  5. Ablauf der IRSs mit SIGNAL
    Von weijr im Forum Elektronik
    Antworten: 5
    Letzter Beitrag: 03.12.2006, 21:47

Berechtigungen

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

Solar Speicher und Akkus Tests