`_set_csma_params()` spends some time to prepare a value in
`uint8_t tmp`, which then is never used. Likely this is a leftover
of moving code to `mrf24j40_set_csma_max_retries()`. This drops the
leftover code.
19619: cpu/arm7: Fix undefined behavior based on invalid assembly r=aabadie a=Teufelchen1
### Contribution description
Hellooo! 🦤
In this PR a single `NOP` is added after an `ldm` in ARM7 common code in the scheduling management.
The change is necessary because this particular `ldm` affects certain banked registers, including `R14 / lr`. The next instruction then immediately accesses `lr`. This is invalid and the exact effect depends on the underlying hardware implementation. An intermediate `NOP` ensures correct behaviour in such cases.
The ARM docs can be found [here](https://documentation-service.arm.com/static/5f8dacc8f86e16515cdb865a), in section `A4.1.21 LDM (2)`. It states:
> In ARM architecture versions earlier than ARMv6, this form of LDM must not be
followed by an instruction that accesses banked registers. A following NOP is a good
way to ensure this.
### Testing procedure
Without this change, on the Game Boy Advance, RIOT behaves irregularly. With the `NOP`, it works fine!
If possible, this change should be tested on other ARM7 hardware as well but I do not have access to any.
----
Special thanks `@pyropeter` for spotting the extremely tiny note on this issue within the ARM docs. You saved me hours of tears! 👾
Co-authored-by: Teufelchen1 <bennet.blischke@outlook.com>
19572: cpu/stm32/periph_pwm: support of complementary timer outputs r=maribu a=gschorcht
### Contribution description
This PR provides the support of complementary timer outputs as PWM channels for advanced timers (TIM1/TIM8).
To use a complementary output of an advanced timer as PWM channel, the output is defined with an offset of 4, i.e. normal outputs are in the range of 0 to 3 (CH1...CH4) and complementary outputs are in the range of 4 to 6 (CH1N...CH3N). If the defined output is less than 4, the normal output is enabled, otherwise the complementary output is enabled.
This change is required to support PWM on boards that have connected the complementary outputs of advanced timers to the PWM connector pins, for example the STM32L496-DISCO board.
### Testing procedure
- Green CI
- Use any STM32 board which supports the `periph_pwm` feature. `tests/periph_pwm` should still work.
- Change the configuration for this board so that either timer TIM1 or TIM8 and a complementary channel is used for any exposed GPIO. `tests/periph_pwm` should also work with such a configuration.
### Issues/PRs references
Co-authored-by: Gunar Schorcht <gunar@schorcht.net>
19633: drivers/slipdev: fix logic bug r=fabian18 a=maribu
### Contribution description
A typo resulted in a boolean expression to always be true and the `_poweron()` function to always exit early. This fixes the issue.
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
19631: drivers/dfplayer: fix bug in utility function r=maribu a=maribu
### Contribution description
Apparently, those functions have never been used. Otherwise this obvious bug wouldn't have sailed unnoticed for so long.
19632: drivers/pcf857x: fix error handling r=maribu a=maribu
### Contribution description
This fixes a typo/copy paste error in the error handling.
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
The current implementation uses the core clock frequency to calculate
the needed prescalar to achieve a given ADC clock frequency. This is
incorrect. This patch fixes the calculation to use the correct source
clock (PCKLK2 ie APB2). It also changes the defined max clock rate to
use the frequency macro to improve readability.
To use a complementary output of an advanced timer as PWM channel, the output is defined with an offset of 4, i.e. normal outputs are in the range of 0 to 3 (CH1...CH4) and complementary outputs are in the range of 4 to 6 (CH1N...CH3N). If the defined output is less than 4, the normal output is enabled, otherwise the complementary output is enabled.
Since 80fc9fabc66a0bc767467fa14c703e5a9f340cd3 the format of the
`flash list` command changed to a more human readable multi-line
variant. Technically, the change is white-space only. Still, the
current approach of parsing them with awk, sed and cut doesn't like
the new multi-line format. The parsing is now delegated into a
python script that is compatible across OpenOCD versions.
19609: drivers/lpsxxx: avoid float arithmetics r=aabadie a=maribu
### Contribution description
Perform computation directly in centi-degree-celsius to avoid floating point arithmetics. In addition, use scientific rounding in the division.
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
Just run `make compile-commands` outside of docker, as the compile
commands generated in the docker container won't be helpful for tools
outside of the container anyway.
Fixes https://github.com/RIOT-OS/RIOT/issues/17507
19599: examples/wasm/wasm_sample: revert prebuild WASM r=kfessel a=maribu
### Contribution description
Running `make` in the wasm example modifies the `hello_prebuild.wasm` example, making it easy to sneak in unwanted changes. This reverts such an instance and modifies the Makefile to only recreate/update `hello_prebuild.wasm` with:
make hello_prebuild.wasm
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>
Running `make` in the wasm example modifies the `hello_prebuild.wasm`
example, making it easy to sneak in unwanted changes. This reverts such
an instance and modifies the Makefile to only recreate/update
`hello_prebuild.wasm` with:
make hello_prebuild.wasm
19600: build-system: Allow out of tree BUILD_DIR r=maribu a=maribu
### Contribution description
- Replace all users of `$(RIOTBASE)/build` with the already present `$(BUILD_DIR)` variable
- Replace all users of `$(BUILD_DIR)/pkg` with the already present `$(PKGDIRBASE)` variable
- Create a `CACHEDIR.TAG` file in the `$(BUILD_DIR)`
Co-authored-by: Marian Buschsieweke <marian.buschsieweke@ovgu.de>