1
0
mirror of https://github.com/RIOT-OS/RIOT.git synced 2024-12-29 04:50:03 +01:00
Commit Graph

222 Commits

Author SHA1 Message Date
Robert Hartung
7bca1cc5d5 cpu/atmega_common: implements pseudomodule-based pin change interrupts 2019-08-01 09:23:04 +02:00
Thomas Perrot
44803ea4fd
cpu/atmega32u4: add support for ATmega32U4 2019-05-24 15:12:47 +02:00
Marian Buschsieweke
20b9ef7c5b
cpu/atmega_common: Fix function attributes
Functions marked with __atribute__((naked)) may only use basic inline assembly
and must not use any c code. The functions __enter_thread_mode() and
cpu_switch_context_exit() are using C code, so they must not be marked as
naked.
2019-04-26 11:02:01 +02:00
Marian Buschsieweke
70cf9b34c7
cpu/atmega_common: Add barriers to irq_*()
To prevent reordering of accesses to the interrupt control register when link
time optimization (LTO) is enabled, memory barriers are needed. Without LTO
calls to the external functions irq_disable(), irq_restore(), irq_enable() and
irq_is_in() have the same affect as compiler barriers, as the compiler is unable
to prove that reordering of memory accesses is safe (from a single-threaded
point of view). With LTO the compiler can easily prove that reordering is safe
from a single-threaded point of view: Thus, the compiler may move memory
accesses wrapped in irq_disable(), irq_restore() across those calls.

The memory barriers will have no effect on non-LTO builds.
2019-04-25 17:42:15 +02:00
Marian Buschsieweke
48fabca38d
cpu/atmega_common: Fix return value of irq_enable
Citing the doc of irq_enable():

    @return Previous value of status register. [...]

On atmega however the new value of the status register is returned, not the one
prior to enabling interrupts.
2019-04-25 17:42:02 +02:00
Sebastian Meiling
d08a6132bf
Merge pull request #10934 from gschorcht/cpu_atmega_common_heap
cpu/atmega_common: make remaining RAM available as heap
2019-04-15 13:17:57 +02:00
Marian Buschsieweke
ca5e196e78
cpu/atmega_common: Move stdio_init() to cpu_init()
Moving atmega_stdio_init() to cpu_init() just before periph_init() guarantees
that stdio is available to allow DEBUG() in periph_init(). This also helps to
unify the boot up process of ATmega boards and de-duplicates the stdio init from
board_init().
2019-04-10 10:18:43 +02:00
Francisco Acosta
2bdcdddd76 cpu/atmega*: make use of common atmega.inc.mk and remove redundancies
Everything is now defined in atmega.inc.mk, following the common
RIOT-like reusability of rules and variables (e.g. cortexm.inc.mk).
2019-02-05 17:12:03 +01:00
Gunar Schorcht
ecb26526df cpu/atmega_common: make RAM available as heap
Fills __malloc_heap_end with the current SP before it enters thread mode to make the remaining RAM available as a heap.
2019-02-05 02:19:58 +01:00
Gaëtan Harter
9cd50a693a
cpu/atmega_common: do not export LINKFLAGS
This prevent evaluating `LINKFLAGS` when not needed and when building
in docker so does not produce errors if `avr-ld` is not installed.

```
BUILD_IN_DOCKER=1 BOARD=arduino-mega2560  make --no-print-directory -C examples/hello-world/ clean
/srv/ilab-builds/workspace/git/riot_master/makefiles/toolchain/gnu.inc.mk:18: objcopy not found. Hex file will not be created.
/bin/sh: 1: avr-ld: not found
```

It removes the `/bin/sh: 1: avr-ld: not found`
2019-01-23 18:32:40 +01:00
Sebastian Meiling
0edf76d362
Merge pull request #9984 from kaspar030/refactor_atmega_libc
cpu/atmega_common: refactor AVR libc code into module
2019-01-22 08:41:37 +01:00
7313525035 atmega_common: refactor avr-libc-extra into avr_libc_extra module 2019-01-21 14:37:08 +01:00
MrKevinWeiss
3ce03df0ff cpu/atmega_common/uart: Comment why brr calc is different from datasheet
The brr calculation on the datasheet is different than what is implmented.
This is intentional since it provides better rounding due to truncation.
There was no comment explaining that so this comment should prevent confusion.
2019-01-07 08:40:21 +01:00
c97bedcd8b cpu/atmega_common: define eeprom clear byte value 2018-12-04 11:24:57 +01:00
Kevin "Bear Puncher" Weiss
153759b926
Merge pull request #10498 from smlng/pr/adapt/7542
atmega: add periph_pwm (taken from #7542)
2018-11-29 15:54:51 +01:00
smlng
262a04c9cf atmega: fix periph timer configuration
- correct number of timers for atmega328p from 2 to 1
- correct number of timer channels for atmega328p from 3 to 2
- adapt atmega periph timer implementation accordingly
2018-11-29 09:30:44 +01:00
Victor Arino
2ebb187ca9 cpu/atmega-common: PWM implementation
Implementation of PWM with 8-bit timers
2018-11-28 16:00:54 +01:00
Victor Arino
01420152de cpu/atmega-common: add maps for 8-bit timers 2018-11-28 15:58:58 +01:00
PeterKietzmann
8d11ca417f cpu/atmega_common: add mega2560 puf_sram feature 2018-11-20 09:45:32 +01:00
Francisco Acosta
b2fc9b197e cpu/atmega*: remove unnecessary code (already factored out)
cpu.c and startup.c were redundant in most platforms, except for
atmega256rfr2. The common code is now in cpu/atmega_common/cpu.c
and cpu/atmega_common/startup.c. cpu_conf.h is also removed as
it's now in cpu/atmega_common/include thus shared by all atmega
based platforms.
2018-11-02 16:23:48 +01:00
Francisco Acosta
4f28407af8 cpu/atmega_common: use the same cpu_conf for all atmega based boards
Removes redundancy of code since all the boards were defining
the same variables. Moreover, the stack sizes are unified per
architecture, as required.
2018-11-02 16:23:48 +01:00
Francisco Acosta
feac98cc97 cpu/atmega_common: add cpu.c and startup.c common code
Removes duplicated code for atmega platforms. They were all
basically the same, only with the exception of atmegarfr2,
for which there is an #if statement to use the code in the
same file.
2018-11-02 16:23:47 +01:00
e9a6ebc409 cpu: drivers/eeprom: refactor periph_eeprom implementation 2018-10-16 10:39:10 +02:00
Martine Lenders
0eebda0958 atmega_common: mark closing #endif for MODULE_PERIPH_GPIO_IRQ 2018-10-09 15:10:59 +02:00
Hauke Petersen
94ff02f3c4 cpu/atmega/gpio: use gpio_irq feature 2018-09-21 08:11:20 +02:00
cladmi
9720d9c51c
cpu/atmega_common: Allow specifying a reserved space in ROM
It is defined using the `ROM_RESERVED` variable.

This should allow supporting arduino bootloader that is stored at the
end of the ROM.
2018-09-05 12:20:36 +02:00
cladmi
493cad03da
atmega_common: make rom and ram length definition mandatory
Now all atmega cpu define them so use them by default.
2018-09-05 12:20:33 +02:00
cladmi
098770aeda
atmega_common: use binutils 2.26 ldscript for older versions
This allows configuring __TEXT_REGION_LENGTH__ and __DATA_REGION_LENGTH__
for previous versions (ubuntu xenial for example).
2018-09-05 12:20:17 +02:00
cladmi
6e148bcf1b
atmega_common: allow defining rom and ram length for link.
Allow configuring __TEXT_REGION_LENGTH__ and __DATA_REGION_LENGTH__ linkerscript
variables using ROM_LEN and RAM_LEN makefile variables.
2018-09-05 12:08:31 +02:00
ZetaR60
db7734261c
Merge pull request #9823 from fesselk/patch-1
atmega_common/gpio_init: fix pull-up settings for GPIO_IN_PU
2018-09-03 20:30:53 -04:00
Karl Fessel
d9aac6a7d4 atmega_common/gpio_init: fix pull-up settings for GPIO_IN_PU
This Patch makes gpio_init precalculate the pin mask once,
This Patch makes gpio_init of atmega_common configure the pin as an input and configure the pullup in the case of GPIO_IN_PU.
GPIO_IN_PU and GPIO_IN need to change pullup so they need to change output (this is coverd by the not touching outputs is not guaranteed statement)
(this is a special case for atmega the pull_up is configured by writing 1 to the port_register which is also the level of the output if the pin is configured to output).

This fix makes it more compliant to comments in periph/gpio.h
2018-08-27 20:34:10 +02:00
Hauke Petersen
c2184f3454 boards/cpu/drivers/sys: use generic stdio_ if 2018-08-22 10:54:25 +02:00
Francisco Acosta
73ae563973 eeprom: Makefile.features: reorder features
They should be sorted alphabetically
2018-08-15 14:53:56 +02:00
Laurent Navet
c7fed1526c cpu/atmega_common: adapt to new i2c api
Rework atmega i2c to match new i2c interface.
Only i2c_read_bytes and i2c_write_bytes are implemented.
2018-07-25 12:01:39 +02:00
Josarn
d6c0398f3d atmega timer: Interrupt Pin
A debug pin can be used to probe timer interrupts with an oscilloscope or
 other time measurement equipment. Thus, determine when an interrupt occurs
 and how long the timer ISR takes.
 The pin should be defined in the makefile as follows:

CFLAGS += -DDEBUG_TIMER_PORT=PORTF -DDEBUG_TIMER_DDR=DDRF \
            -DDEBUG_TIMER_PIN=PORTF4
2018-07-18 20:48:17 +02:00
Peter Kietzmann
8ab20f0551
Merge pull request #9456 from ZetaR60/RIOT_atmega_gpio_misc_fix
cpu/atmega_common: misc gpio interrupt fixes
2018-06-29 09:18:35 +02:00
Francisco Acosta
23d176f46b
Merge pull request #8857 from ZetaR60/RIOT_atmega_time_dot_h
cpu/atmega_common: Use updated time.h
2018-06-28 22:29:20 +02:00
Matthew Blue
adc44e6496 cpu/atmega_common: misc gpio interrupt fixes 2018-06-28 16:06:36 -04:00
Francisco Acosta
f0dce1b920
Merge pull request #8988 from Josar/atmega_isr
cpu/atmega_common: __exit_isr thread_yield
2018-06-26 16:12:39 +03:00
steffen
3ad71d5be0 atmega_common/gpio.c Fixes GPIO interrupt
fixes the GPIO_LOW interrupt on the atmega platform.
It results from trying to shift GPIO_LOW. Since it is 0, it is not shiftable and will not be set correctly.
There were more issues with the other flanks too, as they are 0b01 or 0b00. If 0b11 was set as a flank before it would not be able to switch to any other mode anymore. Now the bits get cleared before the new flank will be written.
2018-06-21 11:28:42 +02:00
Josarn
91359631d5 cpu/atmega_common/thread_arch.c: uncrustified 2018-06-14 21:47:33 +02:00
Josarn
40c1839a8c cpu/atmega_common/periph/uart.c: uncrustified 2018-06-14 21:47:33 +02:00
Josarn
0e491861af cpu/atmega_common/periph/timer.c: uncrustified 2018-06-14 21:47:33 +02:00
Josarn
fe92771372 cpu/atmega_common/include/cpu.h: uncrustified 2018-06-14 21:47:33 +02:00
Josarn
9b631170cb cpu/atmega_common: uncrustified 2018-06-14 21:47:33 +02:00
Josarn
80b02e5268 cpu/atmega_common: exit_isr thread_yield 2018-06-14 21:47:33 +02:00
Francisco Acosta
1aed925ca8
Merge pull request #8951 from ZetaR60/RIOT_atmega_ext_int_clarity
cpu/atmega_common: external interrupt fix and refactor
2018-05-30 16:33:34 +02:00
Matthew Blue
533388d3ae cpu/atmega_common: external interrupt fix and refactor 2018-05-29 11:24:15 -04:00
Matthew Blue
dfa8fb919d sys/timex: fix incompatible atmega time.h 2018-05-28 13:04:55 -04:00
Matthew Blue
442634728f cpu/atmega_common: add struct timespec to time.h 2018-05-28 13:04:55 -04:00
Matthew Blue
b597700a67 cpu/atmega_common: ignore format of avr-libc in CI 2018-05-28 13:04:55 -04:00
Matthew Blue
2a92d480ea cpu/atmega_common: Use updated time.h from avr-libc-2.0.0 2018-05-28 13:04:55 -04:00
364806e585 cpu/atmega_common: add support for eeprom periph interface 2018-05-24 14:07:55 +02:00
Francisco Acosta
8ab908146e
Merge pull request #8959 from aabadie/pr/cpu/guard_atmega_common
cpu/atmega_common: remove useless periph file guard
2018-05-22 19:57:46 +02:00
3f1657ffbb
Merge pull request #8952 from ZetaR60/RIOT_atmega_graceful_clock
boards/common/atmega: gracefully handle CKDIV8 fuse
2018-05-14 16:11:17 +02:00
Matthew Blue
55a7d8f83d boards/jiminy-mega256rfr2: remove context swap defines 2018-05-03 17:29:28 -04:00
Matthew Blue
2979626ef6 boards/common/atmega: gracefully handle CKDIV8 fuse 2018-05-02 14:05:33 -04:00
Matthew Blue
ac2b643308 cpu/atmega_common: return to non-interrupt context swaps 2018-04-27 14:13:34 -04:00
1195ee609f cpu/atmega_common: remove useless periph file guard 2018-04-16 09:58:44 +02:00
Vincent Dupont
0d9badfab5 atmega_common: improve posix_unistd syscalls
Add open implementation and improve fcntl with variable arguments
2018-04-13 10:51:07 +02:00
2866a26a24
Merge pull request #8808 from Josar/atmega_stackPointer
cpu/atmega_common: use __temp_reg__
2018-04-09 12:05:29 +02:00
391cc83881 cpu/atmega_common: provide common stdio initialization 2018-04-03 14:18:32 +02:00
Josarn
2ef1001ec7 cpu/atmega_common: use __temp_reg__ 2018-03-30 10:22:32 +02:00
Matthew Blue
d3dc49e2ab cpu/atmega_common: Support for ATmega1284P 2018-03-25 14:24:40 -04:00
Josarn
d82f1eba4c atmega: add last instruction print
Signed-off-by: Josua Arndt  <josuaarndt@live.de>
2018-03-06 14:57:18 +01:00
Hauke Petersen
47a500d0b1
Merge pull request #8447 from haukepetersen/opt_test_periphuartpower
tests/periph_uart: included power_on/off() in test
2018-03-05 09:49:20 +01:00
Josarn
3bace2bd24 cpu/atmega-common: Adjustments Jiminy-mega256rfr2
Signed-off-by: Josua Arndt  <josuaarndt@live.de>
Signed-off-by: Steffen Robertz <steffen.robertz@online.de>
2018-03-02 13:33:26 +01:00
Hauke Petersen
ce9e6f4eb0 cpu/atmega_common: add empty uart/power_x functions 2018-03-02 10:53:55 +01:00
7847a91e12 cpu: instead of cpp-style, use C-style comments 2018-02-06 16:59:58 +01:00
Martine Lenders
39c122155c
Merge pull request #7995 from smlng/make/fix/unused_params
make: fix unused-params error
2017-11-28 14:46:23 +01:00
smlng
7309171303 build: fix unused parameter errors
cpu, sam0_common: fix unused parameter in periph/spi
        cpu, kinetis_common: fix unused parameter in periph/spi
        cpu, cc2538: fix unused param in periph/i2c
        cpu, cc2538: fix unused param in periph/spi
        cpu, sam3: fix unused param in periph/spi
        cpu, stm32_common: fix unused param in periph/pm
        cpu, stm32f3: fix unused params in periph/i2c
        cpu, nrf5x_common: fix unused param in periph/gpio
        cpu, nrf5x_common: fix unused param in periph/spi
        cpu, lpc2387: fix unused params in periph/spi
        cpu, cc2538: fix unused params in radio/netdev
        cpu, cc2650: fix unused params in periph/uart
        cpu, lm4f120: fix unused param in periph/spi
        cpu, lm4f120: fix unused params in periph/timer
        cpu, lm4f120: fix unused params in periph/uart
        cpu, stm32_common: fix unused params in periph/dac
        cpu, stm32l0: fix unused params in periph/i2c
        cpu, msp430fxyz: fix unused params in periph/uart
        cpu, mips: fix unused params
        cpu, cc430: fix unused-params in periph/timer
        cpu, msp430fxyz: fix unused params in periph/spi
        drivers, cc2420: fix unused param
        cpu, mips32r2_common: fix unused params in periph/timer
        cpu, cc2538: fix unused-param in periph/i2c
        cpu, mips32r2_common: fix unused-param in periph/timer
        cpu, msp430fxyz: fix unused params in periph/timer
        cpu, atmega_common: fix unused params in periph/spi
        driver, nrfmin: fix unused params
        cpu, cc2538_rf: fix unused params
        driver, netdev_ieee802514: fix unused param
        cpu, mip_pic32m: fix unused params
        cpu, lpc2387: fix unused params in periph/pwm
        tests/driver_sdcard_spi: fix unused params
        cpu, sam3: fix unused param in periph/pwm
        tests/driver_dynamixel: fix unused params, and style issues
        cpu, cc430: fix unused param in periph/rtc
        cpu, atmega_common: fix unused params in periph/i2c
2017-11-28 14:36:01 +01:00
smlng
e381317fbf make: fix sign-compare errors
cpu, nrf5x_common: fix sign-compare in periph/flashpage
    drivers, periph_common: fix sign-compare in flashpage
    cpu, sam0_common: fix sign-compare error in periph/gpio
    cpu, cc2538: fix sign-compare in periph/timer
    cpu, sam3: fix sign-compare in periph/gpio
    cpu, stm32_common: fix sign-compare in periph/pwm
    cpu, stm32_common: fix sign-compare in periph/timer
    cpu, stm32_common: fix sign-compare in periph/flashpage
    cpu, nrf5x_common: fix sign-compare in radio/nrfmin
    cpu, samd21: fix sign-compare in periph/pwm
    cpu, ezr32wg: fix sign-compare in periph/gpio
    cpu, ezr32wg: fix sign-compare in periph/timer
    drivers, ethos: fix sign-compare
    sys, net: fix sign-compare
    cpu, atmega_common: fix sign-compare error
    cpu, msp430fxyz: fix sign-compare in periph/gpio
    boards, msb-430-common: fix sign-compare in board_init
    driver, cc2420: fix sign-compared
    sys/net: fix sign-compare in gnrc_tftp
    driver, pcd8544: fix sign-compare
    driver, pn532: fix sign-compare
    driver, sdcard_spi: fix sign-compare
    tests: fix sign_compare
    sys/net, lwmac: fix sign_compare
    pkg, lwip: fix sign-compare
    boards, waspmote: make CORECLOCK unsigned long to fix sign_compare error
    tests, sock_ip: fix sign compare
    tests, msg_avail: fix sign compare
    tests, sock_udp: fix sign compare
    boards: fix sign-compare for calliope and microbit matrix
2017-11-28 11:55:48 +01:00
32c10ae2c9 core, cpu: rename thread_start_threading() -> cpu_switch_context_exit() 2017-11-16 14:40:16 +01:00
86665b71bf cpu: adapt to COREIF_NG removal 2017-11-16 14:40:16 +01:00
smlng
27c2ee50f9 cpu, atmega_common: fix returns and error codes in periph/i2c 2017-11-13 13:23:06 +01:00
Laurent Navet
9de00af063 cpu/atmega_common: add adc driver 2017-11-10 14:19:08 +01:00
a20745b6c5 cpu: make use of Makefile.periph 2017-11-06 12:01:19 +01:00
Martine Lenders
60d543ab3d
Merge pull request #7862 from roberthartung/atmega_common_fix_periph
atmega_common: renames periph for atmega_common_periph
2017-11-06 11:55:59 +01:00
Robert Hartung
491f420651 cpu/atmega_common: renames periph module 2017-11-06 11:38:26 +01:00
1e52f8d292 cpu: atmega: reorganize Makefile.features 2017-11-02 12:59:45 +01:00
lebrush
c054e38156 Merge pull request #7590 from lebrush/fix/atmega-gpio-misc
GPIO interrupt fixes for atmega328p
2017-09-15 11:59:11 +02:00
Victor Arino
6365466078 cpu/atmega_common: fix GPIO INT filter 2017-09-14 20:40:13 +02:00
Victor Arino
294594908a cpu/atmega_common: support for flank low 2017-09-14 20:40:13 +02:00
Victor Arino
650cf81e8a cpu/atmega_common: fix gpio interrupt for atmega328p 2017-09-14 20:34:11 +02:00
Robert Hartung
914025973d cpu/atmega: use power.h defines instead of direct register access 2017-09-14 14:04:14 +02:00
b2f40534b1 Merge pull request #7541 from lebrush/fix/atmega_typo
Atmega fix typo and empty space
2017-09-01 20:29:12 +02:00
dnahm
b313c02c7c Adapted to comments II 2017-08-31 16:11:34 +02:00
dnahm
fe15574c6b Adapted to comments 2017-08-31 16:11:34 +02:00
dnahm
7bab826c38 cpu/atmega_common: add i2c periph driver 2017-08-31 16:11:34 +02:00
Victor Arino
3ba2177b0d cpu/atmega_common: fix typo 2017-08-30 20:08:37 +02:00
Francisco Acosta
f2efd88f98 Merge pull request #7129 from haukepetersen/opt_periph_sharetimerset
cpu: add and use shared code for timer_set()
2017-08-01 15:09:48 +02:00
Peter Kietzmann
afbb00cca7 Merge pull request #7225 from dnahm/atmega_spi
cpu/atmega_common: adjust spi for at328p and at1281
2017-06-30 08:53:10 +02:00
dnahm
af34c87a8d cpu/atmega_common: adjust spi for at328p and at1281 2017-06-30 08:34:47 +02:00
smlng
01af6d94c4 cpu, periph: retain constness in spi_transfer_bytes 2017-06-29 15:47:13 +02:00
smlng
692cf96297 doc: fix doxygen grouping of cpu periph drivers 2017-06-26 14:42:11 +02:00
Hauke Petersen
a1499f4190 cpu: add and use shared code for timer_set() 2017-06-02 12:21:56 +02:00
0fcc7d3834 cleanup: apply headerguard script output 2017-05-24 17:54:02 +02:00
Hauke Petersen
9aad0e528f cpu: cleanup unused/umimplemented isr stack code
- removed ISR_STACKSIZE define where unused (set to 0)
- removed thread_arch_isr_stack_usage(), thread_arch_isr_stack_start(),
  and/or thread_arch_isr_stack_pointer() where not implemented
2017-05-12 18:07:08 +02:00
Martine Lenders
96e0ce8ed3 atmega_common: provide implementation for POSIX syscalls 2017-04-03 20:23:14 +02:00
Oleg Hahm
1660abdc70 doc: cpu: fix doxygen 2017-03-10 14:56:28 +01:00