KW11-L esp32 functionality fix
This commit is contained in:
parent
dddb298567
commit
f6f86ba18a
3 changed files with 29 additions and 4 deletions
|
@ -4,7 +4,7 @@ src_dir = .
|
|||
|
||||
[env:ESP32]
|
||||
lib_ldf_mode = deep+
|
||||
src_filter = +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/> -<build> -<player.cpp>
|
||||
build_src_filter = +<*> -<.git/> -<.svn/> -<example/> -<examples/> -<test/> -<tests/> -<build> -<player.cpp>
|
||||
platform = espressif32
|
||||
board = wemos_d1_mini32
|
||||
framework = arduino
|
||||
|
|
26
kw11-l.cpp
26
kw11-l.cpp
|
@ -5,17 +5,31 @@
|
|||
#include "kw11-l.h"
|
||||
#include "utils.h"
|
||||
|
||||
#if defined(ESP32)
|
||||
void thread_wrapper_kw11(void *p)
|
||||
{
|
||||
kw11_l *const kw11l = reinterpret_cast<kw11_l *>(p);
|
||||
|
||||
kw11l->operator()();
|
||||
}
|
||||
#endif
|
||||
|
||||
kw11_l::kw11_l(bus *const b, console *const cnsl) : b(b), cnsl(cnsl)
|
||||
{
|
||||
#if defined(ESP32)
|
||||
xTaskCreatePinnedToCore(&thread_wrapper_kw11, "kw11-l", 2048, this, 1, nullptr, 0);
|
||||
#else
|
||||
th = new std::thread(std::ref(*this));
|
||||
#endif
|
||||
}
|
||||
|
||||
kw11_l::~kw11_l()
|
||||
{
|
||||
stop_flag = true;
|
||||
|
||||
#if !defined(ESP32)
|
||||
th->join();
|
||||
#endif
|
||||
|
||||
delete th;
|
||||
}
|
||||
|
@ -29,10 +43,18 @@ void kw11_l::operator()()
|
|||
if (b->get_lf_crs() & 64)
|
||||
b->getCpu()->queue_interrupt(6, 0100);
|
||||
|
||||
myusleep(1000000 / 50);
|
||||
#if defined(ESP32)
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#else
|
||||
myusleep(1000000 / 50); // 20ms
|
||||
#endif
|
||||
}
|
||||
else {
|
||||
myusleep(1000000 / 10);
|
||||
#if defined(ESP32)
|
||||
vTaskDelay(100 / portTICK_RATE_MS);
|
||||
#else
|
||||
myusleep(1000000 / 10); // 100ms
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
|
@ -72,7 +72,10 @@ int parity(int v)
|
|||
void myusleep(uint64_t us)
|
||||
{
|
||||
#if defined(ESP32)
|
||||
delayMicroseconds(us);
|
||||
if (us >= 1000)
|
||||
vTaskDelay(us / 1000 / portTICK_RATE_MS);
|
||||
else
|
||||
delayMicroseconds(us);
|
||||
#else
|
||||
struct timespec req;
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue