• Earle F. Philhower, III's avatar
    Clear PIO FIFOs when updating Tone and Servos (#206) · bedfbda3
    Earle F. Philhower, III authored
    The PIO programs that generate tone() and Servo() use the TX FIFO to
    receive updates to the period/duty cycle.
    
    The original code would push into the FIFO (potentially blocking the
    app if the FIFO was full) and generate at least one cycle of every
    value written into the control.  Basically, the output would
    lag the changes by 1 cycle or more (which could be 20ms+ on Servo).
    
    Fix this by clearing any old, ungrabbed values from the FIFO before
    sending a new one to the program.  Instead of a FIFO, there is
    effectively now just a control register and updates will be immediate.
    
    Update the Siren.ino example with delays because now the tone() calls
    will not block and run 10x+ faster.
    bedfbda3
Servo.cpp 5.27 KB