This commit extends the periph_spi benchmark with timing statistics for
the thread runtime, counting only the time the thread initiating the SPI
request is busy with the SPI transfer. This is useful to measure timings
on SPI transfers when DMA and other async mechanisms are used to
transfer the bytes
Since the "EXTI->PR" is an "rc_w1" type of register, we need to be
careful when clearing our interrupt flag in the register. When there
are multiple interrupt flags set in the register, the "|=" operation
will mistakenly clear all pending interrupts instead of just ours.
The tokenizer (the code that breaks up the line given to the shell into
strings to create argv) was quite a messy piece of code. This commit
refactors it into a more traditional state-machine based parser.
This fixes the issues with quote handling exposed by the recently
introduced test.
Co-authored-by: Juan Carrano <j.carrano@fu-berlin.de>
Check that single and double quotes work, along with backslash escaping
and that malformed strings are rejected.
Right now the test is failing. The next commit will replace the tokenizer
with one that works correctly.
Co-authored-by: Juan Carrano <j.carrano@fu-berlin.de>
- On pwm_poweron, the PWM resolution was not restored. (A custom resolution was
only usable if, PWM channel 0 is not used. That configuration is not common,
so this bug was likely never triggered)
- Disabled a work around to prevent flickering:
- Previously, PWM was disconnected on level 0% and 100%
- This increases the run time of `pwm_set()`
- It prevents using the PWM for wave form generation via DDS, as the wave
noticeably jumps when reaching 0% or 100%
- Slightly reduces memory requirements: 2 Bytes of RAM, 112 Bytes of ROM
- Tested with avr-gcc 9.2.0 and LTO enabled
The ATmega PWM implementation only supports a maximum resolution of 256.
Thus when running `osci` with `OSC_STEPS` = 1000 an assertion will fail and
the test crashes, even though the PWM peripheral works perfectly fine.
Limit OSC_STEPS to 256 so it works on all platforms.
The LED flashing doesn't look any more coarse.