frequency to divider calculation
This commit is contained in:
parent
497318e34a
commit
7ddc7e8f71
21
generator.c
21
generator.c
@ -4,11 +4,28 @@
|
||||
#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() {
|
||||
P1DIR |= BIT0 | BIT1 | BIT2 | BIT3;
|
||||
P1OUT |= BIT0 | BIT1 | BIT2 | BIT3;
|
||||
|
||||
|
||||
genShifter(0, 0x8002);
|
||||
genShifter(0, frequencyToDivider(441));
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user