frequency to divider calculation

This commit is contained in:
Wolfgang Hottgenroth 2024-06-13 17:53:12 +02:00
parent 497318e34a
commit 7ddc7e8f71

View File

@ -4,11 +4,28 @@
#include "generator.h" #include "generator.h"
const float BASE_FREQUENCY = 2457600.0;
const float MAIN_DIVIDER = 8388606.0; // 2^23
static uint16_t frequencyToDivider(uint16_t freq) {
float f = (float) freq;
float n = (f * MAIN_DIVIDER) / BASE_FREQUENCY;
uint16_t i = (uint16_t) n;
if (n - i >= 0.5) {
i += 1;
}
return i;
}
void generatorInit() { void generatorInit() {
P1DIR |= BIT0 | BIT1 | BIT2 | BIT3; P1DIR |= BIT0 | BIT1 | BIT2 | BIT3;
P1OUT |= BIT0 | BIT1 | BIT2 | BIT3; P1OUT |= BIT0 | BIT1 | BIT2 | BIT3;
genShifter(0, frequencyToDivider(441));
genShifter(0, 0x8002);
} }