HR20/Master
Inhaltsverzeichnis
Vorbetrachtung
Die originale Master-Software baut auf dem Atmega32a sowie dem RFM12 Funkmodul auf. Da wir jedoch einen anderen µC einsetzen, muss die Software entsprechend portiert werden. Desweiteren nutzt die original-Software den Takt des Funkmodules (@10 MHz), da wir bei unserem Breakout Board an diesem Punkt nichts ändern können, können wir dies so nicht umsetzen.
Hardware
Für den bei uns zum Einsatz kommenden Master wird folgende Hardware verwendet:
- Atmega32u4 auf einem Breakout Board mit MiniUSB-Anschluss @16 MHz (http://ladyada.net/products/atmega32u4breakout/)
- RFM12B Funkmodul (868 MHz)
- da das Breakout Board den µC standardmäßig mit 5 V versorgt, der Funkchip aber nur mit 3,3V betrieben werden darf wurde der µC mit einem Festspannungsregler ebenfalls an die 3,3 V Spannung mit angeschlossen und die 5V Versorgung unterbrochen
Flash-Vorgang
Bei dem µC Atmega32u4 ist bereits ein Bootloader vorinstalliert. Folgendes wird zum Bespielen benötigt (unter Ubuntu)
- MiniUSB-Kabel zum Anschluss des Controllers an den PC
- avr-libc
- avrdude
Zum Flashen folgenden Befehl ausführen
avrdude -c avr109 -p m32u4 -P /dev/ttyACM0 -e -U flash:w:main.hex
Portierung
Bei der Portierung gab es primär 2 Aspekte die betrachtet werden mussten:
- Umstellung der Kommunikation mit dem PC von seriell auf USB
- Anpassung des Quellcodes damit beispielsweise Timer und Interrupts funktionsfähig bleiben
Kommunikation über USB-Schnittstelle
Für die Kommunikation nutzen wir das LUFA-USB-Framework. Der Controller erscheint am PC als virtuelles serielles Interface (Ubuntu: /dev/ttyACMX).
Auf folgender Seite sind Methoden definiert, die für die Kommunikation hierfür genutzt werden http://www.fourwalledcubicle.com/files/LUFA/Doc/091122/html/a00237.html (CDC-Device)
Anpassung des restlichen Quellcodes
Wie eingangs schon beschrieben, arbeitet der originale Master mit 10 MHz, unserer jedoch mit 16 MHz. Diesen Aspekt müssen wir besonders bei der Verwendung des Timers beachten, der für RTC (Real-Time-Clock) Verwendung findet. Desweiteren müssen einige Registernamen angepasst werden, die es bei dem atmega32u4 nicht gibt. Speziell sind das Register für ext. Interrupt und Timer.
Inbetriebnahme
Da wir unseren Master über eine selbst geschriebene Software steuern (OpenHR20ware). Mussten auch mühselig die Befehle, die man an den Master senden kann aus dem Quellcode extrahiert werden, da dies nur schlecht bis gar nicht dokumentiert ist. Beispielsweise erwartet der Master, dass man ihm jede Minute die aktuelle Uhrzeit vom PC sendet.