123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261 |
- #include "generation.h"
- /* Default values of client's registers
- * f1: 16kHz
- * D1: 49.2%
- * Ph2: 0.0
- * D2: 49.2%
- * Ph3: 0.0
- * f3: 1.15MHz
- * N3: 10 impules
- * D3: 4%
- */
- void init_params(tweaked_params_s * pParams) {
- pParams->f1 = 16000;
- pParams->D1 = 0.492 * FXP_SCALING;//49.2 %
- pParams->D2 = 0.492 * FXP_SCALING;//49.2 %
- pParams->Ph2 = 0.00 * FXP_SCALING;
- pParams->Ph3 = 0.00 * FXP_SCALING;
- pParams->f3 = 1150000;
- pParams->D3 = 40;//4%
- pParams->N3 = 10;
- pParams->ena = ENABLE_FORCE_NONE;
- pParams->_period1 = DIV_ROUND(BASE_FREQ, pParams->f1);
- pParams->_duty1 = pParams->_period1 * pParams->D1 / FXP_SCALING;
- pParams->_duty2 = pParams->_period1 * pParams->D2 / FXP_SCALING;
- pParams->_phase2 = pParams->Ph2 * pParams->_period1 / FXP_SCALING;
- pParams->_period3 = DIV_ROUND(BASE_FREQ, pParams->f3);
- }
- void validate_generation_values(tweaked_params_s * pParams)
- {
- init_params(pParams);
- }
- void update_three_signal_values()
- {
- //printf("Updating 3signal values\n");
- // read values of updated registers
- }
- void inc_f1(tweaked_params_s * pParams){
- int32_t f1 = pParams->f1;
- f1 += 5;
- if(f1>MAX_FREQ1)
- return;
- int32_t _period1 = DIV_ROUND(BASE_FREQ, f1);
- uint32_t pulses_time = pParams->_period3*(pParams->N3+2)*N_PULSE_TRAINS;
- if(pulses_time>_period1)
- return;
- int32_t _duty1 = _period1*pParams->D1/4000;
- int32_t _duty2 = _period1*pParams->D2/4000;
- int32_t _phase2 = _period1*pParams->Ph2/4000;
- pParams->_duty1 = _duty1;
- pParams->_duty2 = _duty2;
- pParams->_phase2 = _phase2;
- pParams->_period1 = _period1;
- pParams->f1 = f1;
- }
- void dec_f1(tweaked_params_s * pParams) {
- int32_t f1 = pParams->f1;
- f1 -= 5;
- if(f1<MIN_FREQ1)
- return;
- int32_t _period1 = DIV_ROUND(BASE_FREQ, f1);
- int32_t _duty1 = _period1*pParams->D1/4000;
- int32_t _duty2 = _period1*pParams->D2/4000;
- int32_t _phase2 = _period1*pParams->Ph2/4000;
- pParams->_duty1 = _duty1;
- pParams->_duty2 = _duty2;
- pParams->_phase2 = _phase2;
- pParams->_period1 = _period1;
- pParams->f1 = f1;
- }
- void inc_D1(tweaked_params_s * pParams) {
- int32_t D1 = pParams->D1;
- D1++;
- if(D1>MAX_D1D2)
- return;
- int32_t _duty1 = pParams->_period1*D1/4000;
- if(_duty1+pParams->_phase2 >= pParams->_period1/2)
- return;
- pParams->D1 = D1;
- pParams->_duty1 = _duty1;
- }
- void dec_D1(tweaked_params_s * pParams) {
- int32_t D1 = pParams->D1;
- D1--;
- if(D1<MIN_D1D2)
- return;
- int32_t _duty1 = pParams->_period1*D1/4000;
- pParams->D1 = D1;
- pParams->_duty1 = _duty1;
- }
- void inc_D2(tweaked_params_s * pParams) {
- int32_t D2 = pParams->D2;
- D2++;
- if(D2>MAX_D1D2)
- return;
- int32_t _duty2 = pParams->_period1*D2/4000;
- pParams->D2 = D2;
- pParams->_duty2 = _duty2;
- }
- void dec_D2(tweaked_params_s * pParams) {
- int32_t D2 = pParams->D2;
- D2--;
- if(D2<MIN_D1D2)
- return;
- int32_t _duty2 = pParams->_period1*D2/4000;
- pParams->D2 = D2;
- pParams->_duty2 = _duty2;
- }
- void inc_Ph2(tweaked_params_s * pParams) {
- int32_t Ph2 = pParams->Ph2;
- Ph2++;
- int32_t _phase2 = Ph2*pParams->_period1/4000;
- if(pParams->_duty1+_phase2 >= pParams->_period1/2)
- return;
- pParams->Ph2 = Ph2;
- pParams->_phase2 = _phase2;
- }
- void dec_Ph2(tweaked_params_s * pParams) {
- int32_t Ph2 = pParams->Ph2;
- Ph2--;
- if(Ph2<0)
- return;//limit value
- int32_t _phase2 = Ph2*pParams->_period1/4000;
- pParams->Ph2 = Ph2;
- pParams->_phase2 = _phase2;
- }
- void inc_Ph3(tweaked_params_s * pParams) {
- int32_t Ph3 = pParams->Ph3;
- Ph3++;
- if(Ph3>MAX_PH3)
- return;//limit value
- pParams->Ph3 = Ph3;
- }
- void dec_Ph3(tweaked_params_s * pParams) {
- int32_t Ph3 = pParams->Ph3;
- Ph3--;
- if(Ph3<0)
- return;//limit value
- pParams->Ph3 = Ph3;
- }
- void inc_f3(tweaked_params_s * pParams) {
- int32_t f3 = pParams->f3;
- f3 += 10000;
- if(f3>MAX_FREQ3)
- return;
- int32_t _period3 = DIV_ROUND(BASE_FREQ, f3);
- pParams->f3 = f3;
- pParams->_period3 = _period3;
- }
- void dec_f3(tweaked_params_s * pParams) {
- int32_t f3 = pParams->f3;
- f3 -= 10000;
- if(f3<MIN_FREQ3)
- return;
- int32_t _period3 = DIV_ROUND(BASE_FREQ, f3);
- uint32_t pulses_time = _period3*(pParams->N3+2)*N_PULSE_TRAINS;
- if(pulses_time>pParams->_period1)
- return;
- pParams->f3 = f3;
- pParams->_period3 = _period3;
- }
- void inc_D3(tweaked_params_s * pParams) {
- int32_t D3 = pParams->D3;
- D3 += 5;
- if(D3>1000)
- return;
- pParams->D3 = D3;
- }
- void dec_D3(tweaked_params_s * pParams) {
- int32_t D3 = pParams->D3;
- D3 -= 5;
- if(D3<0)
- return;
- pParams->D3 = D3;
- }
- void inc_N3(tweaked_params_s * pParams) {
- int32_t N3 = pParams->N3;
- N3++;
- if(N3>254)
- return;
- uint32_t pulses_time = pParams->_period3*(N3+2)*N_PULSE_TRAINS;
- if(pulses_time>pParams->_period1)
- return;
- pParams->N3 = N3;
- }
- void dec_N3(tweaked_params_s * pParams) {
- int32_t N3 = pParams->N3;
- N3--;
- if(N3<1)
- return;
- pParams->N3 = N3;
- }
- void ena_force_toggle(tweaked_params_s * pParams) {
- enable_force_t ena = pParams->ena;
- ena = ena==ENABLE_FORCE_DISABLE?ENABLE_FORCE_ENABLE:ENABLE_FORCE_DISABLE;
- pParams->ena = ena;
- }
|