|
(Aktuelle Version 1.17)
Wir wollen einen robusten, einfach zu bedienden Computer mit
den Funktionen, die man bei anderen Herstellern vergeblich sucht
-- ohne dass dabei Übersichtlichkeit und Zuverlässigkeit verloren gehen.
Wir bieten den Computer zudem als Experimentalplattform,
auf der auch neue Ansätze zur Dekompressionberechnung ausprobiert werden
können, ohne dass zunächst die aufwändige Hardware entwickelt werden
muss.
Allgemein • Software und Quellcode • Weitere Entwicklung • Bootloader • Download Firmware
Allgemein:
Zunächst ein Hinweis: Die Programmierung von einem
Mikrocontroller (wie er im OSTC eingesetzt wird) ist mit der Programmierung
z.B. eines Windows-Programms nicht vergleichbar. Die verfügbaren Ressourcen
sind begrenzt und müssen bei jeder Erweiterung im Auge behalten werden.
Auch wenn einzelne Programmteile natürlich unanhängig entwickelt
werden können, bedeutet das nicht, dass man ohne weiteres "Plugins"
im OSTC laden oder installieren kann. Die Firmware als Ganzes kann
im OSTC aktualisiert werden, nicht jedoch ein einzelnes Modul. Aktualisierte
Module werden also zusammen mit den anderen Programmteilen neu kompiliert
und dann als komplette Firmware in den OSTC überspielt.
Die Programmierung des OSTC erfordert eine Einarbeitungphase.
Erfahrungen mit Mikrocontrollern -- im Idealfall mit welchen der Fa.
Microchip -- sind empfehlenswert.
Software und Quellcode:
Der Quellcode wird von uns vollständig offengelegt,
bis auf den Bootloaderteil ist der gesamte Controller benutzbar. Es
gibt also kein Betriebssystem, in dem der Nutzer eigene Programme
ausführen kann, sondern es besteht vollständiger Zugriff auf sämtliche
Befehle/Funktionen, die im Datenblatt des Controllers beschrieben
sind.
Der RAM wird nicht verwaltet, das heißt, dass eine
fehlerhafte Routine z.B. durchaus Auswirkungen auf andere Funktionen
haben kann. Ein intensiver Test (an dem jeder interessierte
Nutzer teilnehmen kann) steht also jeder "stable" Version
bevor. Der Controller des OSTC führt dabei sowohl niedere Hardwarefunktionen
(wie das Auslesen des Drucksensors oder das Aktualisieren der Echtzeituhr)
als auch höhere Softwarefunktionen (wie die Dekompressionsberechnung)
aus. Dafür werden je nach Priorität Interrupts und "Scheduling" verwendet.
Unsere momentane Software, die die Funktionen eines Mischgascomputers
erfüllt, belegt weniger als 30% des verfügbaren Programmspeichers,
weniger als 30% des verfügbaren RAM und weniger als 50% der verfügbaren
Rechenleistung. So haben wir ausreichend Reserven für Ergänzungen.
Die hardwarenahen Funktionen und Module sind in
Assembler, die Dekompressionsberechnung
ist zur besseren Lesbarkeit in C programmiert. Das
momentan verwendete Rechenmodell ist das Bühlmann ZH-L 16.
Auch bei in C geschriebenen Erweiterungen muss der Entwickler mit
der Datenstruktur und den Eigenheiten des Prozessors vertraut sein;
eine entsprechende Einarbeitung ist unumgänglich. Wir werden bei allen
Fragen so behilflich wie möglich sein und hoffen, dass andere Nutzer
sich in den Quellcode einarbeiten und helfen dieses Projekt weiterzuentwickeln.
Weitere Entwicklung:
Open Source bedeutet nicht, das jeder dieses Gerät programmieren
muss, sondern das er es kann. Von
Open Source Software profitieren selbstverständlich auch diejenigen
User, die nicht selber programmieren, sondern Fehler melden und Hinweise
geben. (Nicht zuletzt gibt es erst wenige Tauchcomputer auf
dem Markt, bei denen ein Firmwareupdate überhaupt möglich und vorgesehen
ist.)
Darüber hinaus gibt es die Möglichkeit, innerhalb des OSTC
eigene Hardware zu installieren. Rechts neben dem Display
ist auf der Leiterplatte ein Steckplatz mit einer Schnittstelle zum
Controller vorhanden. Ideen, diesen zu nutzen, gibt es schon einige
(eine drahtlose Flaschendrucküberwachung wurde uns gegenüber immer
wieder als Wunsch geäußert, der Platz für die nötige Antenne wurde
beim Gehäusedesign daher von Anfang an berücksichtigt), einen Zeitplan
für Erweiterungsmodule gibt es aber noch nicht.
Bootloader:
Anleitung:
- Nach dem Entpacken den Bootloader mit Aufruf von tinybldWin.exe
starten
- Entsprechenden COM Port auswählen
- Zum testen der Kommunikation die Schaltfläche "CheckPIC" wählen
und OSTC mittels "Reset"-Taste am Interface resetten
- Aktuelle HEX Datei (Firmwaredatei) auswählen
- Schaltfläche "Write Flash" wählen und OSTC mittels "Reset"-Taste
am Interface resetten
- Während die Firmware aktualisiert wird am OSTC keine Tasten betätigen
und den Vorgang abwarten
- Wurde die Firmware erfolgreich aufgespielt, startet der OSTC automatisch
neu, die Uhrzeit muss neu gestellt werden
Den Bootloader können Sie auf unserer Download-Seite herunterladen.
Firmware:
Die Firmware unterliegt der GNU
General Public License.
Folgende Archive stehen momentan zum Download bereit:
Changelog:
New in 1.17:
- Added underwater menu "Bailout in ppO2 mode
- five bailout gases can be selected underwater
- Added Apnoe mode ("Setup" -> "Decotype")
- fixed bug in NDL calculations in depth < 7m
- fixed display bug in Gauge mode
- Added CF30: Apnoe mode timeout in minutes
New in 1.16:
- Fixed Bug when CF2 was set to 255
- Added background debugger: When the unit is reset from Divemode
using the USB interface, some important informations are displayed.
With this informations we can reproduce and fix potential problems and
bugs.
New in 1.15:
- added custom text in Surfacemode
- changed Surfacemode layout
- entire profile memory can be deleted from Logbook menu
- several calculations are done faster
- fixed bug with external I2C bus devices
- changed I2C timeout routine
- fixed bug with N2 saturation display during Divemode
- fixed bug with Nofly time display
- fixed Nofly time overflow
- fixed bug in Logbook detail view (Desaturation time)
- fixed bug with gauge mode display
- fixed bug with serial number display
New in 1.14:
BETA Version - Do NOT use for diving!
- ppO2 does not overwrite "Menu?" in Divemode
- Added Debugmode
New in 1.13:
BETA Version - Do NOT use for diving!
- Desaturation and NoFly Time calculations adjusted
- Fixed Display Bug in NDL mode
- Fixed Display Bug for ppO2 display
- ppO2 is Displayed in Surfacemode
- Added Submenu in Logbook Detailview
- Dives can be deleted from the Logbook
- small cosmetic changes in the divemode layout
- Fixed bug in deco forecast (Decogas)
New in 1.12:
BETA Version - Do NOT use for diving!
- Added Battery Information Menu
- Battery LED blinks two times when battery is >90%
- Start Gas is Displayed in Surfacemode
- Removed Gradient Graph in Surfacemode
- Renamed underwater Menu "Set Gas" to "Gaslist"
(Select gas from the Gaslist)
- Added Underwater Menu "Set Gas" (Configure a Gas manually
during the dive)
- Added Event "Manual Gas change" in profile routine
- Fixed bug in deco forecast
New in 1.11:
BETA Version - Do NOT use for diving!
Added CF28: Offset Logbook dive counter (Detailed view only). When <>
0 this CF is increased with every dive!
Added CF29: Last decodepth in m, will display a warning if >6
New in 1.10:
BETA Version - Do NOT use for diving!
- Expanded GAS Setup
Gases can be (de)activated for more precise decompression forecast
Change depth can be specified
- Fixed Bug with Month length
- Added CNS calculation
Added CF27: Threshold in % to show CNS value
- Added CNS decay
- Fixed Profile-Bug
New 1.08:
- Fixed short sampling rates
New in 1.06:
BETA Version - Do NOT use for diving!
- Fixed gas table in profile header
- First Gas and Decotype are resetted after update
- unused entries in the Setupmenu are ignored
- increased debounce delay in Setupmenu
New in 1.05:
BETA Version - Do NOT use for diving!
- Added Gauge mode
- Divetime is displayed in mins:secs in gauge mode
New in 1.04:
BETA Version - Do NOT use for diving!
- Updated internal Logbook for new profile format
- fixed bug with Events in new profile format
New in 1.03:
BETA Version - Do NOT use for diving!
- He ratio now rolls to zero in "Gas Setup" when O2+He>100%
- Added CF20-CF26 (New Profile format)
CF20:sampling rate in seconds
CF21:sampling_divisor_temperature
CF22:sampling_divisor_decodata
CF23:sampling_divisor_tankdata
CF24:sampling_divisor_ppo2_sensors
CF25:sampling_divisor_nuy1 (Not used yet)
CF26:sampling_divisor_nuy2 (Not used yet)
- First try with new profile format 0x20
17.01.08: Release der 1.02:
New in 1.02:
- increased debounce delay in Menu and Logbook
- increased timeout for UART receive
- Fixed bug with temperature compensation
15.01.08: Release der 1.01:
New in 1.01:
- Fixed bug with negative and very low temperatures
- Fixed bug when timeout was set to Zero
- Fixed bug with switches in Simulatormode
- Changed ppO2 low warning level to 0.19Bar as default
- Tissue saturation graphs can be displayed in divemode
- added new Interface command "g" (sends internal EEPROM via
UART)
- added new Interface command "h" (resets decompression data)
- a firmware update does now reset custom functions automatically, gases
are not overwritten
- NoFly time shows 0:00 instead of 00:00 when zero
10.01.08: Die aktuellste Version ist die stabile Version 1.0. Die Beta-Version
0.23 hat bekannte Bugs -- nicht zum Tauchen benutzen!
|