1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2025-01-18 10:52:44 +01:00
Commit Graph

8627 Commits

Author SHA1 Message Date
Marian Buschsieweke
dd585f9e9d
cpu/esp32/gpio_ll: fix & cleanup
- `gpio_ll_toggle()` now is race-free
- avoid using a look up table but branch to the two different registers
  in the `gpio_ll*()` functions
    - in most cases the GPIO port is a compile time constant and the
      dead branch is eliminated by the optimizer, making this vastly
      more efficient
    - some MCUs do only have a single port, in which case
      `GPIO_PORT_NUM(port)` is known to return `0` even if `port` is
      not known, resulting in one of the branch being eliminated as
      dead branch no matter what
    - in case it really is unknown at compile time which port to work
      on, the branch can still be implemented efficiently by the
      compiler e.g. using a conditional move; likely more efficient
      than fetching a value from the look up table.
2024-04-30 14:16:28 +02:00
benpicco
70c70e2afc
Merge pull request #20623 from maribu/cpu/msp430/periph_usci/fix-prescaler
cpu/msp430/perriph_usci: fix prescaler values for ACLK
2024-04-26 09:42:25 +00:00
Marian Buschsieweke
4c0d6f8f7d
cpu/msp430/perriph_usci: fix prescaler values for ACLK
For super low symbol rates the auxiliary clock (ACLK) is used to
conserve power. But with only 32,678 Hz clock just prescaling will
result in poor bit timing, hence correct modulation control settings
to compensate are needed. Since computing this is too expensive, a
look-up table (as switch statement) for the four most common symbol
rates was used.

The datasheet gave the prescaler values ordered by ascending symbol
rate, the switch statement was ordered descending.
This changes the order to match the datasheets order and matches the
correct prescaler setting to the corresponding symbol rate.

Fixes https://github.com/RIOT-OS/RIOT/issues/20620
2024-04-25 22:39:45 +02:00
Teufelchen
925644e4ce
Merge pull request #20596 from Teufelchen1/fix/esp_print
cpu/esp: Handle format print errors
2024-04-25 13:58:12 +00:00
Teufelchen1
01e78ed333 cpu/esp: Handle format print errors 2024-04-25 15:19:02 +02:00
Dylan Laduranty
e784794b37 cpu/cortexm: uncrustify panic.c
Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2024-04-24 13:20:59 +02:00
Dylan Laduranty
5d3324d3a9 cpu/cortexm: rework bkpt instruction call on panic
Only call this instruction if a debug session is active otherwise it will trigger a hardfault

Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2024-04-24 13:19:45 +02:00
Marian Buschsieweke
a8ffb340fc
Merge pull request #20599 from crasbe/pr/nrf52840_jlink
boards/nRF52xx: correctly set JLINK_DEVICE
2024-04-22 11:53:15 +00:00
crasbe
6f0e81fb34 boards/nRF52xx: correctly set JLINK_DEVICE 2024-04-22 11:25:08 +02:00
benpicco
5a7bcc9f87
Merge pull request #20601 from maribu/cpu/msp430/clock
cpu/msp430: clean up and fix clock driver
2024-04-22 08:44:20 +00:00
benpicco
3cd83c7709
Merge pull request #20602 from maribu/cpu/msp430/get_caller_pc
cpu/msp430: implement get_caller_pc
2024-04-22 08:41:56 +00:00
Marian Buschsieweke
f01fb53529
cpu/msp430: implement get_caller_pc
This "implements" the `get_caller_pc()` function by simply wiring up
compiler intrinsics.
2024-04-19 21:21:32 +02:00
Marian Buschsieweke
024832aa6d
cpu/msp430: clean up and fix clock driver
- The validity test for the high frequency crystal did not take
  into account the higher range supported by the MSP430 F2xx / G2xx
  family. This fixes the issue.
    - The CPU family used is exposed to C as `CPU_FAM_<NAME>` macro
- Unused headers where dropped
- The status register is aliased `SR`, so let's use that more readable
  name.
2024-04-19 19:17:18 +02:00
Dylan Laduranty
efab4dd9ea
Merge pull request #20593 from firas-hamdi/fix/correct_debug_output
cpu/samd5x: reword & correct debug output
2024-04-18 14:36:40 +00:00
Firas Hamdi
599967fe26 cpu/samd5x: reword & correct debug output 2024-04-18 15:42:57 +02:00
Dylan Laduranty
7aa7e7954e cpu/nrf5x: implement pm_off() for nRF53/9160
Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2024-04-18 13:33:36 +02:00
Teufelchen
5bc8ca5318
Merge pull request #18093 from Ollrogge/remove_flashpage_free_funcs
periph/flashpage: remove deprecated flashpage_*_free functions
2024-04-16 08:47:11 +00:00
Marian Buschsieweke
03914582ea
Merge pull request #20567 from krzysztof-cabaj/esp8266-DOC
cpu/esp8266: fix doxygen unbalanced grouping
2024-04-16 06:04:10 +00:00
Marian Buschsieweke
30c9204322
Merge pull request #20572 from maribu/cpu/msp430/uart_usci
cpu/msp430/periph_uart: Fix uart_write() for USCI peripheral
2024-04-15 13:52:45 +00:00
Marian Buschsieweke
f4baa0f2e1
cpu/msp430/periph_uart: Fix uart_write() for USCI peripheral
In TX-only mode the UART was previously release before all bits of the
last byte were shifted out. This adds a busy loop waiting while the
peripheral is still busy, fixing the issue.

Co-authored-by: benpicco <benpicco@googlemail.com>
2024-04-15 14:43:10 +02:00
Marian Buschsieweke
53edb4e981
Merge pull request #20571 from maribu/cpu/msp430/timer
cpu/msp430/periph_timer: add a static_assert() for clear mask
2024-04-15 10:21:52 +00:00
Marian Buschsieweke
5adf1f1a28
cpu/msp430/periph_timer: fix timer_query_freqs()
`timer_query_freqs()` should return 0 when index is out of range
according to the doc. This changes the code to live up to the
spec.
2024-04-14 20:20:36 +02:00
Marian Buschsieweke
49d59d166d
cpu/msp430/periph_timer: add a static_assert() for clear mask
The driver assumes that timer A and timer B have the same register
layout regarding all the features exposed by the driver. This is
backed by the MCU family datasheets for the MSP430 x1xx and the
MSP430 G2xx / F2xx MCUs (and likely more families).

The assert() is pretty limited in coverage, but more to document why
a "timer A clear" mask is used but still claiming the driver also
works for timer B. It just looks too much like a bug otherwise.
2024-04-14 16:01:58 +02:00
krzysztof-cabaj
2f0a78640f cpu/esp8266: fix issue found by static tests 2024-04-11 19:19:58 +02:00
krzysztof-cabaj
569b4b5294 cpu/esp8266: fix doxygen unbalanced grouping 2024-04-11 19:04:06 +02:00
Teufelchen1
c8d5fe2352 boards/cpu: Add limited GBA boot support to RIOT 2024-04-10 17:06:14 +02:00
Dylan Laduranty
d75595751c cpu/nrf9160: fix gpiote0 vector isr
Signed-off-by: Dylan Laduranty <dylan.laduranty@mesotic.com>
2024-04-08 20:13:45 +02:00
Ollrogge
6a8bbe0240 Revert "cpu/cortexm_common: extend flashpage API"
This reverts commit d38f6c68b5.
2024-04-04 17:57:40 +02:00
Ollrogge
4b8355e1d3 Revert "cpu/msp430_common: extend flashpage API"
This reverts commit 741943f021.
2024-04-04 17:57:19 +02:00
Ollrogge
7595d533b4 Revert "cpu/riscv_common: extend flashpage API"
This reverts commit 3a11b1fbd2.
2024-04-04 17:37:16 +02:00
Ollrogge
7c5b16abe5 Revert "cpu/lpc23xx: extend flashpage API"
This reverts commit 4fa25af86c.
2024-04-04 17:37:16 +02:00
Ollrogge
2f67249ae1 Revert "cpu/native: extend flashpage API"
This reverts commit cdd9f303cf.
2024-04-04 17:37:15 +02:00
Joshua DeWeese
aef5dfec2b cpu/stm32/gpio_ll: make style consistent
This block of code inconsistently made use of else-if statments. The
patch makes the use consistent. The change also makes the code a bit
simpler to read.
2024-04-02 11:51:20 -04:00
Joshua DeWeese
1b1fbfeb5c cpu/stm32/gpio_ll: fix ifdef
APB12 is never defined as a macro. It is an element in the bus_t enum.
Therefore, the test to check if it is defined will always fail.

APB12 is not a real bus. It is the second register of the APB1 bus. I am
not aware of any STM32 family where the ABP2 bus is implmented (ie
RCC_APB2ENR_SYSCFGEN is defined) and devices attached to said bus are
enabled via the APB1 second register. For this reason, the fix is to
simply remove the check.
2024-04-02 11:34:50 -04:00
benpicco
ad51739c26
Merge pull request #20521 from Ollrogge/rtc_support
cpu/stm32u5: Enable rtc support
2024-04-01 19:06:06 +00:00
Ollrogge
013e884550 cpu/stm32u5: Enable rtc support 2024-03-29 10:19:42 +01:00
Karl Fessel
3e2ab59f4d
Merge pull request #20431 from cogip/native_fixes
cpu/native: add gpio-mock
2024-03-28 22:07:10 +00:00
Karl Fessel
9d2dda27ce
Merge branch 'master' into cpu/samd5x-write-CAN-driver 2024-03-28 09:52:26 +01:00
Marian Buschsieweke
4b3308cdef
Merge pull request #20357 from maribu/cpu/msp430/usci
cpu/msp430/f2xx: clean up periph_uart,periph_spi
2024-03-27 19:57:47 +00:00
Marian Buschsieweke
aef5b65244
cpu/msp430/f2xx: clean up periph_uart,periph_spi
This cleans up the USCI based UART and SPI implementations and allows
multiple instances of either interface to be configured by the
boards. In addition, it allows sharing the USCI peripherals to provide
multiple serial interfaces with the same hardware (round-robin).
2024-03-27 18:54:07 +01:00
Marian Buschsieweke
04620d471c
Merge pull request #20438 from MrKevinWeiss/pr/kconfig/dep/removal
Remove Kconfig dependency modelling
2024-03-27 16:39:56 +00:00
MrKevinWeiss
e0fdc3c16c
*Kconfig*: Modify Kconfig to remove dep model 2024-03-27 10:28:12 +01:00
Benjamin Valentin
16cfaab235 cpu/samd5x: fix C++ build 2024-03-27 00:15:36 +01:00
Firas Hamdi
e4e5558694 cpu/samd5x: implement driver for samd5x CAN controller
cpu/samd5x: load RX mailbox
2024-03-26 15:17:48 +01:00
Kevin "Tristate Tom" Weiss
6c6d2f9100
Merge pull request #20410 from benpicco/cpu/esp8266-spi_clk
cpu/esp8266: allow arbitrary SPI clocks
2024-03-26 14:15:50 +00:00
MrKevinWeiss
7a68fb0d5e
*Kconfig*: Remove dep-only Kconfig files 2024-03-26 14:54:22 +01:00
MrKevinWeiss
0a9c51fdf9
*.config: Modify all .config kconfig files 2024-03-26 14:53:40 +01:00
MrKevinWeiss
0f2b71c60e
*Makefile.features: Remove TEST_KCONFIG includes 2024-03-26 14:53:39 +01:00
Gilles DOFFE
ebf95d2545 cpu/native: enhance GPIO mocking with 2D array representation
This commit introduces a more robust GPIO mocking mechanism by utilizing
a 2-dimensional array. Each element of the array holds a gpio_mock_t
structure describing a pin's attributes such as value, mode, flank,
interruption callback, and callback argument.

This enhancement allows for the arbitrary simulation of GPIOs across
various microcontroller architectures using the current API, while
maintaining consistency through the use of the GPIO_PIN macro.

Additionally, it should be noted that only the maximum number of ports
and maximum number of pins can be altered according to the context.

The implemented API in gpio_mock.c remains rudimentary, providing no
validation but fulfilling the required functions. However, it remains
customizable as all its functions are marked as weak.

Signed-off-by: Gilles DOFFE <g.doffe@gmail.com>
2024-03-24 23:12:24 +01:00
9f51daeb53
Merge pull request #20495 from Enoch247/simplify-stm32-clk-includes
cpu/stm32: remove redundant conditional compile block
2024-03-22 12:04:49 +00:00