Hallo,
ich will bei meinem ESP8266-12E ein PWM ausgeben. Dazu verwende ich folgenden Code:
Code:
#include "osapi.h"
#include "uart.h"
#include "pwm.h"
#include "user_interface.h"
#include "espmissingincludes.h"
#define PWM_CHANNELS 1
ICACHE_FLASH_ATTR void my_init_done_cb()
{
os_printf("done!!\n");
}
ICACHE_FLASH_ATTR void user_init()
{
// Initialize UART
uart_init(74880,74880);
struct rst_info *rtc_info = system_get_rst_info();
os_printf("reset reason: %x\n", rtc_info->reason);
uint32_t period = 5000; // * 200ns ^= 1 kHz
uint32 pwm_duty_init[PWM_CHANNELS] = {0, /*10240, 0xFFFFFFFF, 0xFFFFFFFF, 0xFFFFFFFF*/};
// PWM setup
uint32 io_info[PWM_CHANNELS][3] = {
// MUX, FUNC, PIN
{PERIPHS_IO_MUX_MTDI_U, FUNC_GPIO12, 12},
};
// initial duty: all off
pwm_init(period, pwm_duty_init, PWM_CHANNELS, io_info);
pwm_start();
// Set callback when initialization is done
system_init_done_cb(my_init_done_cb);
}
Ich verwende übrigens das nonos SDK unter Code::Blocks in der Version: esp_iot_sdk_v2.0.0
Leider bekomme ich kein PWM wie ich es erwartet hätte. Der Pin GPIO12 ist auf 0V. Und das auch nur für ca 8s. Danach scheint sich der ESP zu resetten. Das sieht dann so aus:
Code:
ets Jan 8 2013,rst cause:1, boot mode:(3,6)
load 0x40100000, len 29224, room 16
tail 8
chksum 0xee
load 0x3ffe8000, len 900, room 0
tail 4
chksum 0x1b
load 0x3ffe8390, len 384, room 4
tail 12
chksum 0x0e
csum 0x0e
rf cal sector: 1019
rf[112reset reason: 0
mode : sta(ee:ff:bb:00:66:ee)
add if0
done!!
"@⸮rjrA(⸮⸮S⸮u⸮⸮v⸮X%⸮⸮⸮P⸮juh)⸮8⸮t⸮ͪNH⸮P⸮T⸮1֡u|⸮⸮Q5⸮*M/=⸮n⸮*e"⸮hI⸮A,⸮'⸮y(E,R⸮*⸮)⸮vA,⸮5y*E⸮ n⸮*E⸮HhI⸮A,RZMmr,R⸮*5⸮⸮⸮vA-9⸮y*E⸮ n⸮*M⸮ )i⸮~⸮9bN⸮⸮(⸮vN⸮rf cal sector: 1019
rf[112reset reason: 0
mode : sta(ee:ff:bb:00:66:ee)
add if0
done!!
Nach dem "done!!" sollte eigentlich keine Ausgabe mehr erfolgen...
Das sieht irgendwie nach einem WD aus. Aber wieso schlägt der zu?
Hat jemand die PWM mit einem nonos-SDK am laufen?
Welchen DC muss ich eingeben um 100% zu erhalten? (Bei mir ist der Pin immer auf 0V!)
Danke für die Antworten,
drew
Lesezeichen