generate ctov properly.
Thanks Umberto! Signed-off-by: Mariano Alvira <mar@devl.org>
This commit is contained in:
parent
bf9e762a81
commit
c419d7403b
71
src/maca.c
71
src/maca.c
|
@ -160,6 +160,43 @@ void radio_on(void) {
|
||||||
init_phy();
|
init_phy();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* initialized with 0x4c */
|
||||||
|
uint8_t ctov[16] = {
|
||||||
|
0x0b,
|
||||||
|
0x0b,
|
||||||
|
0x0b,
|
||||||
|
0x0a,
|
||||||
|
0x0d,
|
||||||
|
0x0d,
|
||||||
|
0x0c,
|
||||||
|
0x0c,
|
||||||
|
0x0f,
|
||||||
|
0x0e,
|
||||||
|
0x0e,
|
||||||
|
0x0e,
|
||||||
|
0x11,
|
||||||
|
0x10,
|
||||||
|
0x10,
|
||||||
|
0x0f,
|
||||||
|
};
|
||||||
|
|
||||||
|
/* get_ctov thanks to Umberto */
|
||||||
|
|
||||||
|
#define _INIT_CTOV_WORD_1 0x00dfbe77
|
||||||
|
#define _INIT_CTOV_WORD_2 0x023126e9
|
||||||
|
uint8_t get_ctov( uint32_t r0, uint32_t r1 )
|
||||||
|
{
|
||||||
|
|
||||||
|
r0 = r0 * _INIT_CTOV_WORD_1;
|
||||||
|
r0 += ( r1 << 22 );
|
||||||
|
r0 += _INIT_CTOV_WORD_2;
|
||||||
|
|
||||||
|
r0 = (uint32_t)(((int32_t)r0) >> 25);
|
||||||
|
|
||||||
|
return (uint8_t)r0;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
/* radio_init has been tested to be good */
|
/* radio_init has been tested to be good */
|
||||||
void radio_init(void) {
|
void radio_init(void) {
|
||||||
volatile uint32_t i;
|
volatile uint32_t i;
|
||||||
|
@ -217,6 +254,19 @@ void radio_init(void) {
|
||||||
puts("\n\r");
|
puts("\n\r");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
puts("radio_init: ctov parameter 0x");
|
||||||
|
put_hex(ram_values[3]);
|
||||||
|
puts("\n\r");
|
||||||
|
for(i=0; i<16; i++) {
|
||||||
|
ctov[i] = get_ctov(i,ram_values[3]);
|
||||||
|
puts("radio_init: ctov[");
|
||||||
|
put_hex(i);
|
||||||
|
puts("] = 0x");
|
||||||
|
put_hex(ctov[i]);
|
||||||
|
puts("\n\r");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
const uint32_t PSMVAL[19] = {
|
const uint32_t PSMVAL[19] = {
|
||||||
|
@ -333,25 +383,6 @@ const uint32_t VCODivF[16] = {
|
||||||
0x01555555,
|
0x01555555,
|
||||||
};
|
};
|
||||||
|
|
||||||
const uint8_t ctov_4c[16] = {
|
|
||||||
0x0b,
|
|
||||||
0x0b,
|
|
||||||
0x0b,
|
|
||||||
0x0a,
|
|
||||||
0x0d,
|
|
||||||
0x0d,
|
|
||||||
0x0c,
|
|
||||||
0x0c,
|
|
||||||
0x0f,
|
|
||||||
0x0e,
|
|
||||||
0x0e,
|
|
||||||
0x0e,
|
|
||||||
0x11,
|
|
||||||
0x10,
|
|
||||||
0x10,
|
|
||||||
0x0f,
|
|
||||||
};
|
|
||||||
|
|
||||||
/* tested good */
|
/* tested good */
|
||||||
#define ADDR_CHAN1 0x80009800
|
#define ADDR_CHAN1 0x80009800
|
||||||
#define ADDR_CHAN2 (ADDR_CHAN1+12)
|
#define ADDR_CHAN2 (ADDR_CHAN1+12)
|
||||||
|
@ -376,7 +407,7 @@ void set_channel(uint8_t chan) {
|
||||||
reg(ADDR_CHAN4) = tmp;
|
reg(ADDR_CHAN4) = tmp;
|
||||||
|
|
||||||
tmp = tmp & 0xffffe0ff;
|
tmp = tmp & 0xffffe0ff;
|
||||||
tmp = tmp | (((ctov_4c[chan])<<8)&0x1F00);
|
tmp = tmp | (((ctov[chan])<<8)&0x1F00);
|
||||||
reg(ADDR_CHAN4) = tmp;
|
reg(ADDR_CHAN4) = tmp;
|
||||||
/* duh! */
|
/* duh! */
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue