Browse Source

update

master
zhaohe 3 years ago
parent
commit
0e1e50e4b2
  1. 24
      APP/main.c
  2. 135
      APP/service/frequency_sweep_service.c
  3. 12
      APP/service/frequency_sweep_service.h
  4. 153
      APP/service/ozone_control_service.c
  5. 1
      APP/service/ozone_control_service.h
  6. 1340
      project_ozone/Listings/project_o.map
  7. 27
      project_ozone/project_o.uvgui.zel
  8. 50
      project_ozone/project_o.uvopt
  9. 5
      project_ozone/project_o.uvproj

24
APP/main.c

@ -40,11 +40,16 @@ static uint32_t compute_countdown_num(int countdowns) {
if (countdowns) return countdowns / kconst_countdown_step_s + !!(countdowns % kconst_countdown_step_s);
}
uint32_t freq = 34000;
uint32_t dutyns = 5000;
static void shutdwon() {
printf("power off\n");
thisDevice.poweron = false;
port_fan_set(false);
//@TODO:
port_ozone_pwm_stop();
port_ozone_pwm_set_duty(freq, dutyns);
}
static void increase_and_assign_countdonwnum() {
@ -53,6 +58,7 @@ static void increase_and_assign_countdonwnum() {
thisDevice.countdonwnum_s = 0;
thisDevice.countdonw_setting_num = 0;
lcs_active_input(knone_active);
thisDevice.mode = knormal;
} else {
thisDevice.countdonwnum_s = (thisDevice.countdonwnum + 1) * kconst_countdown_step_s;
thisDevice.countdonwnum = thisDevice.countdonwnum + 1;
@ -114,6 +120,8 @@ static void onkey(zkey_t* key, zkey_state_t key_state) {
if (strcmp(key->name, "timerkey") == 0 && zks_rising_edge == key_state) {
if (!thisDevice.poweron) return;
printf("on %s \n", key->name);
port_fan_set(true);
// TODO:
if (!lcs_input_is_active(kchange_countdonw_time_input)) {
lcs_active_input(kchange_countdonw_time_input);
if (thisDevice.mode != ktimingMode || thisDevice.countdonwnum_s == 0) {
@ -129,6 +137,9 @@ static void onkey(zkey_t* key, zkey_state_t key_state) {
if (strcmp(key->name, "intervalkey") == 0 && zks_rising_edge == key_state) {
if (!thisDevice.poweron) return;
printf("on %s \n", key->name);
// TODO:
port_fan_set(true);
if (!lcs_input_is_active(kchange_intermittentmode_time_input)) {
lcs_active_input(kchange_intermittentmode_time_input);
@ -351,7 +362,6 @@ void printf_ozone_freq_and_power_table() {
while (true) {
}
}
#endif
// void printf_ozone_freq_and_power_table() {
// /**
@ -462,6 +472,12 @@ void checkdevice() {
* :
*
*
*
* 1. 25k->40k之间找到谐振点
* 2. 5k的曲线
* 3. 40k往前5k曲线的斜率
*
*
*/
printf("checkdevice\r\n");
float indicator_1 = 0;
@ -532,6 +548,7 @@ void checkdevice() {
resonant_frequency = minpowerfreq;
}
}
#endif
void init_all_subdevice_state() {
port_debug_set(false);
@ -570,9 +587,8 @@ int main(void) {
* @brief
* 20k起步50hz100ms计算功率
*/
printf_ozone_freq_and_power_table();
// printf_ozone_freq_and_power_table();
// ozone_control_init();
while (true) {
//
DO_IT_EACH_MS(KEY_PERIOD) { zkey_do_loop_in_each_period(NULL); }

135
APP/service/frequency_sweep_service.c

@ -0,0 +1,135 @@
#include "frequency_sweep_service.h"
#include "zes8p5066lib/basic.h"
#include "zes8p5066lib/systicket.h"
/***********************************************************************************************************************
* ========================================================================================================= *
***********************************************************************************************************************/
typedef struct {
float LastP; // 0.02
float Now_P; // 0
float out; // 0
float Kg; // 0
float Q; // 0.001
float R; // 0.543
} KFP; // Kalman Filter parameter
// 2.
/**
*
*@param KFP *kfp
* float input
*@return
*/
float kalmanFilter(KFP* kfp, float input) {
//k时刻系统估算协方差 = k-1 +
kfp->Now_P = kfp->LastP + kfp->Q;
// = k时刻系统估算协方差 / k时刻系统估算协方差 +
kfp->Kg = kfp->Now_P / (kfp->Now_P + kfp->R);
//k时刻状态变量的最优值 = + * -
kfp->out = kfp->out + kfp->Kg * (input - kfp->out); //
//: kfp->LastP
kfp->LastP = (1 - kfp->Kg) * kfp->Now_P;
return kfp->out;
}
/***********************************************************************************************************************
* ====================================================THIS_MODULE==================================================== *
***********************************************************************************************************************/
struct {
float power_table[350];
uint16_t startfreq;
uint16_t endfreq;
uint16_t step;
bool is_schedule;
bool firstloop;
uint16_t nowfreq;
uint32_t startticket;
uint32_t dutyns;
} this;
KFP KFPConfig = {0.02, 0, 0, 0, 0.05, 0.543};
/***********************************************************************************************************************
* ====================================================PowerTable===================================================== *
***********************************************************************************************************************/
static void mf_setpower(uint16_t freq, float power) {
uint16_t index = (freq - this.startfreq) / this.step;
if (index >= ZARR_SIZE(this.power_table)) return;
this.power_table[index] = power;
}
static float mf_getpower(uint16_t freq) {
uint16_t index = (freq - this.startfreq) / this.step;
if (index >= ZARR_SIZE(this.power_table)) return 0;
if (index > (this.endfreq - this.startfreq) / this.step) {
return 0;
}
return this.power_table[index];
}
static float mf_get_ozone_power() {
float powersum = 0;
for (size_t i = 0; i < 10; i++) {
powersum += port_adc_get_ozone_generator_power();
}
return powersum / 10;
}
/***********************************************************************************************************************
* ======================================================Extern======================================================= *
***********************************************************************************************************************/
void frequency_sweep_start(uint32_t startfreq, uint32_t step, uint32_t endfreq, uint16_t dutyns) {
this.startfreq = startfreq;
this.endfreq = endfreq;
this.step = step;
this.dutyns = dutyns;
this.firstloop = true;
this.is_schedule = true;
this.startticket = systicket_get_now_ms();
this.nowfreq = this.startfreq;
printf("cls\n");
}
bool frequency_sweep_is_finished() { return !this.is_schedule; }
float frequency_sweep_get_power(uint16_t freq) { return mf_getpower(freq); }
void frequency_sweep_schedule() {
if (!this.is_schedule) {
return;
}
/// loop
if (systicket_haspassedms(this.startticket) > 1) {
/**
* @brief
*/
port_ozone_pwm_set_duty(this.nowfreq, this.dutyns);
port_ozone_pwm_start();
systicket_delay_ms(3);
/**
* @brief
*/
float power = mf_get_ozone_power();
if (this.firstloop) {
KFPConfig.LastP = power;
}
float afterfileter = kalmanFilter(&KFPConfig, power);
mf_setpower(this.nowfreq, afterfileter);
printf("%d,%f,%f\n", this.nowfreq, afterfileter, power);
/**
* @brief
*/
this.nowfreq += this.step;
if (this.nowfreq > this.endfreq) {
this.is_schedule = false;
}
port_ozone_pwm_stop();
//
this.firstloop = false;
this.startticket = systicket_get_now_ms();
}
}

12
APP/service/frequency_sweep_service.h

@ -0,0 +1,12 @@
#pragma once
#include <stdbool.h>
#include <stdint.h>
#include "port.h"
#include "thisdevice.h"
void frequency_sweep_start(uint32_t startfreq, uint32_t step, uint32_t endfreq, uint16_t dutyns);
bool frequency_sweep_is_finished();
float frequency_sweep_get_power(uint16_t freq);
void frequency_sweep_schedule();

153
APP/service/ozone_control_service.c

@ -1,82 +1,97 @@
#if 0
#include "ozone_pwm_control.h"
#include "pwm.h"
static bool s_ozone_pwm_control_enable_falg = false;
static bool s_pwm_modble_hardware_control_flag; //pwm使能标志位
#include "ozone_control_service.h"
static uint32_t s_hardware_frequency; // hz
static uint32_t s_hardware_duty; //msPWM占空比
static uint32_t s_large_period; //ms
static uint32_t s_large_duty = 100; //ms
static uint32_t begin_ticket;
#include "frequency_sweep_service.h"
#if 0
static void prv_pwm_module_set_pwm_duty(uint32_t frequencyhz, uint32_t duty) {
set_pwm_modbul_freq_duty(frequencyhz, duty);
s_pwm_modble_hardware_control_flag = true;
}
static void prv_pwm_stop(void) {
set_pwm_modbul_freq_duty(s_hardware_frequency, 0); //PWM输出
s_pwm_modble_hardware_control_flag = false;
float get_ozone_power() {
float powersum = 0;
for (size_t i = 0; i < 20; i++) {
powersum += port_adc_get_ozone_generator_power();
}
return powersum / 20;
}
static bool prv_pwm_is_enable(void) { return s_pwm_modble_hardware_control_flag; }
static void prv_update_begin_ticket(void) {
begin_ticket = get_sys_ticket(); //
static float mf_set_pwm_and_get_power(uint32_t freq, uint32_t dutyns) {
port_ozone_pwm_set_duty(freq, dutyns);
systicket_delay_ms(2);
float power1 = get_ozone_power();
return power1;
}
bool ozone_pwm_control_is_enable(void) { return s_ozone_pwm_control_enable_falg; }
bool ozone_pwm_control_hardware_is_enable(void) { return s_pwm_modble_hardware_control_flag; }
/**
* @brief 100
* 300000
* @param freq
* @param duty
*/
void ozone_pwm_control_module_set_pwm_output_1(uint32_t freqhz, uint8_t hardware_duty) {
ozone_pwm_control_module_set_pwm_output_2(freqhz, hardware_duty, 100 * 1000, 100);
}
/**
* @brief PWM
*
* @param hardware_period pwm频率
* @param hardware_duty pwm占空比
* @param large_period
* @param large_duty
*/
void ozone_pwm_control_module_set_pwm_output_2(uint32_t freqhz, uint8_t hardware_duty, uint32_t large_period, uint8_t large_duty) {
s_hardware_frequency = freqhz;
s_hardware_duty = hardware_duty;
s_large_period = large_period;
s_large_duty = large_duty;
prv_update_begin_ticket();
s_ozone_pwm_control_enable_falg = true;
prv_pwm_module_set_pwm_duty(freqhz, hardware_duty);
}
void frequency_sweep(uint32_t startfreq, uint32_t step, uint32_t endfreq, uint16_t dutyns) {
/**
* @brief
*/
s_power_table_startfreq = startfreq;
s_frequency_sweep_step = step;
s_power_table_endfreq = endfreq;
uint16_t nowfreq = startfreq;
void ozone_pwm_control_module_stop_pwm(void) { s_ozone_pwm_control_enable_falg = false; }
bool firstloop = true;
KFP KFPConfig = {0.02, 0, 0, 0, 0.03, 0.543};
void ozone_pwm_control_module_loop(void) {
static uint32_t hardware_frequency;
static uint32_t hardware_duty;
if (ozone_pwm_control_is_enable() == false) { //使退
if (prv_pwm_is_enable()) {
prv_pwm_stop();
}
return;
}
if (port_haspassedms(begin_ticket) % s_large_period <= s_large_period * s_large_duty / 100) {
if (!prv_pwm_is_enable()) {
printf("set work\r\n");
prv_pwm_module_set_pwm_duty(hardware_frequency, hardware_duty);
port_ozone_pwm_set_duty(startfreq, dutyns);
port_ozone_pwm_start();
systicket_delay_ms(3);
printf("frequency_sweep:startfreq:%d, step:%d, endfreq:%d, dutyns:%d\n", startfreq, step, endfreq, dutyns);
for (size_t i = 0; i < ARRAY_SIZE(s_power_table); i++) {
nowfreq = startfreq + i * s_frequency_sweep_step;
float power = mf_set_pwm_and_get_power(nowfreq, dutyns);
if (firstloop) {
firstloop = false;
KFPConfig.LastP = power;
}
} else {
if (prv_pwm_is_enable()) {
printf("set rest\r\n");
hardware_frequency = s_hardware_frequency; //
hardware_duty = s_hardware_duty; //
prv_pwm_stop();
float afterfileter = kalmanFilter(&KFPConfig, power);
setpower(nowfreq, power);
/**
* @brief dumptable
*/
printf("%d,%f,%f\n", nowfreq, s_power_table[i], afterfileter);
if (nowfreq >= s_power_table_endfreq) {
break;
}
}
port_ozone_pwm_stop();
}
float find_resonant_frequency(uint32_t startfreq, uint32_t endfreq) {
/**
* @brief
*/
float minpower = 0;
}
#endif
static struct { bool working; } this;
void ozone_control_init(ozone_control_config_t* config) {
/**
* @brief
*/
while (!frequency_sweep_is_finished()) {
}
}
#endif
void ozone_control_set_level(level_t level);
void ozone_control_start() {
frequency_sweep_start(
/*startfreq:*/ 20000, //
/*step :*/ 100, //
/*endfreq :*/ 40000, //
/*dutyns :*/ 5000 //
);
this.working = true;
}
void ozone_control_stop() {}
void ozone_control_schedule() {
//
frequency_sweep_schedule();
//
}

1
APP/service/ozone_control_service.h

@ -25,7 +25,6 @@ void ozone_control_start();
void ozone_control_stop();
float ozone_control_get_power();
void ozone_control_schedule();
/**

1340
project_ozone/Listings/project_o.map
File diff suppressed because it is too large
View File

27
project_ozone/project_o.uvgui.zel

@ -93,8 +93,8 @@
<flags>0</flags>
<showCmd>1</showCmd>
<MinPosition>
<xPos>-1</xPos>
<yPos>-1</yPos>
<xPos>-32000</xPos>
<yPos>-32000</yPos>
</MinPosition>
<MaxPosition>
<xPos>-1</xPos>
@ -110,8 +110,8 @@
<MDIClientArea>
<RegID>0</RegID>
<MDITabState>
<Len>268</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000001000000000000000100000048463A5C776F726B73706163655C70726F6A6563745F6F7A6F6E655F67656E657261746F725C6F7A6F6E655F67656E657261746F725F65733870353036365C4150505C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000AF010000AB0000002806000061020000</Data>
<Len>410</Len>
<Data>01000000040000000100000001000000010000000100000000000000020000000000000001000000010000000000000028000000280000000100000002000000010000000100000048463A5C776F726B73706163655C70726F6A6563745F6F7A6F6E655F67656E657261746F725C6F7A6F6E655F67656E657261746F725F65733870353036365C4150505C6D61696E2E6300000000066D61696E2E6300000000C5D4F200FFFFFFFF63463A5C776F726B73706163655C70726F6A6563745F6F7A6F6E655F67656E657261746F725C6F7A6F6E655F67656E657261746F725F65733870353036365C4150505C736572766963655C6672657175656E63795F73776565705F736572766963652E6300000000196672657175656E63795F73776565705F736572766963652E6300000000FFDC7800FFFFFFFF0100000010000000C5D4F200FFDC7800BECEA100F0A0A100BCA8E1009CC1B600F7B88600D9ADC200A5C2D700B3A6BE00EAD6A300F6FA7D00B5E99D005FC3CF00C1838300CACAD500010000000000000002000000AF010000AB0000002806000061020000</Data>
</MDITabState>
</MDIClientArea>
<ViewEx>
@ -1838,7 +1838,7 @@
<Name>Debug</Name>
<Buttons>
<Len>2373</Len>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720000000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7200000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720000000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720000000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730000000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72000000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
<Data>00200000000000001900FFFF01001100434D4643546F6F6C426172427574746F6ECC880000000000002500000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018017800000000000002600000000000000000000000000000000010000000100000001801D800000000000002700000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000001801A800000000000002800000000000000000000000000000000010000000100000001801B80000000000000290000000000000000000000000000000001000000010000000180E57F0000000000002A00000000000000000000000000000000010000000100000001801C800000000000002B00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF000000000000000000000000000100000001000000018000890000000000002C00000000000000000000000000000000010000000100000001800000000001000000FFFFFFFF0000000000000000000000000001000000010000000180E48B0000000000002D0000000000000000000000000000000001000000010000000180F07F0000000000002E0000000000000000000000000000000001000000010000000180E8880000000000003700000000000000000000000000000000010000000100000001803B010000000000002F0000000000000000000000000000000001000000010000000180BB8A00000000000030000000000000000000000000000000000100000001000000FFFF01001500434D4643546F6F6C4261724D656E75427574746F6E0E01000000000000310000000D57617463682057696E646F7773000000000000000000000000010000000100000000000000000000000100000003001380D88B00000000000031000000085761746368202631000000000000000000000000010000000100000000000000000000000100000000001380D98B00000000000031000000085761746368202632000000000000000000000000010000000100000000000000000000000100000000001380CE01000000000000FFFFFFFF0C576174636820416E63686F720100000000000000010000000000000001000000000000000000000001000000000013800F01000000000000320000000E4D656D6F72792057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380D28B00000000000032000000094D656D6F7279202631000000000000000000000000010000000100000000000000000000000100000000001380D38B00000000000032000000094D656D6F7279202632000000000000000000000000010000000100000000000000000000000100000000001380D48B00000000000032000000094D656D6F7279202633000000000000000000000000010000000100000000000000000000000100000000001380D58B00000000000032000000094D656D6F72792026340000000000000000000000000100000001000000000000000000000001000000000013801001000000000000330000000E53657269616C2057696E646F77730000000000000000000000000100000001000000000000000000000001000000040013809307000000000000330000000855415254202326310000000000000000000000000100000001000000000000000000000001000000000013809407000000000000330000000855415254202326320000000000000000000000000100000001000000000000000000000001000000000013809507000000000000330000000855415254202326330000000000000000000000000100000001000000000000000000000001000000000013809607000000000000330000001626446562756720287072696E746629205669657765720000000000000000000000000100000001000000000000000000000001000000000013803C010000000000007200000010416E616C797369732057696E646F7773000000000000000000000000010000000100000000000000000000000100000004001380658A000000000000340000000F264C6F67696320416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380DC7F0000000000003E0000001526506572666F726D616E636520416E616C797A6572000000000000000000000000010000000100000000000000000000000100000000001380E788000000000000380000000E26436F646520436F766572616765000000000000000000000000010000000100000000000000000000000100000000001380CD01000000000000FFFFFFFF0F416E616C7973697320416E63686F7201000000000000000100000000000000010000000000000000000000010000000000138053010000000000003F0000000D54726163652057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013805401000000000000FFFFFFFF115472616365204D656E7520416E63686F720100000000000000010000000000000001000000000000000000000001000000000013802901000000000000350000001553797374656D205669657765722057696E646F77730000000000000000000000000100000001000000000000000000000001000000010013804B01000000000000FFFFFFFF1453797374656D2056696577657220416E63686F720100000000000000010000000000000001000000000000000000000001000000000001800000000001000000FFFFFFFF00000000000000000000000000010000000100000013800189000000000000360000000F26546F6F6C626F782057696E646F7700000000000000000000000001000000010000000000000000000000010000000300138044C5000000000000FFFFFFFF0E5570646174652057696E646F77730100000000000000010000000000000001000000000000000000000001000000000013800000000000000400FFFFFFFF000000000000000000010000000000000001000000000000000000000001000000000013805B01000000000000FFFFFFFF12546F6F6C626F78204D656E75416E63686F72010000000000000001000000000000000100000000000000000000000100000000000000000005446562756764020000</Data>
</Buttons>
<OriginalItems>
<Len>898</Len>
@ -3603,12 +3603,21 @@
<ActiveMDIGroup>0</ActiveMDIGroup>
<MDIGroup>
<Size>100</Size>
<ActiveTab>0</ActiveTab>
<ActiveTab>1</ActiveTab>
<Doc>
<Name>..\APP\main.c</Name>
<ColumnNumber>40</ColumnNumber>
<TopLine>392</TopLine>
<CurrentLine>415</CurrentLine>
<ColumnNumber>1</ColumnNumber>
<TopLine>396</TopLine>
<CurrentLine>418</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>
</Doc>
<Doc>
<Name>..\APP\service\frequency_sweep_service.c</Name>
<ColumnNumber>0</ColumnNumber>
<TopLine>44</TopLine>
<CurrentLine>66</CurrentLine>
<Folding>1</Folding>
<ContractedFolders></ContractedFolders>
<PaneID>0</PaneID>

50
project_ozone/project_o.uvopt

@ -306,6 +306,18 @@
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
<File>
<GroupNumber>1</GroupNumber>
<FileNumber>8</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
<bDave2>0</bDave2>
<PathWithFileName>..\APP\service\frequency_sweep_service.c</PathWithFileName>
<FilenameWithoutPath>frequency_sweep_service.c</FilenameWithoutPath>
<RteFlg>0</RteFlg>
<bShared>0</bShared>
</File>
</Group>
<Group>
@ -316,7 +328,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>8</FileNumber>
<FileNumber>9</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -328,7 +340,7 @@
</File>
<File>
<GroupNumber>2</GroupNumber>
<FileNumber>9</FileNumber>
<FileNumber>10</FileNumber>
<FileType>2</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -348,7 +360,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>10</FileNumber>
<FileNumber>11</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -360,7 +372,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>11</FileNumber>
<FileNumber>12</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -372,7 +384,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>12</FileNumber>
<FileNumber>13</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -384,7 +396,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>13</FileNumber>
<FileNumber>14</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -396,7 +408,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>14</FileNumber>
<FileNumber>15</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -408,7 +420,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>15</FileNumber>
<FileNumber>16</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -420,7 +432,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>16</FileNumber>
<FileNumber>17</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -432,7 +444,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>17</FileNumber>
<FileNumber>18</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -444,7 +456,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>18</FileNumber>
<FileNumber>19</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -456,7 +468,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>19</FileNumber>
<FileNumber>20</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -468,7 +480,7 @@
</File>
<File>
<GroupNumber>3</GroupNumber>
<FileNumber>20</FileNumber>
<FileNumber>21</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -488,7 +500,7 @@
<RteFlg>0</RteFlg>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>21</FileNumber>
<FileNumber>22</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -500,7 +512,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>22</FileNumber>
<FileNumber>23</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -512,7 +524,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>23</FileNumber>
<FileNumber>24</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -524,7 +536,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>24</FileNumber>
<FileNumber>25</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -536,7 +548,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>25</FileNumber>
<FileNumber>26</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>
@ -548,7 +560,7 @@
</File>
<File>
<GroupNumber>4</GroupNumber>
<FileNumber>26</FileNumber>
<FileNumber>27</FileNumber>
<FileType>1</FileType>
<tvExp>0</tvExp>
<tvExpOptDlg>0</tvExpOptDlg>

5
project_ozone/project_o.uvproj

@ -457,6 +457,11 @@
<FileType>1</FileType>
<FilePath>..\APP\service\thisdevice.c</FilePath>
</File>
<File>
<FileName>frequency_sweep_service.c</FileName>
<FileType>1</FileType>
<FilePath>..\APP\service\frequency_sweep_service.c</FilePath>
</File>
</Files>
</Group>
<Group>

Loading…
Cancel
Save