Historical project documentation. Content is maintained in GitLab.

NGOS-0.51

Release Notes

NGOS-0.51

LED blinking now is flight state dependant. It blinks slow in LANDED
phase, it blinks faster in the SPINUP phase and it blinks really fast
in the FLIGHT phase. LED will cycle trough on startup to assure all
LEDs are working fine. Added support for duo-LEDs.

Cleanup in i2c-actor.c, removed dead code.

Implemented new command “sound [on|off|invert]” to make sure the user can control the sound output with inverted and not inverted beepers
even different as expected for that version.

Implemented a new task based I2C state machine for the I2C0 sensor bus. It allows arbitrary devices to use the bus simultaniously. In fact it
implements two stacked state machines similar to our I2C actor. At first only a I2C bus scan FSM is implemented. More FSM will follow.

Michael activated the I2C slave code in the rc-controller firmware. We are able to see the rc-controller using the new bus scan FSM actiavted with the “scan i2c” command.

Autotoolized the rc-controller source code. It now contains a clean GNU configure. The autotool suite generates elf, hex and eep output files.
Added new Makefile targets “rc-flash-dragon”, “rc-read-flash-dragon”
and “rc-flash-fuses”.

Added Atmel 644p to the device table. Implemented Atmel probing in i2c0-sensor.c. Implemented hacky solution for MAX probing: if one of the ADX/MLX samples look ok and it’s associated sensor gets marked as detected the MAX gets marked as well, since without it the sample never would have been possible.

Implemented new axis de-coupling code without poles thanks to Tensor! We tested the new axis de-coupling code and it works perfectly! Where we had an error of 90 degrees before, we suddenly have none! Please note that we implemented it using real exact sin/cos tables.

Implemented Axis.decoupling controller configuration variable which enables or disables axis decoupling. Added a global configuration
variable HW.use.sound with possible values normal|off|inverted.
The command “set defaults” will initialize the variable according to the FC HW ID.

Changed ACC_MEANCNT from 3 to 100 in ctrl-amir.c. We now calculate the ACC measurement mean over 100 closed-loop cycles and we do sample only one ACC sample per cycle. This results in smother ACC angles.

Fixed “uavpset ctrl” which crashed when given wrong arguments.

Implemented a new UNIX library libng.a and a command line tool called “ngctrl” which uses the library to implement a UNIX command line client to access the NG, execute commands and dump debug data to a file or to the screen. The new tool supports the arguments –show-version, –log, –log-to-file <file>, –execute <cmd> and –help as well as short one key arguments.

Implemented a new HAL (hardware abstraction layer). It consists of an output HAL which allows the controllers to work without knowledge of the pysical motor configuration. The configured HAL defines the number of actors used for that HAL. The HAL gets configured with the global configuration parameter HW.HAL. Currently the HALs ’none’, ‘quadcopter’ and ‘quadcopterX’ are implemented. Oktokopter HALs and Heli HALs will follow. The new command ’list hal’ shows the available HALs and their description. After configuring a certain HAL it can be inspected using the command ‘show hal’. This command shows the description and help text of the corresponding HAL, shows the needed actor number and describes the motor number and its pysical location. The i2c-actor was rewritten to be able to supply an arbitrary number of actors defined by the configured HAL.

Axel changed the timer tick behaviour: we now switch to system mode after a timer IRQ, making the controller code interruptable. This is the proper apporach, since it makes it possible for all communication busses to work in parallel to the controller. Removed obsolete swi.[sh] (this was experimental for newlib angel swi stuff). Implemented SWI system calls. These are necessary if the user task wants to modify the CPSR register, e.g. for disabling interrupts. Adapted conf_store() to use a system call for flash writing. Reduced size of the supervisor mode stack. This gives us significantly more free memory for the user mode tasks.

Bugfix: corrected number of entries needed when CONF_HOOVER isset. Bugfix: clear match 0 interrupt at the top of the ISR, which now enables the interrupts before the dispatching is being done. Bugfix: more boundary checks.

Axel implemented an ass-kicking exception handling: All registers are being saved into a reset-resistant memory area on abort interrupts (prefetch abort, data abort, undefined instruction). After this, the board is being soft-resetted, allowing high level terminal commands like abort_print_saved_regs() to be used.

Amir fixed HW.acc.horizontal: it now possible to change the acc orientation without having to reset the processor. the store acc correction gets zeroed when the orientation changes to make sure no strange correction takes place and a notice gets issued to the controlling tty.

Implemented –with-openocd-amontec-bin besides –with-openocd-amontec-exe and –with-openocd-olimex-bin besides –with-openocd-olimex-exe. This allows us to generate Windows double click flash executables for JTAG under Linux.