Skip to content


Subversion checkout URL

You can clone with
Download ZIP
Commits on Aug 25, 2015
  1. Don't spray back at signals we can't follow.

    The boot_rx4 loop was intending to fall through to boot_rx_bit, but got
    sidelined by trampoline-avoiding interleaving with boot_tx, and so does
    exactly that in the case of receiving crap or pulses too quickly from the
    I was hitting this when trying to communicate at a 3 microsecond quarter
    bit time (0-bit pulse length). The current reliable minimum speed seems
    to be about 5 microseconds (20 microsecond bit time) which seems to be
    mostly a result of jitter resulting from the timer prescaler not being
    cleared when the timer counter is cleared, and late clearing. Boo.
Commits on Aug 17, 2015
  1. Note that the timings are as measured, not required for correct opera…

    Any faster or more simple timing may be used.
    Also update the timings as measured with the DS4014.
Commits on Jul 7, 2015
Commits on May 5, 2015
  1. Fix LOW_BRAKE and RC_PULS_REVERSE with RCP_ALIAS ("oneshot125").

    No output change except when those options enabled along with RCP_ALIAS.
    This fixes github issue #75.
Commits on Apr 28, 2015
  1. Workaround for building with AVRA 1.3.0 on Mac OSX (github issue #29).

    Note that the fact that this breaks at all is perhaps an indication that
    bad things are happening, and there could also be issues with the output.
Commits on Apr 20, 2015
  1. Fix COMP_PWM with HIGH_SIDE_PWM with tristate-style driver mode (afro…

    …_pr*). No output change for anything else.
Commits on Apr 12, 2015
  1. Disable (by default) rapid beeping at stop if invalid PWM pulses were…

    … received.
    This is perhaps useful, but happens as a result of flight boards changing
    timers or in other situations that probably make this more of a nuisance
    than useful data. However, it is worth trying this option if sync loss is
    suspected since it should indicate if the problem is related to PWM noise,
    as in github issue #50.
  2. Support high side PWM optionally for all boards (HIGH_SIDE_PWM).

    No output change except pin ordering for the mkblctrl1 target as a result
    of un-faking the high and low side FET pin mappings. This was necessary
    in order to accomplish this before this option existed.
Commits on Apr 7, 2015
  1. Comment updates only.

Commits on Apr 3, 2015
Commits on Mar 30, 2015
Commits on Feb 26, 2015
  1. Add automatic support for 1/8th PWM pulse length aliases ("oneshot125").

    Why so complicated? This implementation works almost as if we just added
    a conditional multiply by 8 in the PWM RX interrupt, except without doing
    that. This means that no additional cycles are used that would increase
    software PWM jitter.
    Also, switching between aliased and non-aliased inputs is like switching
    between any other input type in that invalid pulses are rejected until
    the armed session times out, at which point other options (such as the
    opposite alias state) become available again. This avoids the possibility
    that a wire falling off looks like full power in another input alias.
    With some other tricks (such as MIN_RC_PULS * CPU_MHZ & 0xff == 0), the
    RC processing path has only 4 cycles of overhead for length checking that
    isn't part of the interrupt checking, or 1 cycle less than before for the
    non-alias case.
    Calibration is supported when aliased or not, and is carried across. So,
    one can calibrate with long pulses and arm with short pulses, and the
    calibration will line up exactly. This should help with comparing modes
    without introducing any other changes.
    Note to flight controller software people: "oneshot" should really be
    separated into two options such as "syncpwm" (synchronous PWM, which is
    where the "one shot" name comes from), and something like "8xpwm" (1/8th
    PWM pulse lengths), since they really are totally separate things. This
    would also help with actually producing fair test results, and "syncpwm"
    could be used on all ESCs (KK1 says hello).
    Note that boards with PWM input on the ICP1 pin (USE_ICP set in the .inc
    file) such as all Afro ESCs and Team BlackSheep (TBS) ESCs have hardware
    capture of the pulse edges. This means they can measure pulse lengths
    with no jitter, which becomes more important at shorter lengths. Other
    ESCs will incur some PWM input jitter due to multi-cycle instructions,
    areas of code which block interrupts, and when other interrupts are
    already executing.
    Finally, note that we still report out of range PWM pulses by beeping
    rapidly once the motor stops. The purpose of reporting this is that
    pulses being corrupted by power noise or ground offset or some other
    electrical problem could cause other problems in flight. Twisted wires,
    proper grounding, or opto-isolation may be required for reliable
    operation. Please report any abnormal cases.
Commits on Feb 23, 2015
Commits on Feb 22, 2015
Commits on Feb 12, 2015
Commits on Feb 8, 2015
  1. Also clean .cof files.

Commits on Jan 30, 2015
Commits on Jan 29, 2015
Commits on Jan 21, 2015
  1. Move reset/init code before control_start and trampoline from the end to

    properly implement the original purpose of e1c44c0.
    This should be safer again, regardless of the size or page alignment of
    the initialization code.
Commits on Jan 6, 2015
  1. @TobiasBales
Something went wrong with that request. Please try again.