Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Fix platforms/avr/drivers/ws2812.c #17043

Merged
merged 2 commits into from
May 18, 2022
Merged

Fix platforms/avr/drivers/ws2812.c #17043

merged 2 commits into from
May 18, 2022

Commits on May 9, 2022

  1. Fix platforms/avr/drivers/ws2812.c

    `platforms/avr/drivers/ws2812.c` has been changed to use `DDRx_ADDRESS()` and `PORTx_ADDRESS()` instead of `_SFR_IO8()` in qmk#8646.  To use them, `#include <pin_defs.h>` is required.
    
     ## Error Log
    * create new keyboard
    ```shell
    bash-3.2$ qmk new-keyboard
    Ψ Generating a new QMK keyboard directory
    
    Name Your Keyboard Project
    For more infomation, see:
    https://docs.qmk.fm/#/hardware_keyboard_guidelines?id=naming-your-keyboardproject
    
    Keyboard Name? ws2812_test
    ..................................
         36. WB32F3G71
    Please enter your choice:  [12]
    Ψ Created a new keyboard called ws2812_test.
    Ψ To start working on things, `cd` into keyboards/ws2812_test,
    Ψ or open the directory in your preferred text editor.
    Ψ And build with qmk compile -kb ws2812_test -km default.
    ```
    * Enable RGBLIGHT.
    ```shell
    bash-3.2$ echo RGBLIGHT_ENABLE=yes >> ./keyboards/ws2812_test/rules.mk
    bash-3.2$ echo '#define RGB_DI_PIN B1' >> ./keyboards/ws2812_test/config.h
    bash-3.2$ echo '#define RGBLED_NUM 6' >> ./keyboards/ws2812_test/config.h
    ```
    * Compile
    ```shell
    bash-3.2$ make ws2812_test:default
    
    QMK Firmware 0.16.9
    Making ws2812_test with keymap default
    
    avr-gcc (Homebrew AVR GCC 8.4.0_2) 8.4.0
    Copyright (C) 2018 Free Software Foundation, Inc.
    This is free software; see the source for copying conditions.  There is NO
    warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
    
    .....................
    Compiling: quantum/process_keycode/process_rgb.c                                                    [OK]
    Compiling: platforms/avr/drivers/ws2812.c                                                          platforms/avr/drivers/ws2812.c: In function 'ws2812_setleds':
    platforms/avr/drivers/ws2812.c:40:5: error: implicit declaration of function 'DDRx_ADDRESS' [-Werror=implicit-function-declaration]
         DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
         ^~~~~~~~~~~~
    In file included from <command-line>:
    ./keyboards/ws2812_test/config.h:21:20: error: 'B1' undeclared (first use in this function); did you mean 'PB1'?
     #define RGB_DI_PIN B1
                        ^~
    platforms/avr/drivers/ws2812.c:40:18: note: in expansion of macro 'RGB_DI_PIN'
         DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
                      ^~~~~~~~~~
    ./keyboards/ws2812_test/config.h:21:20: note: each undeclared identifier is reported only once for each function it appears in
     #define RGB_DI_PIN B1
                        ^~
    platforms/avr/drivers/ws2812.c:40:18: note: in expansion of macro 'RGB_DI_PIN'
         DDRx_ADDRESS(RGB_DI_PIN) |= pinmask(RGB_DI_PIN);
                      ^~~~~~~~~~
    platforms/avr/drivers/ws2812.c:42:47: error: implicit declaration of function 'PORTx_ADDRESS' [-Werror=implicit-function-declaration]
         uint8_t masklo = ~(pinmask(RGB_DI_PIN)) & PORTx_ADDRESS(RGB_DI_PIN);
                                                   ^~~~~~~~~~~~~
    In file included from /usr/local/Cellar/avr-gcc@8/8.4.0_2/avr/include/avr/io.h:99,
                     from /usr/local/Cellar/avr-gcc@8/8.4.0_2/avr/include/avr/interrupt.h:38,
                     from platforms/avr/drivers/ws2812.c:24:
    platforms/avr/drivers/ws2812.c: In function 'ws2812_sendarray_mask':
    ./keyboards/ws2812_test/config.h:21:20: error: 'B1' undeclared (first use in this function); did you mean 'PB1'?
     #define RGB_DI_PIN B1
                        ^~
    platforms/avr/drivers/ws2812.c:167:69: note: in expansion of macro 'RGB_DI_PIN'
                          : "r"(curbyte), "I"(_SFR_IO_ADDR(PORTx_ADDRESS(RGB_DI_PIN))), "r"(maskhi), "r"(masklo));
                                                                         ^~~~~~~~~~
    cc1: all warnings being treated as errors
     [ERRORS]
     |
     |
     |
    make[1]: *** [.build/obj_ws2812_test_default/ws2812.o] Error 1
    make: *** [ws2812_test:default] Error 1
    Make finished with errors
    ```
    mtei committed May 9, 2022
    Configuration menu
    Copy the full SHA
    dd1b2a8 View commit details
    Browse the repository at this point in the history

Commits on May 18, 2022

  1. change include order

    mtei committed May 18, 2022
    Configuration menu
    Copy the full SHA
    bec5ffb View commit details
    Browse the repository at this point in the history