Kleiner Vergleich zwischen Netduino Plus 1 und Netduino Plus 2

NetduinoPlus1u2
Netduino Plus 1 (Links) und Netduino Plus 2 (rechts)

Seit kurzem zählt zu meinem Bastelsortiment der Netduino Plus 2, der mit mehr Takt deutlich schneller rechnet als der Netduino Plus 1. Die Investition hat sich gelohnt und bringt mein Projekt weiter voran.

Kommen wir zunächst zu den grundlegenden technischen Daten. Auch auf der Seite Netduino.com/Hardware/ zu finden.

  Netduino Plus 1 Netduino Plus 2
Speed 48 MHz 168 MHz
Code Storage 64 KB 384 KB
RAM 42 KB 100+ KB
GPIO 20 22
UART 2 4
PWM 4 6
SPI 1 1
I²C 1 1

Klar ist, dass der neue schneller sein muss, allerdings habe ich mich gefragt, wie viel mehr ich verarbeiten kann. Nun, mein Beispiel zeigt eine kleine Rechenaufgabe, in der die Zeit gestoppt wird und man nach 100 Durchläufen den Durchschnittswert erhält.

int counter = 0;
long average = 0;

while (true)
{
    Stopwatch.GetElapsedMicrosecounds();

    for (int i = 0; i < 100; i++)
    {
        float f = (float)System.Math.Pow(1234, 4321);

        double d = System.Math.Sqrt((double)f);

        Int64 i64 = (Int64)(d * f);
    }

    average = (average + Stopwatch.GetElapsedMicrosecounds()) / 2;

    if (counter > 99)
    {
        Debug.Print("Average Time: " + average.ToString() + " Microsecounds");
        counter = 0;
    }
    else
    {
        counter++;
    }
}

Der Programmablauf in der Main() Methode

Die Aufgabe ist eine eher nicht optimal ausgelegte Rechnung, was aber für den Testlauf absichtlich so gestaltet ist. Die Unterschiede bei der Zeitmessung können sich sehen lassen.

Netduino Plus 1 ca. 43182 bis 43232 Mikrosekunden
Netduino Plus 2 ca. 7902 bis 7927 Mikrosekunden

Bei weiteren Tests, die ich bereits durchgeführt habe, funktionierte z.B. die I²C Verbindung deutlich schneller. Mit dem Sensor MPU6050 las der NP+ zuvor nur die Sensor Daten in 3ms, jetzt kann ich noch einen künstlichen Horizont und 4 PIDs berechnen und der NP+2 benötigt für das Ganze gerade mal 2ms.

Ein paar Dinge haben sich geändert. Der I²C Bus liegt jetzt auf Pin 15 und 16, wenn man das so nennen kann. Also quergegenüber auf dem Board. Und wenn man UART 1 bzw. COM1 verwenden will, ist dieser ebenfalls dort. Somit fällt leider eine serielle Verbindung weg, was jedoch nicht weiter schlimm ist, da es 3 weitere davon gibt. Für die Netzwerk Buchse RJ45 ist nur noch eine LED als Status zusehen, was allerdings auch weiterhin ausreicht.

Die Beispiel Solution mit .NET Framework 4.2 für NP+ und NP+2 zum Downloaden.

Kommentare

Victor Batista hat gesagt…
Hello Codexzier,

I'm Victor, I have some boards Netduino Plus in a very old application in my house, now I'm try to do some changes in my code but i lost the files of NETMF SDK 4.2 and Netduino SDK 4.2.2.0 64 bit. The wildernesslabs link are broken.

I'm find you on a post answer about this theme in wildernesslabs but I don't find your email.

Can you help me?


Codexzier hat gesagt…
Hello Victor,
unfortunately I only have the backup of the last delivered SDK 4.3.2 on my hard disc.

What about updating the firmware to 4.3.2? Do you have any dependencies on this version? There are only a few improvements in the SDK that shouldn't actually have any influence on previous programme logic.
I started developing on the NETDUINO a long time ago, but I was still able to use my previous programme code.

If you update the firmware, make sure you save the MAC address in case it is reset.

Translated with DeepL.com (free version)

Beliebte Posts aus diesem Blog

Arduino Control (Teil 5) - PWM Signal einlesen

Angular auf dem Raspberry Pi

RC Fahrtenregler für Lego Kettenfahrzeug