/* Very basic example to test the dsm library * Led intensity from module will change over time. * * Part of esp-open-rtos * Copyright (C) 2018 zaltora (https://github.com/Zaltora) * BSD Licensed as described in the file LICENSE */ #include "espressif/esp_common.h" #include "esp/uart.h" #include "FreeRTOS.h" #include "task.h" #include "dsm.h" #define TEST_WITH_160MHZ (0) #define DSM_PIN (2) void task1(void *pvParameters) { uint32_t const init_count = 0; uint32_t count = init_count; while(1) { vTaskDelay(100/portTICK_PERIOD_MS); printf("Target set to %3u, ", count); //Freq = (80,000,000/prescale) * (target / 256) HZ (0 < target < 128) //Freq = (80,000,000/prescale) * ((256 - target) / 256) HZ (128 < target < 256) if (count < 128) { printf("Freqency: %.1f Hz\r\n", (80000000.0/255.0 * (count/ 256.0))); } else { printf("Freqency: %.1f Hz\r\n", 80000000.0/255.0 * ((256.0-count)/ 256.0)); } dsm_set_target(count); count++; if (count > UINT8_MAX) count = init_count; } } void user_init(void) { uint8_t pins[1]; uart_set_baud(0, 115200); #if (TEST_WITH_160MHZ) sdk_system_update_cpu_freq(160); #endif printf("SDK version:%s\r\n", sdk_system_get_sdk_version()); pins[0] = DSM_PIN; /* register pin to use with DSM */ dsm_init(1, pins); /* Set prescale to FF to get a proper signal */ dsm_set_prescale(0xFF); /* Target initial */ dsm_set_target(0); /* start dsm to pin */ dsm_start(); printf("dsm start\r\n"); xTaskCreate(task1, "tsk1", 256, NULL, 2, NULL); }