Jacob,Check nrf5_sdk/components/libraries/pwm for soft-pwm implementation by NordicSemi. IMO, this is a good start point.
BR, Andrey On 15.05.2017 00:24, Jacob Rosenthal wrote:
So a soft pwm on top of one of the free timers sounds like the best way to proceed... On Sun, May 14, 2017 at 2:20 PM, will sanfilippo <wi...@runtime.io> wrote:There are other timers you could use; you do not need to use the low power timer. A callout would not be a good idea imo.On May 14, 2017, at 1:35 PM, Jacob Rosenthal <jakerosent...@gmail.com>wrote:Looks like lfclk is now used for low power mode you added, so maybe thats not a good solution either. I wonder how decent a soft pwm with just callouts could be. On Sun, May 14, 2017 at 10:25 AM, will sanfilippo <wi...@runtime.io>wrote:Not quite sure myself off the top of my head. I am not the best newttoolperson. I can try to take a look at it later today if you cant figure it out before then.On May 14, 2017, at 10:00 AM, Jacob Rosenthal <jakerosent...@gmail.comwrote:Good point. Ive obviously seen pwm implementaitons on nrf51 many times.Imguessing theyre using the 'low power pwm" driver I stumbled across that appears to be using the lfclk https://infocenter.nordicsemi.com/index.jsp?topic=%2Fcom.nordic.infocenter.sdk51.v10.0.0%2Flow_power_pwm_example.htmlSameish question, I tried to port that example with the same problem,Imhaving trouble figuring out how to get newt to see the SDK files I tried adding low_power_pwm to ign_files and src_dirs pkg.ign_files.BSP_NRF51: - "nrf_saadc.c" - "nrf_drv_saadc.c" - "nrf_drv_comp.c" - "nrf_drv_i2s.c" - "nrf_drv_pdm.c" - "nrf_drv_pwm.c" - "nrf_drv_spis.c" - "nrf_drv_twis.c" - "spi_5W_master.c" - "pstorage*" - "sdk_mapped_flags.c" - "low_power_pwm.c" pkg.ign_dirs: - "deprecated" pkg.src_dirs: - "src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/" - "src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/fifo/" - "src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/util/" - "src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/low_power_pwm/"Error: /Users/jacobrosenthal/Downloads/chippd3/bin/targets/split-central-misfit-flash/app/hw/drivers/lf_pwm/hw_ drivers_lf_pwm.a(lf_pwm.o):In function `low_power_init': /Users/jacobrosenthal/Downloads/chippd3/repos/mynewt-nordic/hw/drivers/lf_pwm/src/lf_pwm.c:127:undefined reference to `low_power_pwm_init' /Users/jacobrosenthal/Downloads/chippd3/repos/mynewt-nordic/hw/drivers/lf_pwm/src/lf_pwm.c:129:undefined reference to `low_power_pwm_duty_set' /Users/jacobrosenthal/Downloads/chippd3/repos/mynewt-nordic/hw/drivers/lf_pwm/src/lf_pwm.c:154:undefined reference to `low_power_pwm_start' /Users/jacobrosenthal/Downloads/chippd3/bin/targets/split-central-misfit-flash/app/hw/drivers/lf_pwm/hw_ drivers_lf_pwm.a(lf_pwm.o):In function `lf_pwm_init': /Users/jacobrosenthal/Downloads/chippd3/repos/mynewt-nordic/hw/drivers/lf_pwm/src/lf_pwm.c:182:undefined reference to `app_timer_init' collect2: error: ld returned 1 exit status On Sun, May 14, 2017 at 9:00 AM, will sanfilippo <wi...@runtime.io>wrote:Jacob: Does the nrf51 have a PWM peripheral? I do not think it does. I lookedatthe chip spec and nrf51.h and there is no PWM peripheral like thenrf52ineither.On May 13, 2017, at 7:46 PM, Jacob Rosenthal <jakerosent...@gmail.com>wrote:Im attempting to write a pwm api and nrf51 driver. Im mostly juststubbingright now based on the adc driver, and have mynewt pwm driverstubbed,andam now stubbing mynewt_nordic/hw/drivers/pwm_nrf51 which includes nrf_drv_pwm.h and nrf_pwm.h from the sdk but thats giving tons oferrors.Maybe something needs to be added to the mcu/nordic_sdk? Error: In file included from repos/apache-mynewt-core/libc/baselibc/include/inttypes.h:10:0, from repos/apache-mynewt-core/hw/hal/include/hal/hal_bsp.h:27, from repos/mynewt-nordic/hw/drivers/pwm/pwm_nrf51/src/pwm_nrf51.c:19: repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:56:39:error: unknown type name 'NRF_PWM_Type' NRF_PWM_TASK_STOP = offsetof(NRF_PWM_Type, TASKS_STOP), ///< Stops PWM pulse generation on all channels at the end of thecurrentPWM period, and stops the sequence playback. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:57:39:error: unknown type name 'NRF_PWM_Type' NRF_PWM_TASK_SEQSTART0 = offsetof(NRF_PWM_Type, TASKS_SEQSTART[0]), ///< Starts playback of sequence 0. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:58:39:error: unknown type name 'NRF_PWM_Type' NRF_PWM_TASK_SEQSTART1 = offsetof(NRF_PWM_Type, TASKS_SEQSTART[1]), ///< Starts playback of sequence 1. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:59:39:error: unknown type name 'NRF_PWM_Type' NRF_PWM_TASK_NEXTSTEP = offsetof(NRF_PWM_Type, TASKS_NEXTSTEP) ///< Steps by one value in the current sequence if the decoder is setto@ref NRF_PWM_STEP_TRIGGERED mode. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:69:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_STOPPED = offsetof(NRF_PWM_Type,EVENTS_STOPPED),///< Response to STOP task, emitted when PWM pulses are no longer generated. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:70:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_SEQSTARTED0 = offsetof(NRF_PWM_Type, EVENTS_SEQSTARTED[0]), ///< First PWM period started on sequence 0. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:71:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_SEQSTARTED1 = offsetof(NRF_PWM_Type, EVENTS_SEQSTARTED[1]), ///< First PWM period started on sequence 1. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:72:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_SEQEND0 = offsetof(NRF_PWM_Type,EVENTS_SEQEND[0]),///< Emitted at the end of every sequence 0 when its last value has been read from RAM. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:73:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_SEQEND1 = offsetof(NRF_PWM_Type,EVENTS_SEQEND[1]),///< Emitted at the end of every sequence 1 when its last value has been read from RAM. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:74:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_PWMPERIODEND = offsetof(NRF_PWM_Type, EVENTS_PWMPERIODEND), ///< Emitted at the end of each PWM period. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:75:43:error: unknown type name 'NRF_PWM_Type' NRF_PWM_EVENT_LOOPSDONE = offsetof(NRF_PWM_Type,EVENTS_LOOPSDONE)///< Concatenated sequences have been played the requested number of times. ^ In file included from repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:30:0,from repos/mynewt-nordic/hw/drivers/pwm/pwm_nrf51/src/pwm_nrf51.c:33: repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:84:37:error: 'PWM_INTENSET_STOPPED_Msk' undeclared here (not in a function) NRF_PWM_INT_STOPPED_MASK = PWM_INTENSET_STOPPED_Msk, ///< Interrupt on STOPPED event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:85:37:error: 'PWM_INTENSET_SEQSTARTED0_Msk' undeclared here (not in afunction)NRF_PWM_INT_SEQSTARTED0_MASK = PWM_INTENSET_SEQSTARTED0_Msk, ///< Interrupt on SEQSTARTED[0] event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:86:37:error: 'PWM_INTENSET_SEQSTARTED1_Msk' undeclared here (not in afunction)NRF_PWM_INT_SEQSTARTED1_MASK = PWM_INTENSET_SEQSTARTED1_Msk, ///< Interrupt on SEQSTARTED[1] event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:87:37:error: 'PWM_INTENSET_SEQEND0_Msk' undeclared here (not in a function) NRF_PWM_INT_SEQEND0_MASK = PWM_INTENSET_SEQEND0_Msk, ///< Interrupt on SEQEND[0] event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:88:37:error: 'PWM_INTENSET_SEQEND1_Msk' undeclared here (not in a function) NRF_PWM_INT_SEQEND1_MASK = PWM_INTENSET_SEQEND1_Msk, ///< Interrupt on SEQEND[1] event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:89:37:error: 'PWM_INTENSET_PWMPERIODEND_Msk' undeclared here (not in afunction)NRF_PWM_INT_PWMPERIODEND_MASK = PWM_INTENSET_PWMPERIODEND_Msk, ///< Interrupt on PWMPERIODEND event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:90:37:error: 'PWM_INTENSET_LOOPSDONE_Msk' undeclared here (not in afunction)NRF_PWM_INT_LOOPSDONE_MASK = PWM_INTENSET_LOOPSDONE_Msk ///< Interrupt on LOOPSDONE event. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:98:46:error: 'PWM_SHORTS_SEQEND0_STOP_Msk' undeclared here (not in afunction)NRF_PWM_SHORT_SEQEND0_STOP_MASK =PWM_SHORTS_SEQEND0_STOP_Msk,///< Shortcut between SEQEND[0] event and STOP task. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:99:46:error: 'PWM_SHORTS_SEQEND1_STOP_Msk' undeclared here (not in afunction)NRF_PWM_SHORT_SEQEND1_STOP_MASK =PWM_SHORTS_SEQEND1_STOP_Msk,///< Shortcut between SEQEND[1] event and STOP task. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:100:46:error: 'PWM_SHORTS_LOOPSDONE_SEQSTART0_Msk' undeclared here (not inafunction) NRF_PWM_SHORT_LOOPSDONE_SEQSTART0_MASK = PWM_SHORTS_LOOPSDONE_SEQSTART0_Msk, ///< Shortcut between LOOPSDONEeventand SEQSTART[0] task. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:101:46:error: 'PWM_SHORTS_LOOPSDONE_SEQSTART1_Msk' undeclared here (not inafunction) NRF_PWM_SHORT_LOOPSDONE_SEQSTART1_MASK = PWM_SHORTS_LOOPSDONE_SEQSTART1_Msk, ///< Shortcut between LOOPSDONEeventand SEQSTART[1] task. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:102:46:error: 'PWM_SHORTS_LOOPSDONE_STOP_Msk' undeclared here (not in afunction)NRF_PWM_SHORT_LOOPSDONE_STOP_MASK =PWM_SHORTS_LOOPSDONE_STOP_Msk///< Shortcut between LOOPSDONE event and STOP task. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:110:32:error: 'PWM_MODE_UPDOWN_Up' undeclared here (not in a function) NRF_PWM_MODE_UP = PWM_MODE_UPDOWN_Up, ///< Upcounter(edge-aligned PWM duty cycle). ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:111:32:error: 'PWM_MODE_UPDOWN_UpAndDown' undeclared here (not in afunction)NRF_PWM_MODE_UP_AND_DOWN = PWM_MODE_UPDOWN_UpAndDown, ///< Up anddowncounter (center-aligned PWM duty cycle). ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:119:26:error: 'PWM_PRESCALER_PRESCALER_DIV_1' undeclared here (not in afunction)NRF_PWM_CLK_16MHz = PWM_PRESCALER_PRESCALER_DIV_1, ///< 16 MHz /1=16 MHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:120:26:error: 'PWM_PRESCALER_PRESCALER_DIV_2' undeclared here (not in afunction)NRF_PWM_CLK_8MHz = PWM_PRESCALER_PRESCALER_DIV_2, ///< 16 MHz /2=8 MHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:121:26:error: 'PWM_PRESCALER_PRESCALER_DIV_4' undeclared here (not in afunction)NRF_PWM_CLK_4MHz = PWM_PRESCALER_PRESCALER_DIV_4, ///< 16 MHz /4=4 MHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:122:26:error: 'PWM_PRESCALER_PRESCALER_DIV_8' undeclared here (not in afunction)NRF_PWM_CLK_2MHz = PWM_PRESCALER_PRESCALER_DIV_8, ///< 16 MHz /8=2 MHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:123:26:error: 'PWM_PRESCALER_PRESCALER_DIV_16' undeclared here (not in afunction)NRF_PWM_CLK_1MHz = PWM_PRESCALER_PRESCALER_DIV_16, ///< 16 MHz /16= 1 MHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:124:26:error: 'PWM_PRESCALER_PRESCALER_DIV_32' undeclared here (not in afunction)NRF_PWM_CLK_500kHz = PWM_PRESCALER_PRESCALER_DIV_32, ///< 16 MHz /32= 500 kHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:125:26:error: 'PWM_PRESCALER_PRESCALER_DIV_64' undeclared here (not in afunction)NRF_PWM_CLK_250kHz = PWM_PRESCALER_PRESCALER_DIV_64, ///< 16 MHz /64= 250 kHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:126:26:error: 'PWM_PRESCALER_PRESCALER_DIV_128' undeclared here (not in afunction)NRF_PWM_CLK_125kHz = PWM_PRESCALER_PRESCALER_DIV_128 ///< 16 MHz /128= 125 kHz. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:137:31:error: 'PWM_DECODER_LOAD_Common' undeclared here (not in a function) NRF_PWM_LOAD_COMMON = PWM_DECODER_LOAD_Common, ///< 1sthalfword (16-bit) used in all PWM channels (0-3). ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:138:31:error: 'PWM_DECODER_LOAD_Grouped' undeclared here (not in a function) NRF_PWM_LOAD_GROUPED = PWM_DECODER_LOAD_Grouped, ///< 1sthalfword (16-bit) used in channels 0 and 1; 2nd word in channels 2 and 3. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:139:31:error: 'PWM_DECODER_LOAD_Individual' undeclared here (not in afunction)NRF_PWM_LOAD_INDIVIDUAL = PWM_DECODER_LOAD_Individual, ///< 1sthalfword (16-bit) used in channel 0; 2nd in channel 1; 3rd in channel 2;4thinchannel 3. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:140:31:error: 'PWM_DECODER_LOAD_WaveForm' undeclared here (not in afunction)NRF_PWM_LOAD_WAVE_FORM = PWM_DECODER_LOAD_WaveForm ///< 1sthalfword (16-bit) used in channel 0; 2nd in channel 1; ... ; 4th as thetopvalue for the pulse generator counter. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:151:30:error: 'PWM_DECODER_MODE_RefreshCount' undeclared here (not in afunction)NRF_PWM_STEP_AUTO = PWM_DECODER_MODE_RefreshCount, ///< Automatically after the current value is played and repeated therequestednumber of times. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:152:30:error: 'PWM_DECODER_MODE_NextStep' undeclared here (not in afunction)NRF_PWM_STEP_TRIGGERED = PWM_DECODER_MODE_NextStep ///< Whenthe@ref NRF_PWM_TASK_NEXTSTEP task is triggered. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:255:43:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_task_trigger(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:266:64:error: expected ')' before 'const' __STATIC_INLINE uint32_t nrf_pwm_task_address_get(NRF_PWM_Typeconst *p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:275:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_event_clear(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:287:55:error: expected ')' before 'const' __STATIC_INLINE bool nrf_pwm_event_check(NRF_PWM_Type const * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:298:65:error: expected ')' before 'const' __STATIC_INLINE uint32_t nrf_pwm_event_address_get(NRF_PWM_Typeconst*p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:307:44:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_shorts_enable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:316:45:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_shorts_disable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:325:41:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_shorts_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:334:41:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_int_enable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:343:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_int_disable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:352:38:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_int_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:364:60:error: expected ')' before 'const' __STATIC_INLINE bool nrf_pwm_int_enable_check(NRF_PWM_Type const *p_pwm,^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:372:37:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_enable(NRF_PWM_Type * p_pwm); ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:379:38:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_disable(NRF_PWM_Type * p_pwm); ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:391:39:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_pins_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:402:40:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_configure(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:414:43:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_sequence_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:426:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_ptr_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:438:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_cnt_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:450:46:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_refresh_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:462:48:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_end_delay_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:474:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_decoder_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:488:39:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_loop_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:494:43:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_task_trigger(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:500:64:error: expected ')' before 'const' __STATIC_INLINE uint32_t nrf_pwm_task_address_get(NRF_PWM_Typeconst *p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:506:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_event_clear(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:512:55:error: expected ')' before 'const' __STATIC_INLINE bool nrf_pwm_event_check(NRF_PWM_Type const * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:518:65:error: expected ')' before 'const' __STATIC_INLINE uint32_t nrf_pwm_event_address_get(NRF_PWM_Typeconst*p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:524:44:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_shorts_enable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:530:45:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_shorts_disable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:536:41:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_shorts_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:542:41:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_int_enable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:548:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_int_disable(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:554:38:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_int_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:560:60:error: expected ')' before 'const' __STATIC_INLINE bool nrf_pwm_int_enable_check(NRF_PWM_Type const *p_pwm,^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:566:37:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_enable(NRF_PWM_Type * p_pwm) ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:571:38:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_disable(NRF_PWM_Type * p_pwm) ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:576:39:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_pins_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:586:40:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_configure(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:598:43:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_sequence_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:610:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_ptr_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:619:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_cnt_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:629:46:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_refresh_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:638:48:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_seq_end_delay_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:647:42:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_decoder_set(NRF_PWM_Type * p_pwm, ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/hal/nrf_pwm.h:655:39:error: unknown type name 'NRF_PWM_Type' __STATIC_INLINE void nrf_pwm_loop_set(NRF_PWM_Type * p_pwm, ^ In file included from repos/mynewt-nordic/hw/drivers/pwm/pwm_nrf51/src/pwm_nrf51.c:33:0: repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:43:5:error: unknown type name 'NRF_PWM_Type' NRF_PWM_Type * p_registers; ///< Pointer to the structure with PWM peripheral instance registers. ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_step': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:369:5:error: implicit declaration of function 'nrf_pwm_task_trigger' [-Werror=implicit-function-declaration] nrf_pwm_task_trigger(p_instance->p_registers,NRF_PWM_TASK_NEXTSTEP);^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_sequence_update': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:377:5:error: implicit declaration of function 'nrf_pwm_sequence_set' [-Werror=implicit-function-declaration] nrf_pwm_sequence_set(p_instance->p_registers, seq_id, p_sequence); ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_sequence_values_update': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:385:5:error: implicit declaration of function 'nrf_pwm_seq_ptr_set' [-Werror=implicit-function-declaration] nrf_pwm_seq_ptr_set(p_instance->p_registers, seq_id,values.p_raw);^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_sequence_length_update': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:393:5:error: implicit declaration of function 'nrf_pwm_seq_cnt_set' [-Werror=implicit-function-declaration] nrf_pwm_seq_cnt_set(p_instance->p_registers, seq_id, length); ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_sequence_repeats_update': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:401:5:error: implicit declaration of function 'nrf_pwm_seq_refresh_set' [-Werror=implicit-function-declaration] nrf_pwm_seq_refresh_set(p_instance->p_registers, seq_id, repeats); ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_sequence_end_delay_update': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:409:5:error: implicit declaration of function 'nrf_pwm_seq_end_delay_set' [-Werror=implicit-function-declaration] nrf_pwm_seq_end_delay_set(p_instance->p_registers, seq_id,end_delay);^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_task_address_get': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:416:5:error: implicit declaration of function 'nrf_pwm_task_address_get' [-Werror=implicit-function-declaration] return nrf_pwm_task_address_get(p_instance->p_registers, task); ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:In function 'nrf_drv_pwm_event_address_get': repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:423:5:error: implicit declaration of function 'nrf_pwm_event_address_get' [-Werror=implicit-function-declaration] return nrf_pwm_event_address_get(p_instance->p_registers, event); ^ In file included from repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/util/app_error.h:30:0,from repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/util/nrf_assert.h:19,from repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/util/app_util_platform.h:36,from repos/mynewt-nordic/hw/drivers/pwm/pwm_nrf51/src/pwm_nrf51.c:32: repos/mynewt-nordic/hw/drivers/pwm/pwm_nrf51/src/pwm_nrf51.c: At toplevel:repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/drivers_nrf/pwm/nrf_drv_pwm.h:52:30:error: 'NRF_PWM0' undeclared here (not in a function) .p_registers = CONCAT_2(NRF_PWM, id), \ ^ repos/mynewt-nordic/hw/mcu/nordic_sdk/src/ext/nRF5_SDK_11.0.0_89a8197/components/libraries/util/nordic_common.h:44:31:note: in definition of macro 'CONCAT_2' #define CONCAT_2(p1, p2) p1##p2 ^ repos/mynewt-nordic/hw/drivers/pwm/pwm_nrf51/src/pwm_nrf51.c:41:31:note:in expansion of macro 'NRF_DRV_PWM_INSTANCE' static nrf_drv_pwm_t m_pwm0 = NRF_DRV_PWM_INSTANCE(0); ^ cc1: all warnings being treated as errors