mirror of
https://github.com/oopuuu/zTC1.git
synced 2025-12-13 05:28:14 +08:00
79 lines
2.1 KiB
C
79 lines
2.1 KiB
C
#define os_log(format, ...) custom_log("OTA", format, ##__VA_ARGS__)
|
|
#include "TimeUtils.h"
|
|
|
|
#include "mico.h"
|
|
#include "main.h"
|
|
#include "user_udp.h"
|
|
#include "user_mqtt_client.h"
|
|
#include "user_function.h"
|
|
|
|
mico_timer_t power_timer;
|
|
|
|
static uint32_t clock_count_last = 0;
|
|
static uint32_t clock_count = 0;
|
|
static uint32_t timer_count = 0;
|
|
static uint32_t timer_irq_count = 0;
|
|
|
|
static void power_timer_handler(void* arg)
|
|
{
|
|
|
|
// char pin_input = MicoGpioInputGet(POWER);
|
|
uint32_t timer = 0;
|
|
|
|
if (timer_irq_count > 1)
|
|
{
|
|
timer = (clock_count - clock_count_last);
|
|
|
|
// os_log("power_irq_handler:%09u %u %u",timer,timer_irq_count,timer_count);
|
|
if (timer_count > 3)
|
|
{
|
|
timer /= 1000;
|
|
timer += 4294967; //0xffffffff/1000;
|
|
} else if (clock_count < clock_count_last)
|
|
{
|
|
timer += 0xffffffff;
|
|
timer /= 1000;
|
|
}else timer/=1000;
|
|
power = 17100000 * (timer_irq_count - 1) / timer;
|
|
timer_count = 0;
|
|
timer_irq_count = 0;
|
|
} else
|
|
{
|
|
timer_count++;
|
|
}
|
|
|
|
// if (clock_count_last != timer_count)
|
|
// {
|
|
//// os_log("power_irq_handler:%u-%u=%u",timer_count,clock_count_last,timer);
|
|
// timer = (timer_count - clock_count_last);
|
|
// if (timer_count < clock_count_last) timer += 0xffffffff;
|
|
//
|
|
// timer = timer / 1000;
|
|
// power = 15200000 / timer;
|
|
// os_log("power_irq_handler:%u,%07u",power,timer);
|
|
// clock_count_last = timer_count;
|
|
// }
|
|
// if(timer_count==0) os_log("power_timer_handler Hight:%d",clock_count_last);
|
|
// timer_count++;
|
|
// clock_count_last=timer_count;
|
|
}
|
|
|
|
static void power_irq_handler(void* arg)
|
|
{
|
|
clock_count = mico_nanosecond_clock_value();
|
|
if (timer_irq_count == 0) clock_count_last = clock_count;
|
|
timer_irq_count++;
|
|
}
|
|
|
|
void user_power_init(void)
|
|
{
|
|
os_log("user_power_init");
|
|
|
|
MicoGpioInitialize(POWER, INPUT_PULL_UP);
|
|
mico_rtos_init_timer(&power_timer, 1000, power_timer_handler, NULL);
|
|
mico_rtos_start_timer(&power_timer);
|
|
|
|
MicoGpioEnableIRQ(POWER, IRQ_TRIGGER_FALLING_EDGE, power_irq_handler, NULL);
|
|
}
|
|
|