Samstag, 30. November 2013

Unit Tests für Mikrocontroller [Installation und Konfiguration für AVR]

Unit Tests sind im PC Bereich mittlerweile Standard. Allerdings ist es schwierig sie auch für Software im Bereich der Mikrocontroller zu verwenden. Die wenigen Ressourcen, die der Mikrocontroller zur Verfügung stellt sollten idealerweise für die Software verwendet werden, die später dann auf dem System laufen soll, denn alles andere wäre Geldverschwendung. Es gibt dennoch die Bemühungen mit so wenig Wasserkopf wie möglich Unit Tests auch auf Mikrocontrollern zu implementieren.
Ich habe das in meinen Projekten bisher so gelöst, dass ich zusätzlich zum normalen Programmcode Testfunktionen implementiert habe. Alles was nur zu Testzwecken im Code eingefügt wurde habe ich mit Präprozessor-Anweisungen eingekapselt, sodass sie bei einem Release Built nicht beachtet wurden. Dadurch habe ich während der Entwicklungszeit die Testfunktionen zur Verfügung und später im 'fertigen' Projekt wurden die Testfunktionen nicht mehr übersetzt. Das führte neben kleinerem Programmcode auch zu schnellerer Abarbeitung von z.B. Interrupt Service Funktionen im fertigen Projekt. In dieser Artikelserie werde ich die Verwendung von µCUnit anhand des ASURO Projekts erklären.

Montag, 25. November 2013

GPIOs der Fonera

Heute habe ich ein wenig mit den GPIOs der Fonera gespielt. Um später das SoC der Fonera zum Steueren von anderen Hardwareprojekten zu verwenden, habe ich die vier am einfachsten zu erreichenden GPIO Kontakte mit einer Leitung verbunden. Dabei habe ich gleich noch die Kondensatoren nach Masse entfernt. Die bildeten mit dem Widerstand zusammen einen Tiefpass am Eingang und verhindern somit die Signalintegrität bei schnellen Schaltvorgängen.

Fonera mit LED an GPIO Ports

Die 8 IO Ports der Fonera sind teilweise schon von Hardware belegt, es bleiben jedoch fünf freie Ports übrig, die beliebig verwendet werden können. Vier dieser Kontakte sind auf den Steckplatz für SW1 geführt. Für die kleinen Experimente habe ich auch nur diese vier verbunden. Wenn komplexere Aufgaben gesteuert werden sollen, kann auch der serielle Port  der Fonera verwendet werden um mit einer Mikrocontroller Schaltung zu kommunizieren.

GPIO Description
0    TP3
1    pin 5 of SW1
2    WLAN LED
3    pin 1 of SW1
4    pin 2 of SW1
5    RESET (!)
6    RESET button
7    pin 6 of SW1

Zum Steuern der GPIOs kann das Kommandozeilentool gpioctl verwendet werden. Dieses ist standardmäßig bei der openWRT Installation mit installiert worden und kann zum Beispiel über die SSH Verbindung ausgeführt werden.

gpioctl dirout 3
gpioctl set 3

Dadurch wird der Port 3 als Ausgang definiert und eingeschaltet. Der erste Pin von SW1 ist jetzt auf +3,3V. Nachdem die Funktion der GPIOs funktioniert, wenden wir uns im nächsten Artikel der Software zu und schauen, wie die Fonera dazu gebracht werden kann als Gateway für eben diese Schaltung zu agieren.

Donnerstag, 21. November 2013

Handy -> Bluetooth -> RGB-LED [Teil 2: Schaltung]

Nachdem im letzten Artikel das Protokoll für die Übertragung der Farbwerte definiert wurde, erstellen wir jetzt die Hardware. Da es sich hier um eine nicht sonderlich komplexe Mikrocontroller Lösung handelt, können wir die erste Version der Schaltung auf einem Steckbrett aufbauen und somit evaluieren. Um die Funktion vollständig zu testen, werden die drei Module (Controller, Bluetooth-Modul und RGB-LED) auf dem Steckbrett miteinander verbunden. 
Schaltplan des ATtiny2313A und Bluetooth-Modul mit RGB-LED
Schaltplan der LED Steuerung

Der Schaltplan der Evaluationsschaltung zeigt, wie die einzelnen Komponenten verbunden werden. Wenn die Hardware aufgebaut ist, kann mit der Erstellung der Firmware für die Schaltung begonnen werden. Eventuelle Änderungen der Schaltung können auf dem Steckbrett sehr einfach durchgeführt werden. 
Wie im Schaltplan zu sehen benötigt der Controller einen Quarz X1. Dieser stellt sicher, dass der Takt, der auch für das Timing der UART-Schnittstelle zuständig ist, stabil genug ist. Um den Controller zu programmieren benötigt man den ISP-Connector CON1. Sollte die Schaltung häufiger aufgebaut werden, kann dieser Stecker eventuell weggelassen und ein programmierter Controller direkt verbaut werden. Die TX und RX Leitungen des Controllers werden an die Komplementären Eingänge des Bluetooth Moduls geführt. Die Unterbrechungen der Leitung werden deshalb benötigt, da der Controller mit +5V programmiert wird, das Bluetooth Modul aber mit 3,3V betrieben wird. So kann das Modul beim Programmieren vom Controller getrennt werden. Der Jumper JP1 dient ebenfalls zur Auswahl der 3,3V beim Betrieb und 5V zur Programmierung. Die drei Pins für die Steuerung der einzelnen Farben in der LED sind willkürlich gewählt und können bei bedarf (Layouten einer Platine) noch geändert werden. Der nächste Schritt wird nun die Programmierung des Controllers sein.