kopia lustrzana https://github.com/SP8EBC/ParaTNC
72 wiersze
1.1 KiB
C
72 wiersze
1.1 KiB
C
/*
|
|
* delay.c
|
|
*
|
|
* Created on: 26.01.2019
|
|
* Author: mateusz
|
|
*/
|
|
|
|
#include "main.h"
|
|
|
|
int32_t preset_delay_msecs = 0;
|
|
uint8_t preset_use_random = 0;
|
|
|
|
// counter decrement in Systick handler
|
|
volatile int32_t delay_cnt = 0;
|
|
|
|
void delay_fixed(int32_t delay_in_msecs) {
|
|
|
|
delay_cnt = delay_in_msecs;
|
|
|
|
while(delay_cnt > 0);
|
|
|
|
return;
|
|
|
|
}
|
|
|
|
uint32_t delay_fixed_with_count(int32_t delay_in_msecs) {
|
|
|
|
uint32_t ret = 0;
|
|
|
|
delay_cnt = delay_in_msecs;
|
|
|
|
while(delay_cnt > 0) {
|
|
ret++;
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void delay_random(void) {
|
|
|
|
uint16_t sample = main_get_adc_sample();
|
|
|
|
// random element of delay value could vary from 0 to 300msecs in 20msec steps
|
|
delay_cnt = (int32_t)(preset_delay_msecs / 4) + (sample % 15) * 20;
|
|
|
|
}
|
|
|
|
void delay_set(uint16_t delay_in_msecs, uint8_t randomize) {
|
|
preset_delay_msecs = delay_in_msecs * 50;
|
|
|
|
if (randomize == 1) {
|
|
preset_use_random = 1;
|
|
}
|
|
else {
|
|
preset_use_random = 0;
|
|
}
|
|
}
|
|
|
|
void delay_from_preset(void) {
|
|
|
|
delay_cnt = preset_delay_msecs;
|
|
|
|
|
|
while(delay_cnt > (int32_t)0);
|
|
|
|
if (preset_use_random == 1) {
|
|
delay_random();
|
|
}
|
|
|
|
}
|
|
|