Firmware    

(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 QuellcodeWeitere EntwicklungBootloaderDownload 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!