Go to file
2019-05-28 09:49:17 +00:00
.cargo cargo: gdb-multicarch 2019-03-20 09:48:44 +00:00
doc cargo: tweak 2019-03-29 19:34:31 +01:00
nix add Nix build files 2019-05-15 10:36:34 +08:00
src iir: remove old setting 2019-05-28 09:49:17 +00:00
.gitignore start 2019-03-18 12:56:26 +01:00
.travis.yml travis: skip clippy 2019-04-29 20:03:34 +02:00
Cargo.lock cargo: use published serde-json-core 2019-05-28 08:40:17 +00:00
Cargo.toml cargo: use published serde-json-core 2019-05-28 08:40:17 +00:00
default.nix add Nix build files 2019-05-15 10:36:34 +08:00
LICENSE readme, license 2019-03-20 18:33:35 +00:00
memory.x ethernet: tweak 2019-04-28 14:06:56 +00:00
openocd.gdb iir: tweak, add offset 2019-03-29 18:33:32 +00:00
README.md README: try SVG again 2019-05-21 17:55:01 +02:00
release.nix add Nix build files 2019-05-15 10:36:34 +08:00
stabilizer_pid.png png 2019-05-09 16:40:35 +02:00
stabilizer_pid.svg README: diagram and photo 2019-05-09 16:05:36 +02:00
stabilizer.cfg working 2019-03-18 13:10:00 +00:00
stabilizer.py frontend: cleanup 2019-05-28 09:49:07 +00:00

Stabilizer Firmware

Flow diagram

Hardware

Features

  • dual channel
  • SPI ADC
  • SPI DAC
  • fixed AFE gains
  • 500 kHz rate, timed
  • < 2 µs latency, unmatched
  • f32 IIR math
  • generic biquad (second order) IIR filter
  • anti-windup
  • derivative kick avoidance
  • configurable output limits

Hardware

See https://github.com/sinara-hw/Stabilizer

Minimal bootstrapping documentation

  • Clone or download this
  • Get a recent openocd, a JTAG adapter ("st-link" or some clone) and everything connected and permissions setup
  • Get a multiarch gdb (or a cross arm gdb and edit .cargo/config accordingly)
  • Get rustup
  • rustup override add nightly
  • rustup target add thumbv7em-none-eabihf
  • openocd -f stabilizer.cfg and leave it running
  • cargo run --release