MiniEVB Boards (LGT8F328P)

Als MiniEVB werden kleine Boards in verschiedenen Größen angeboten, die zum größten Teil zum Arduino kompatibel sein sollen. Es handelt sich dabei um Mikrocontroller vom Typ LGT8F328P des Herstellers LogicGreen (jetzt: Prodesign Semiconductor) mit einem zum ATmega328P weitestgehend kompatiblen Befehlssatz, jedoch mit einigen Erweiterungen. In diesem Beitrag wird das sog. Nano Style LQFP32 MiniEVB näher betrachtet, wobei die Pin und ihre Positionen an den langen Seiten denen des Arduino Nano entsprechen.

MiniEVB Boards (LGT8F328P)

Dieses Board besitzt zwei Ausfertigungen:

Unterschiede zum Arduino Nano

LGT8F328P ATmega328P
Systemtakt bis zu 32 MHz (1,8V bis 5,5V) bis zu 20 MHz (4,5V bis 5,5V)
bis zu 10 MHz (2,7V bis 5,5V)
bis zu 4 MHz (1,8V bis 5,5V)
Interner Oszillator 32 MHz 8 MHz
Timer 2× 8bit, 2× 16bit
Frequenz bis zu 64MHz
2× 8bit, 1× 16bit
Frequenz bis zu 20MHz
ADC 12 Kanäle (12bit Auflösung)
Verstärkung: 1×, 8×, 16×, 32×
Differenzmessung möglich
8 Kanäle (10bit Auflösung)
Verstärkung: 1×
keine Differenzmessung
DAC vorhanden mit 8bit-Auflösung
(Port PD4 / Arduino GPIO 4)
nicht vorhanden
Interne Referenzspannungen 1,024V, 2,048V, 4,096V (±1mV) 1,1V (±100mV)
EEPROM Simuliertes EEPROM im Flash-Speicher 1 kB EEPROM
Stromaufnahme (GPIO) ≤ 30mA ≤ 20mA

Anschlüsse

Anschlüsse des MiniEVB LGT8F328P Nano Boards

Die Anschlüsse des LGT8F328P Nano Boards entsprechen nahezu denen des Arduino Nano mit einigen Unterschieden:
Es gibt 5 zusätzliche digitale Ein-/Ausgänge; AREF, A6 und A7 sind digital nutzbar und hinzu kommen die Pins SWC und SWD.

Programmierung mit der Arduino IDE

Boardverwalter hinzufügen

Um Sketches mit der Arduino-IDE für LGT8F328P Nano Boards kompilieren und hochladen zu können, müssen zunächst einige Vorbereitungen getroffen werden. Man fügt unter "Voreinstellungen → Zusätzliche Boardverwalter-URLs" folgende URL hinzu: https://raw.githubusercontent.com/dbuezas/lgt8fx/master/package_lgt8fx_index.json
Falls schon eine andere URL in diesem Feld steht, kann diese mit einem Komma separiert werden:

LGT8F328P Nano Board installieren

Als nächste muss das LGT8F328P Nano Board hinzugefügt werden. Dazu geht man unter "Werkzeuge → Boards → Boardverwalter". Hier sucht man nach "lgt8fx" und installiert dann "LGT8fx Boards von dbuezas".

LGT8F328P Nano Board in der Arduino-IDE installieren
Abb.: LGT8F328P Nano Board in der Arduino-IDE installieren
Auswahl des LGT8FX-Boards im Board-Manager
Abb.: Auswahl des LGT8FX-Boards im Board-Manager
Auswahl des LGT8FX-Boards im Board-Manager
Abb.: Auswahl des LGT8FX-Boards im Board-Manager

Port auswählen

Nun kann der LGT8FX an den USB-Port des PC angesteckt werden und man wählt nun den Port aus im Menu "Werkzeuge → Port:".
Falls unter Windows der COM Port nicht wählbar ist, muss noch zusätzlich die USB to UART Bridge installiert werden.

Sketch kompilieren und hochladen

Als ersten Test habe ich einen etwas modifizierten Blink-Sketch verwendet. Dieser kann -wie vom Arduino gewohnt- kompiliert und hochgeladen werden:

void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
}

void loop()
{
    for (byte i = 0; i < 7; i++) {
        digitalWrite(LED_BUILTIN, !digitalRead(LED_BUILTIN));
        delay(75);
    }
    delay(2000);
}
Wärmesignatur des MiniEVB-Boards
Abb.: Wärmesignatur des MiniEVB-Boards mit minimalem Sketch, d.h. setup() und loop() sind leer.

Analog-Digital Wandler (ADC)

Da der ADC mit einer höheren Auflösung und Referenzspannung umgehen kann, können analoge Signale feiner aufgelöst werden. Der folgende Versuch entspricht vom Aufbau dem aus (LDR) GL55xx (ohne die LED). Es können aber auch statt dem LDR ein Potentiometer, ein Piezo-Wandler o.ä. verwendet werden.

/*
    Parameter:      Voltage reference:
    ----------------------------------------
    DEFAULT         VCC
    EXTERNAL        External Reference (REF)
    INTERNAL1V024   Internal 1.024 volts
    INTERNAL2V048   Internal 2.048 volts
    INTERNAL4V096   Internal 4.096 volts
*/

void setup()
{
    Serial.begin(9600);
    analogReference(INTERNAL4V096);

    // 10, 11 or 12 bit
    analogReadResolution(12);
}

void loop()
{
    int v = analogRead(A0);
    float voltage = v * 4.096 / 4096.0;
    Serial.print("Value:   " + String(v) + "\t\t");
    Serial.println("Voltage: " + String(voltage) + " V");
    delay(50);
}
Ausgabe auf der seriellen Konsole der Arduino-IDE
Abb.: Ausgabe auf der seriellen Konsole der Arduino-IDE
Ausgabe auf dem seriellen Plotter der Arduino-IDE
Abb.: Ausgabe auf dem seriellen Plotter der Arduino-IDE

Digital-Analog Wandler (DAC)

An Pin #4 (D4 / PD4 / DAO) kann ein echtes analoges Signal mit einer Auflösung von 8 bit erzeugt werden:

void setup()
{
    analogReference(DEFAULT);
    pinMode(DAC0, ANALOG);
    analogWrite(DAC0, 69); // 0...255
}

void loop(){}

Watchdog Timer (WDT)

Da der Watchdog etwas anders funktioniert als beim Arduino Nano, sollte statt der Library avr/wdt.h besser die Library dbuezas/WDT verwendet werden.
Im folgenden Sketch muss nur die Zeile wdt_reset() einkommentiert werden, dann läuft der Sketch kontinuierlich.

/*
    Parameter       WDT reset period
    --------------------------------
    WTO_64MS         64 ms
    WTO_128MS       128 ms
    WTO_256MS       256 ms
    WTO_512MS       512 ms
    WTO_1S            1 s
    WTO_2S            2 s
    WTO_4S            4 s
    WTO_8S            8 s
    WTO_16S          16 s
    WTO_32S          32 s
*/

#include "WDT.h"

void setup()
{
    pinMode(LED_BUILTIN, OUTPUT);
    digitalWrite(LED_BUILTIN, LOW);
    Serial.begin(9600);
    Serial.println("Start");
    wdt_enable(WTO_4S);
}

void loop()
{
    Serial.println("Elapsed time: " + String(millis()) + "ms");
    delay(888);
    // wdt_reset();
}
Ausgabe auf der seriellen Konsole der Arduino-IDE
Abb.: Ausgabe auf der seriellen Konsole der Arduino-IDE

Weiterführende Links

zurück