Micro:bit und Mbed      

           
Elektronik-Labor   Projekte   Microbit 

 

https://www.mbed.com/en/

Die gesamte Micro:Bit Programmierung basiert auf Mbed. Wenn man ein Programm mit Microsoft Block übersetzt, wird es zunächst in einen C++-Quelltext umgewandelt und zu Mbed geschickt. Von dort kommt dann das fertige Hex-File. Man kann aber auch direkt auf die Mbed-Seite gehen und das System in C++ programmieren. In Mbed ist Microbit nur eine von vielen Platinen.  Man kann sie behandeln wie jedes andere ARM-System.



In einem ersten Versuch wurde die Platine mit mbed.h verwendet, also ganz bewusst noch nicht mit MicroBit.h. Die Frage war, wie schnell kann man einen Port ansteuern. Bei den Versuchen zeigte sich, dass der Controller selbst einen Port mit den Anschlüssen P0:0 bis P0_31 hat, die man auch p0...p31 nennen kann. Die Nummerierung entspricht nicht den Microbit-Anschlüssen, sondern ist dort umsortiert. Deshalb musste erstmal herausgefunden werden, welche Ports hinter welchen Anschlüssen liegen. Für die drei großen Anschlüsse 0, 1 und 2 sind dies die Ports p3, p2 und p1. Das Beispiel setzt alle drei als Ausgänge und bildet eine schnelle Schleife mit Pegelwechseln am Anschluss 1 (out1).  Das Ergebnis ist erfreulich: Eine Portausgabe braucht nur eine Mikrosekunde. Es entsteht also ein Rechteck mit ca. 500 kHz.



In einem zweiten Versuch sollten der AD-Wandler und die serielle Schnittstelle  getestet werden. Auch hier wieder müssen die Anschlüsse zu den Ports sortiert werden. Der AD-Wandler liefert in Mbed immer eine Realzahl zwischen 0 und 1.



Die schon verwendete Mbed-Schnittstelle funktioniert als virtuelle COM mit 9600 Baud. Im Terminal kann die Spannung am Pin 1 angezeigt werden. Gemessen werden ca. 0,228 * 3,3 V = 0,75 V an einem offenen Eingang.



Wenn man den Eingang mit dem Oszi mit einer 1:10 Tastspitze mit 10M oder mit dem Digitalvoltmeter mit ebenfalls 10 M untersucht, liegt da eine Spannung von 1,6 V. Daraus lässt sich schließen, dass Pullups mit 10 M an diesen Ports liegen. Und tatsächlich kann man auch Widerstände an den Anschlüssen erkennen. Sie wurden vermutlich eingebaut, damit man die Ports mit einfachen digitalen Abfragen für  Berührungssensoren verwenden kann. Während die Spannung im Mittel bei 1,6 V liegt, bricht sie im Moment einer Messung deutlich sichtbar bis auf etwa 0,75 V ein. Da hilft ein Kondensator mit 100 nF gegen GND. Nun wird tatsächlich fast die volle Spannung gemessen. Bei einer direkten Verbindung zum 3V-Pin misst man übrigens genau 1.



Mit einer kleinen Änderung werden die Messwerte in Millivolt umgerechnet. Der Messbereich reicht bis 3300 mV.



Nun wurde ein Elko mit 3,3 µF gegen GND angeschlossen und zum Anfang entladen. Er lädt sich dann langsam über den Pullup von 10 M auf. Für die Darstellung der Messdaten wurde der serielle Plotter aus der neuesten Arduino-IDE verwendet. Man sieht die typische Ladekurve.



Auf der Suche nach einem Schaltplan des Micro:Bit bin ich auf die Nachricht gestoßen, dass BBC ihn nicht veröffentlichen will. Deshalb muss man selbst herausbekommen, wo welcher Port liegt. Damit es nicht zu zeitaufwendig wird habe ich mir ein Programm geschrieben, das immer gleich drei Ports testet, in diesem Fall p4, p5 und p6. Der erste erzeugt Doppelimpulse, der zweite Dreifachimpulse und der letzte vier Impulse in schneller Folge. Mit dem Oszilloskop sind die Signale schnell zu finden. Und so kann man leicht herausbekommen, an welchem Anschluss welcher Port liegt.





Elektronik-Labor   Projekte   Microbit