Code:
TCCR0A = (1 << COM0A1) | (1 << WGM00); // phase correct PWM mode
OCR0A = 0x00; // initial PWM pulse width set to nothing
TCCR0B = (1 << CS01); // clock source = CLK/8, start PWM
for(int i=0;i<=0xff;i++)
{
OCR0A = i; //Starts rolling PWM from 0 to 100%
}
Code:
//PIN SETTINGS FOR PWM
#define PWM_D6_OUT_IO_MUX PERIPHS_IO_MUX_MTDI_U
#define PWM_D6_OUT_IO_NUM 12
#define PWM_D6_OUT_IO_FUNC FUNC_GPIO12
#define PWM_D7_OUT_IO_MUX PERIPHS_IO_MUX_MTCK_U
#define PWM_D7_OUT_IO_NUM 13
#define PWM_D7_OUT_IO_FUNC FUNC_GPIO13
#define PWM_D5_OUT_IO_MUX PERIPHS_IO_MUX_MTMS_U
#define PWM_D5_OUT_IO_NUM 14
#define PWM_D5_OUT_IO_FUNC FUNC_GPIO14
#define PWM_D8_OUT_IO_MUX PERIPHS_IO_MUX_MTDO_U
#define PWM_D8_OUT_IO_NUM 15
#define PWM_D8_OUT_IO_FUNC FUNC_GPIO15
#define PWM_D2_OUT_IO_MUX PERIPHS_IO_MUX_GPIO4_U
#define PWM_D2_OUT_IO_NUM 4
#define PWM_D2_OUT_IO_FUNC FUNC_GPIO4
#define PWM_CHANNELS 1 //number of PWM Channels
void ICACHE_FLASH_ATTR PWM()
{
os_printf("[%s]\n", __func__);
uint32_t i = 0;
const uint32_t period = 100000; // * 200ns ^= 1 kHz
// PWM setup
uint32_t io_info[PWM_CHANNELS][3] = {
// { PWM_D6_OUT_IO_MUX, PWM_D6_OUT_IO_FUNC, PWM_D6_OUT_IO_NUM }, //Channel 0
// { PWM_D7_OUT_IO_MUX, PWM_D7_OUT_IO_FUNC, PWM_D7_OUT_IO_NUM }, //Channel 1
{ PWM_D5_OUT_IO_MUX, PWM_D5_OUT_IO_FUNC, PWM_D5_OUT_IO_NUM }, //Channel 2
//{ PWM_D8_OUT_IO_MUX, PWM_D8_OUT_IO_FUNC, PWM_D8_OUT_IO_NUM }, //Channel 3
//{ PWM_D2_OUT_IO_MUX, PWM_D2_OUT_IO_FUNC, PWM_D2_OUT_IO_NUM }, //Channel 4
};
// initial duty: all off
//uint32_t pwm_duty_init[PWM_CHANNELS] = {0, 0, 0, 0, 0};
uint32_t pwm_duty_init[PWM_CHANNELS] = {0};
pwm_init(period, pwm_duty_init, PWM_CHANNELS, io_info);
pwm_start();
/*
while(true)
{
for (i = 1; i < 250; i++) {
os_printf("PWM: %d\r\n", i);
pwm_set_duty(i, 0);
pwm_start();
system_soft_wdt_feed();
delay_second();
i += 10;
}
system_soft_wdt_feed();
}
*/
os_printf("PWM: Returning\r\n");
return;
}
Statistics: Posted by AgentSmithers — Fri Nov 24, 2017 11:05 am