[Marathon Electro LLC]


Alpine skiing is a descent along winding tracks with natural or slightly corrected relief. Sportsmans / participants in all disciplines are required to quickly and accurately overcome a specially prepared snow distance, passing through all spaced along the distance gates marked by flags and poles as fast as possible.


The whole system's architecture can represented as shown below:

Starting device is supposed to be installed on the top of the mountain exactly in a place where participants do their start. The function list it performs includes: 

  • to fix every participant's start event, i.e. to fix the moment when that event has occured, with high precision;
  • to exchange data with head-unit. In particular, to send every start event's related information to head-unit as soon as it has requested;
  • to perform on-board time synchronization with finishing-device on the head-unit request.

Finishing device is supposed to be installed at the foot of the slope right in a place wherere sportsmans finish. Its functions are similar to starting device's one and include:

  • to fix every sportman's finish event with high precision;
  • to exchange data with head-unit. In particular, to send every finish event's related information to head-unit as soon as it has requested;
  • to perform on-board time synchronization with starting-device on the head-unit request.

Scoreboard is supposed to be mounted somewhere in a well-viewed place. It displays the best already fixed result and on-track participants's times.

The starting-device, finishing-device and also scoreboard behave each one like a typical MODBUS/RTU slave device. Each slave device can be fully (re-)configured in the way the user wants from the MODBUS-master device. Data exchange between master and any of slave devices in the network is performed over RS-485 cable line with using of radio modems at disting segments.
The head-unit along with data exchanging over MODBUS also performs the transmission of already fixed results onto high-level informational systems
This transmission is performed via builtin USB2.0 FS interface using the CDC (virtual serial port) profile. And as soon as the next result (either finishing or coming off) becomes fixed it may become printed on a thermal printer Citizen CMP20 if it's required. Each printed line contains the sportman's unique ID and his/her result.
Each fixed result is stored in internal non-volatile EEPROM memory and can be accessed by judges in any desirable time.
The long tasklist that is supposed to be performed by the head-unit simultaneously became strong reason to use a RTOS. The overall functionality was splitted into logically independent tasks in terms of FreeRTOS. This allowed to make debugging much easier and to decrease the time required for developing and testing the whole system. Concluding, the whole tasklist that is supposed to be handled by head-unit is listed below:

  • matrix (7x4) keyboard's scan and event generation on every button press;
  • displaying current system status and workmode on a builtin OLED-display WEG010032;
  • time synchronization on both start and finish devices;
  • implementing each mode specific ("competition" and "training") behaviour scenarios;
  • polling of starting-device with implemented protection against false-starts and with subsequent sportsman's ID input;
  • polling of finishing-device with subsequent finished sportsman's ID input;
  • fixation of each sportsman's elimination according to head-unit operator's request;
  • displaying of all the actual information on a scoreboard in realtime;
  • sending of all fixed events and results with high-level system via USB interface;
  • printing of each result including sportsman's eliminations as soon as it becomes fixed;
  • saving of each fixed result in internal EEPROM memory;
  • watching of previously fixed results that are stored in EEPROM memory;

The firmware development was performed with extensive usage of the following tools:

  • IDE: Eclipse;
  • Toolchain: GCC from Mentor Graphics;
  • Version control system: GIT;
  • Project dependencies:
    • STM32F4xx DSP and standard peripherals library;
    • STM32F4xx USB Device library;
    • STM32F4xx USB OTG Driver;
    • FreeRTOS realtime operating system;


Since the spring of 2014 when the application's active development phase had been finished the overall system became mature and stable that periodically gets firmware updates with new features and old bug's fixes.

© "Ctrl-V" 2012 - 2020