This post is older than 2 years and might not be relevant anymore
More Info: Consider searching for newer posts

nrf9160 pwm

Dear Sir.

Some problem with the PWM .

Pwm output on pin 12 is connected to a buzzer.

int pwm_init(void)
{
 
    struct device *pwm_dev = device_get_binding("PWM_0");
         
    if (!pwm_dev) {
            printk("Cannot find %s!\n", "PWM_0"); 
            SetLed(RED,ON);
            while(1) {};
            return;
    }

    if (pwm_pin_set_usec(pwm_dev,PWM_IO, 260, 130,0)) {
            printk("pwm pin set fails\n");
            SetLed(RED,ON);
            while(1) {};
            return;
    }
//    else
//       SetLed(GREEN,ON);
}
void main(void)
{
      int err;
      static unsigned int i = 0;

      k_work_init(&work_bz, bz_func);
      k_work_init(&work_spi, spi_work_func);
      k_work_init(&work_top, work_top_func);
 
    

      initStructures();
       // Ephraim 26_5_2020
       _AFE4900_AQUIRE_MODE.aquire_mode =  afe4900_aquire_sample;

      k_timer_init(&bz_timer, bz_func, NULL);
//      k_timer_start(&bz_timer, K_MSEC(TIEMR_INTERVAL_mSEC),  K_MSEC(TIEMR_INTERVAL_mSEC));
      k_timer_start(&bz_timer, K_MSEC(TIEMR_INTERVAL_SEC),  K_MSEC(TIEMR_INTERVAL_SEC));

 //     k_timer_init(&my_timer, my_expiry_function, NULL);
 //     k_timer_start(&my_timer, K_SECONDS(TIEMR_INTERVAL_SEC),  K_SECONDS(TIEMR_INTERVAL_SEC));
 
      
      io_init();
      pwm_init();
 
//      if (pwm_pin_set_usec(pwm_dev,PWM_IO, 260, 130,0)) {
//            printk("pwm pin set fails\n");
//            SetLed(RED,ON);
//            while(1) {};
//            return;
//    }
      _BZ_SM.bz_state = BZ_silence;
  
      
//        k_sleep(K_MSEC(1000));
      while(1) {
//          gpio_pin_write(dev_io, 15, 1);
//           gpio_pin_write(dev_io, 26, 1);
          k_sleep(K_MSEC(1000));
//          gpio_pin_write(dev_io, 14, 0);
//           gpio_pin_write(dev_io, 26, 0);
//           k_sleep(K_MSEC(10));
      };

When pwm_pin_set_usec(pwm_dev,PWM_IO, 260, 130,0)  is set through the pwm_init routine , I hear the buzzer after 30 to 40 seconds.

If I set the pwm_pin_set_usec(pwm_dev,PWM_IO, 260, 130,0) in the main  ( commenting out the pwm_init   pwm_pin_set_usec(pwm_dev,PWM_IO, 260, 130,0))

no sound at all

Please Advise

#
# Copyright (c) 2019 Nordic Semiconductor ASA
#
# SPDX-License-Identifier: LicenseRef-BSD-5-Clause-Nordic
#
# General config
CONFIG_TEST_RANDOM_GENERATOR=y
 
#CONFIG_UART_CONSOLE=n
#CONFIG_RTT_CONSOLE=y
#CONFIG_USE_SEGGER_RTT=y

# debug
#CONFIG_NET_LOG=y
#CONFIG_MQTT_LOG_LEVEL_DBG=y
CONFIG_NEWLIB_LIBC=y

# Networking
CONFIG_NETWORKING=y
CONFIG_NET_NATIVE=n
CONFIG_NET_SOCKETS_OFFLOAD=y
CONFIG_NET_SOCKETS=y
CONFIG_NET_SOCKETS_POSIX_NAMES=y

# LTE link control
CONFIG_LTE_LINK_CONTROL=y
CONFIG_LTE_AUTO_INIT_AND_CONNECT=n

# BSD library
CONFIG_BSD_LIBRARY=y

# AT Host
CONFIG_UART_INTERRUPT_DRIVEN=y
CONFIG_AT_HOST_LIBRARY=y

# MQTT
CONFIG_MQTT_LIB=y
CONFIG_MQTT_LIB_TLS=n

# Appliaction
CONFIG_MQTT_PUB_TOPIC="ES_pub"
CONFIG_MQTT_SUB_TOPIC="ES"
CONFIG_MQTT_CLIENT_ID="my-client-id"
CONFIG_MQTT_BROKER_HOSTNAME="172.104.219.222"
CONFIG_MQTT_BROKER_PORT=1883

# ADC
#CONFIG_ADC = y
#CONFIG_ADC_0 = y
#CONFIG_ADC_NRFX_SAADC = y

# UART
#CONFIG_UART_1_NRF_UARTE = y

#CONFIG_UART_1 = y
#CONFIG_AT_HOST_UART = 1


# SPI
CONFIG_SPI=y
CONFIG_SPI_3=y
CONFIG_SPI_3_NRF_SPIM=y
CONFIG_SPI_1=y
CONFIG_SPI_1_NRF_SPIM=y
CONFIG_SPI_NRFX=y

#CONFIG_SPI_ASYNC = n

# IO
CONFIG_GPIO=y

# PWM
CONFIG_PWM=y

# I2C
CONFIG_I2C=y
CONFIG_I2C_NRFX=y
CONFIG_I2C_2=y
CONFIG_I2C_2_NRF_TWIM=y
CONFIG_I2C_INIT_PRIORITY=60



#CONFIG_MAIN_STACK_SIZE=4096

# Main thread
CONFIG_MAIN_THREAD_PRIORITY=7
CONFIG_MAIN_STACK_SIZE=8192

CONFIG_HEAP_MEM_POOL_SIZE=4096

Parents Reply Children
No Data
Related