From ad1856f2559859ff61f97e78e371e8495a878e4b Mon Sep 17 00:00:00 2001 From: KubaPro010 Date: Mon, 24 Mar 2025 19:54:49 +0100 Subject: [PATCH] use atan2 for pll phase error --- .vscode/.server-controller-port.log | 2 +- lib/filters.c | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/.vscode/.server-controller-port.log b/.vscode/.server-controller-port.log index 76dbc1a..bc13603 100644 --- a/.vscode/.server-controller-port.log +++ b/.vscode/.server-controller-port.log @@ -1,5 +1,5 @@ { "port": 13452, - "time": 1742831052343, + "time": 1742842256267, "version": "0.0.3" } \ No newline at end of file diff --git a/lib/filters.c b/lib/filters.c index 3f3ebd6..a75d701 100644 --- a/lib/filters.c +++ b/lib/filters.c @@ -30,7 +30,7 @@ float apply_pll(PLL *pll, float ref_sample) { float vco_output = sinf(pll->phase); if (pll->quadrature_mode) vco_output = sinf(pll->phase + (M_PI / 2.0f)); - phase_error = ref_sample * vco_output; + phase_error = atan2f(ref_sample, vco_output);; pll->loop_filter_state += pll->ki * phase_error / pll->sample_rate; float loop_output = pll->loop_filter_state + pll->kp * phase_error;