Archiv der Kategorie: Allgemein

Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR – Start vor 20 Jahren

In den 1990er Jahren kamen Microchip’s PIC- und Atmel’s AVR-Mikrocontroller auf den Markt und haben seither eine starke Verbreitung erfahren.

Das Konzept der AVR-Mikrocontroller hatte mich damals begeistert, ganz im Gegenteil zum recht umständlich handhabbaren PIC.

Schon bald standen neben dem Assembler auch erste Hochsprachen für die Programmierung der AVR-Mikrocontroller zur Verfügung. Im 1998 erschienenen AVR RISC Microcontroller Handbook hatte ich dann auch Programmbeispiele in Assembler, C, Pascal und BASIC.

Im Jahr 2000 veröffentlichte Mark Albers, der Entwickler von Bascom-AVR, die erste Version dieser neuen Entwicklungsumgebung. Die aktuelle Version (Stand: März 2023) ist Bascom-AVR 2.0.8.1. Bascom-AVR ist ein Beispiel dafür, dass leistungsfähige Entwicklungsumgebungen auch kostengünstig zur Verfügung gestellt werden können.

Nach den ersten Programmierversuchen mit den erwähnten Sprachen kam Bascom-AVR also zur richtigen Zeit für mich und es sollte eine intensive Beschäftigung damit folgen.

Meine Erfahrungen mit Bascom-AVR mündeten dann im gleichen Jahr in dem Titel Programmieren der AVR RISC Mikrocontroller mit BASCOM-AVR.

In der zweiten, bearbeiteten und erweiterten Auflage stehen dann die megaAVR mit ihren weiterentwickelten Merkmalen im Vordergrund. Aber auch die restlichen Mitglieder der AVR-Familie werden in die Betrachtungen einbezogen.

Im Jahr 2010 erschien schließlich die dritte, nun immerhin 444 Seiten umfassende Auflage, die den Entwicklungen in diesem Sektor Rechnung tragen sollte.

Nach nunmehr 25 Jahren gibt es noch immer Interessenten an Bascom-AVR und diesem Titel. Das freut jeden Autor und ist Grund genug, der Leserschaft Danke für ihr Interesse zu sagen.

Gleichwohl gilt das aber auch Bascom-AVR und seinem Entwickler, Mark Albers, selbst. Ohne diese Entwicklungsumgebung wäre die Bascom-AVR Community und dieser Titel nicht entstanden.


2023-03-27/ck

RAKwireless TFT-LCD-Display

Zur Embedded World stellte RAKwireless neue Wisblock Module vor.
Die bestehenden Anzeigemöglichkeiten werden durch das RAK14014 TFT Display erweitert. Das RAK14014 ist ein 240×320 Pixel Farb-TFT Display mit Touchscreen und Hintergrundbeleuchtung. Das TFT ist verbunden mit einem Schutzglas, das auf die Unify-Gehäuse abgestimmt ist.


2023-03-21/ck

Mut zu MINT

MINT steht als Synonym für Mathematik, Informatik, Naturwissenschaft und Technik. Die MINT-Fachbereiche bilden den zentralen wirtschaftlichen Innovationssektor. Die Digitalisierung ist im Kern die Grundlage für unser aller Zukunft.

In der IoT2-Werkstatt ist kürzlich das folgende Büchlein erschienen, wo die dortigen MINT-Aktivitäten sehr anschaulich beschrieben werden.

Das vorliegende Büchlein zeigt, wie MINT die Resilienz der Gesellschaft stärken kann. Als herausragende Anwendung hat sich dabei die auf dem Octopus-Mikrocontroller basierende IoT-CO2-Ampel erwiesen. Hunderte Schulen in Deutschland haben zu Beginn der Pandemie ihre Ampeln gemeinsam selbst gebaut. In tausenden Klassenräumen helfen sie seither beim nachhaltigen Lüften.

Im Blogbeitrag https://ckblog2016.net/2022/03/10/uberwachung-der-luftqualitat-in-innenraumen-uber-co2-etvoc-eco2-und-iaq/ hatte ich mich mit unterschiedlicher Sensorik zur Erfassung der Luftqualität befasst.

Angesichts weltweit weiter zu erwartender Infektionen gibt es aber erheblichen Nachholbedarf bei der Raumluftqualität. Da ist es schon etwas deutlich Anderes, ob ein gekaufter Sensor an der Wand hängt, oder ob ein selbstgebautes und durchschautes System an die MINT-Hintergründe der Lüftungsregeln erinnert.

Neben der Messung der Raumluftqualität sind im Büchlein Anwendungen zur Messung des Energieverbrauchs, zum Balkonkraftwerk (genehmigungsfreie Stecker-Solaranlage) und zur Messung des Starkregenpegels zu finden.

Das Büchlein kann als PDF von der URL https://www.umwelt-campus.de/fileadmin/Umwelt-Campus/IoT-Werkstatt/octopus/IoT_MINT_Making_Zukunft_Gestalten.pdf gratis heruntergeladen werden. Ich kann Ihnen das nur empfehlen!

Raspberry Pi 4 available?

If you look around for Raspberry Pi at the big online retailers today, the shelves are empty in many cases.

In places where there are few pieces on offer, the prices sometimes make you sit up and take notice.

RAKwireless can help here with its Raspberry Pi 4 kit.

Pi Hats for LoRaWAN, Cellular or PoE are available, as well as a 64 GB SD with Raspbian OS pre-installed.

Schaut man sich heute bei den grossen Online-Handlern nach Raspberry Pi um, dann sind in vielen Fällen die Regale leer.

An Stellen, wo wenige Stücke im Angebot sind, lassen mitunter die Preise aufhorchen.

RAKwireless kann hier mit seinem Raspberry Pi 4 Kit helfen.

Pi Hats für LoRaWAN, Cellular oder PoE sind verfügbar, sowie eine 64 GB SD mit vorinstalliertem Raspbian OS.


2022-11-30/CK

Longan Nano ADC & DAC

Der Longan Nano von Sipeed baut auf dem 32-Bit-RISC-V-Mikrocontroller GD32VF103CBT6 von GigaDevice auf und weist dadurch ein 12-Bit-ADC & DAC-Subsystem auf (2 x ADC, 2 x DAC).

Die Angaben im Datenblatt des GD32VF103CBT6 beschränken sich auf Kennwerte der DACs, die als „(1) Based on characterization, not tested in production“ gekennzeichnet sind. Für den ADC fehlen diese Daten ganz.

SymbolParameterConditionsValue (max.)
DNL(1)Differential non-linearity errorDAC in 12-bit mode±3 LSB
INL(1)Integral non-linearityDAC in 12-bit mode±4 LSB
Offset(1)Offset errorDAC in 12-bit mode±12 LSB
GE(1)Gain errorDAC in 12-bit mode±0.5 %
DAC Charakteristik – Auszug GD32VF103 Datasheet

Grund genug die Charakterestik des ADC & DAC-Subsystem etwas genauer zu betrachten. Die Vorgehensweise ist vergleichbar zum Test beim ESP32 (https://ckblog2016.net/2018/03/03/esp32-adc-dac/).

Vom DAC0 (PA4) wird eine analoge Ausgangsspannung bereitgestellt, die dann vom ADC0 (PA3) gemessen und zur Anzeige gebracht wird. Es genügt also eine Verbindung der beiden Anschlüsse PA3 und PA4 am Longan Nano.

Longan Nano

Mit einfachen Messmittel gestaltet sich eine Aussage über die Genauigkeit des DAC nicht ganz einfach, wie das folgende Bild zeigt.

Longan Nano DAC-Charakteristik

Aufgetragen ist die Abweichung der gemessenen Ausgangsspannung von der Idealkennlinie. Bei einem Spannungswert von 0.8 mV für das LSB ist ein hochauflösendes Digitalvoltmeter erforderlich. Mit einem üblichen Multimeter sind alle Messwerte über 2.2 V wegen zu geringer Auflösung unbrauchbar. Im Bereich unterhalb diese Wertes zeigt die DAC-Charakteristik aber Werte der Ausgangsspannung die allesamt im Bereich von +/- 2 LSB liegen. Die Angaben im Datenblatt können damit (zumindest in diesem Bereich) als messtechnisch bestätigt betrachtet werden.

Durch die Verbindung der beiden Anschlüsse PA3 und PA4 am Longan Nano kann nun der ADC0 die Spannungen des DAC0 erfassen. Das Programm LonganNano_ADC_DAC dient dem Erzeugen der Daten, die die DAC-ADC-Charakterstik beschreiben.

Ausgabe des Programms LonganNano_ADC_DAC

Die Abweichungen vom erwarteten Idealverhalten liegen bei maximal 10 mV.

Das DAC-ADC-Subsystem des Longan Nano (GD32VF103) zeigt damit wesentlich bessere Eigenschaften, als das des ESP32, wodurch bei weniger kritischen Anwendungen auf den Einsatz eines externen ADCs verzichtet werden kann.

Sipeed Longan Nano

Longan Nano von Sipeed ist ein kleines Evaluationboard auf Basis eines 32-Bit-RISC-V-Mikrocontrollers GD32VF103CBT6 von GigaDevice. Für Studenten, Ingenieure, Geeks und Enthusiasten ist das eine Möglichkeit, um auf die neueste Generation von RISC-V-Prozessoren zuzugreifen.

Sipeed Longan Nano wird aktuell nicht durch die Arduino IDE, wohl aber durch PlatformIO unterstützt.

Auf die Installation selbst gehe ich an dieser Stelle nicht ein. Hierzu gibt es einen sehr guten Beitrag von Michel Deslierres.

Der Sipeed Longan Nano bietet zwei Möglichkeiten für den Programm-Upload. Auf der rechten Seite befindet sich ein USB-C-Anschluss über den kann mit dem Tool DFU-Util das compilierte Programm zum Controller geladen werden. Die andere Möglichkeit ist die an der linken Seite herausgeführte serielle Schnittstelle (UART0).

Ich habe diese Möglichkeit verwendet, da ich die seriellen Ausgaben über dieses Port vorgenommen habe. Wie im Bild unten gezeigt bedarf es eines USB-TTL-Konverters, der Tx und Rx sowie 3.3 V und GND zur Verfügung stellt.

Ich habe drei Programme ausprobiert, die unter https://github.com/ckuehnel/GD32 zum Download zur Verfügung stehen.

Das Programm LonganNano_HelloWorld dient dem Test der Inbetriebnahme von PlatformIO IDE und erstem Programm. LonganNano_LCD zeigt die Ausgaben auf dem Onboard-LCD und LonganNano_Dhrystone liefert die Ergebnisse des Dgrystone-Benchmarks.

Serielle Kommunikation & Programm-Upload
Anzeige des Sipeed-Logos
Serielle Ausgabe Programm LonganNano_HelloWorld

Serielle Ausgaben des Dhrystone Benchmarks

Mit einem VAX MIPS Rating von 91 liegt der hier eingesetzte RISC-V Controller deutlich oberhalb der Cortex-M3 von ARM. Vergleichen Sie die Benchmark-Resultate für verschiedene Mikrocontroller von 8-Bit bis 64-Bit unter https://ckarduino.wordpress.com/benchmarks/.

M5Stack Atom Matrix & Atom Lite

ATOM Matrix und ATOM Lite sind ESP32-Entwicklungsboards mit einer Größe von nur 24 * 24 mm. Zum Einsatz kommt ein ESP32-PICO-Chip, der WiFi und Bluetooth für die Kommunikation bietet und über 4 MB integrierten SPI-Flash-Speicher verfügt. Für die IO-Erweiterung steht ein Grove-Port zur Verfügung. Über 6 GPIOs können beide Boards mit externen Sensoren und Aktoren verbunden werden. Die integrierte Typ-C-USB-Schnittstelle ermöglicht das schnelle Hochladen und Ausführen von Programmen

ATOM-Lite bietet eine Infrarot-LED, eine RGB-LED, Tasten und eine PH2.0-Schnittstelle.

ATOM-Matrix verfügt über einen integrierten IMU-Sensor (MPU6886) und eine 5 * 5 RGB-LED-Matrix, die sich sehr gut zu farbigen Signalisationszwecken eignet.

Signalisation über RGB-LED-Matrix

Eine Arduino Library ist unter https://github.com/m5stack/M5Atom zu finden.

Open-Source Real-Time OS für das IoT

Steht man heute vor der Aufgabe, ein neues Embedded System zu entwickeln, dann wird in den Anforderungen kaum die Anforderung nach einer Netzwerkverbindung fehlen. Dabei spielt es in erster Linie keine Rolle, ob es sich um eine drahtlose oder drahtgebundene Kommunikation handelt, ob die Kommunikation durch die Anwendung genutzt wird oder einen Remote Access für Konfiguration und Service darstellt. Möglicherweise lassen sich diese Dinge auch kaum vernünftig trennen.

Ein Embedded System, welches derartige Anforderungen erfüllen muss, ist mit vernünftigem Entwicklungsaufwand nicht ohne Betriebssystem umsetzbar. Die Suche nach einem für die betreffende Aufgabenstellung geeigneten Betriebssystem umfasst, viele und sehr unterschiedliche Aspekte.

Betrachtet man die Langlebigkeit von Investitionsgütern, dann erscheint schon aus strategischen Gründen der Einsatz eines OS-RTOS zwingend. Einer ersatzlosen Abkündigung eines etablierten, proprietären RTOS kann auf diese Weise der Schrecken genommen werden. In einer gewissen Klasse von Embedded Systems bis hin zu Supercomputern gibt es mit Linux ein ausgezeichnetes Beispiel für ein solches Open Source Betriebssystem.

Damit ist Linux heute ein mächtiges Betriebssystem, welches aber auch gewisser Ressourcen bedarf und für Systeme mit kleinem Footprint, geringen Ressourcen und möglichst für Batteriebetrieb angepasstem Stromverbrauch weniger geeignet ist.

Analysiert man aus Github Daten für Code Frequency, Commits und Contributions für Contiki, RIOT und Zephyr, dann kann deutlich eine größere Aktivität der Community beim Zephyr OS gegenüber den anderen beiden RTOS verzeichnet werden. Natürlich ist das Zephyr OS auch ein „junges“ RTOS, was nicht in allen Bereichen bereits ausgereift sein kann.

Das Zephyr Project (https://www.zephyrproject.org/what-is-zephyr) ist ein von der Linux Foundation gehostetes Collaboration-Projekt, eine Open Source Zusammenarbeit, die führende Kräfte aus der gesamten Branche zusammenbringt, um mit dem Zephyr OS ein skalierbares Echtzeit-Betriebssystem (RTOS) für mehrere Architekturen ressourcenbeschränkter Geräte zu entwickeln.

Der in der Zeitschrift Design & Elektronik erschienen Beitrag mit dem o.a. Titel (Design & Elektronik 3/2019, S. 42-48  ) soll Einblicke in das Zephyr OS und die Zephyr Entwicklungsumgebung geben. An Hand einiger einfacher und nachvollziehbarer Programmbeispiele wird die Vorgehensweise bei der Programmierung von Anwendungen und der Build Prozess dokumentiert. Die Programmbeispiele selbst sowie dazugehörige Screenshots sind auf Github unter https://github.com/ckuehnel/zephyrtests abgelegt.

Das Zephyr OS ist ein Open Source RTOS, welches durch das von der Linux Foundation gehostete Zephyr Project und die Nähe zu Linux das Potential hat, bei Embedded Systems mit kleinem Footprint in Zukunft vergleichbar erfolgreich zu werden, wie es Linux bei Systemen mit mehr Performance schon länger ist. Der Erfolg wird sicher stark durch die Community geprägt. Ausdauer und Kraft sind der Community zu wünschen. Die zentrale Mailinglist des Zephyr Projects [ https://lists.zephyrproject.org/g/main ] gibt aktuell Auskunft über die laufenden Aktivitäten.