- 12V Akku mit 280 Ah bauen         
Ergebnis 1 bis 10 von 17

Thema: HaWe Brickbench Benchmark Test 2.0 für Arduino

Hybrid-Darstellung

Vorheriger Beitrag Vorheriger Beitrag   Nächster Beitrag Nächster Beitrag
  1. #1
    HaWe
    Gast
    Update,

    GPIO-Routine für Arduino Mega testweise optional ersetzbar durch low-level Register bit read/write:

    Code:
    //--------------------------------------------
    int32_t test_GPIO_AVR() {  // 6,000,000 GPIO bit r/w
       volatile static bool w=false, r;
       uint32_t y;
       for (y=0; y<2000000; y++) {     
             bitWrite(PORTB, PB5, w);
             w=!w;
             r = bitRead(PINB, PB7);
             bitWrite(PORTB, PB6, w&!r);   // optional:  bitWrite(PORTB, PB6, w&r);   
       }
       return 1; // debug
    }
    Code:
      6a     41569  GPIO digitalRead/Write
      6b     4528   GPIO register bitRead/Write
    Anm.:
    direct port manipulation compiles to 1 or 2 instructions, calling digitalRead is dozens.
    One issue to be aware of is interrupts - some of the native direct-port manipulation code will not be
    interrupt-safe, where as digitalRead/digitalWrite/pinMode() are carefully coded to work when used
    both in an ISR and the main program.

    Update 2:
    Habe jetzt auch die Routine für optional 32bit fp_op (float) neu geschrieben, die dadurch jetzt auch erhebliche Laufzeitunterschiede zu 64bit double auf allen ARM-Cores erkennen lässt!
    Geändert von HaWe (23.07.2018 um 10:18 Uhr)

  2. #2
    HaWe
    Gast
    besitzt hier jemand einen ARM mit M4F, z.B. einen Teensy 3.5 oder 3.6?
    Der M4F von Adafruit scheint bei fp_double keinen Gebrauch von der fpu zumachen, sondern nur bei 32bit-float!
    Zitat Zitat von westfw
    And for grins, a SAMD51:

    Code:
    ...
    2     24482  double_op
    2      2772  float_op
    ...
    (I'm not convinced that the double floating point library "properly" utilizes single point hardware. Sigh.)
    Code:
    #define PI  M_PI
    
    //--------------------------------------------
    double test_fp_math() { // 2,500,000 fp (double) mult, transcend.
      volatile double s=(double)PI;
      unsigned long y;
    
      for(y=0;y<500000UL;y++) {
         s*=sqrt(s);
         s=sin(s);
         s=exp(s);
         s*=s;
      }
      return s;  // debug
    }
    
    //--------------------------------------------
    float test_fp_math32() { // 2,500,000 32bit float mult, transcend.
      volatile float s=(float)PI;
      unsigned long y;
    
      for(y=0;y<500000UL;y++) {
         s*=sqrtf(s);
         s=sinf(s);
         s=expf(s);
         s*=s;
      }
      return s;  // debug
    }

  3. #3
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Zitat Zitat von HaWe Beitrag anzeigen
    besitzt hier jemand einen ARM mit M4F, z.B. einen Teensy 3.5 oder 3.6?
    Der M4F von Adafruit scheint bei fp_double keinen Gebrauch von der fpu zumachen, sondern nur bei 32bit-float!
    Ja, besitze ich, aber kein solches Display, deswegen habe ich mir den Code nicht weiter angesehen.

    Cortex M4F kann nur float, das ist normal. Für double muss man z.B. auf den Teensy 4 warten, Cortex M7 600 MHz und dann auch FPU mit double. Wird aber sicher noch 1-2 Jahre dauern.

  4. #4
    HaWe
    Gast
    Zitat Zitat von Mxt Beitrag anzeigen
    Ja, besitze ich, aber kein solches Display, deswegen habe ich mir den Code nicht weiter angesehen.
    Cortex M4F kann nur float, das ist normal. Für double muss man z.B. auf den Teensy 4 warten, Cortex M7 600 MHz und dann auch FPU mit double. Wird aber sicher noch 1-2 Jahre dauern.
    das Display brauchst du nicht anschließen: wenn es nicht verkabelt ist, tut er nur so als ob er es nutzt, aber es schadet nicht weiter und blockiert auch nichts. Adafruit GFX und ILI9341 libs lassen sich über den lib manager direkt in der IDE installieren.

  5. #5
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Das sind zwei Libraries von denen der Teensy-Installer schon eigene optimierte Varianten mitbringt. Da fehlt mir im Moment sowohl Zeit als auch Lust, um zu schauen, ob er auch die normalen nimmt.

    Mit großen Unterschieden zwischen Adafruit Metro und Teensy 3.5 würde ich sowieso nicht rechnen.

  6. #6
    HaWe
    Gast
    es gibt auch eine Test-Version von westfw, ganz vergessen:

    https://forum.arduino.cc/index.php?a...;attach=267064

  7. #7
    Erfahrener Benutzer Roboter Experte
    Registriert seit
    04.09.2011
    Ort
    Hessen
    Beiträge
    707
    Das sollte gehen, eventuell komme ich heute Abend dazu die Werte aufzunehmen.

Ähnliche Themen

  1. HaWe Brickbench Benchmark Test 2.0
    Von HaWe im Forum Raspberry Pi
    Antworten: 5
    Letzter Beitrag: 18.07.2018, 14:16
  2. Arduino (Due): Test auf ausreichend Bordspannung?
    Von HaWe im Forum Arduino -Plattform
    Antworten: 16
    Letzter Beitrag: 17.05.2016, 11:15
  3. Benchmark für Raspberry Pi
    Von HaWe im Forum Raspberry Pi
    Antworten: 15
    Letzter Beitrag: 10.12.2014, 10:08
  4. Fritzing Creator Kit im Test: Bastelkasten für Nachwuchs-Arduino-Hacker
    Von Roboternetz-News im Forum Neuigkeiten / Technik-News / Nachrichten / Aktuelles
    Antworten: 0
    Letzter Beitrag: 20.12.2013, 11:20
  5. Antworten: 8
    Letzter Beitrag: 30.08.2006, 13:13

Berechtigungen

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

fchao-Sinus-Wechselrichter AliExpress