Skip to content

Commit

Permalink
Adding runtime debug info print at startup
Browse files Browse the repository at this point in the history
  • Loading branch information
juribeparada committed Aug 20, 2017
1 parent 36f018c commit 92d9844
Show file tree
Hide file tree
Showing 5 changed files with 78 additions and 16 deletions.
62 changes: 48 additions & 14 deletions ADF7021.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,7 @@ uint32_t ADF7021_RX_REG0;
uint32_t ADF7021_TX_REG0;
uint32_t ADF7021_REG1;
uint32_t div2;
float f_div;

static void Send_AD7021_control_shift()
{
Expand Down Expand Up @@ -171,8 +172,6 @@ uint16_t CIO::readRSSI()
void CIO::ifConf(MMDVM_STATE modemState, bool reset)
{
float divider;
uint8_t N_divider;
uint16_t F_divider;

uint32_t ADF7021_REG2 = 0;
uint32_t ADF7021_REG3 = 0;
Expand Down Expand Up @@ -213,6 +212,11 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
div2 = 1U;
}

if(div2 == 1U)
f_div = 2.0;
else
f_div = 1.0;

switch (modemState) {
case STATE_DSTAR:
AFC_OFFSET = 0;
Expand All @@ -235,9 +239,9 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
else
divider = (m_frequency_rx - 100000 + (2*AFC_OFFSET)) / ADF7021_PFD;

N_divider = floor(divider);
divider = (divider - N_divider) * 32768;
F_divider = floor(divider + 0.5);
m_RX_N_divider = floor(divider);
divider = (divider - m_RX_N_divider) * 32768;
m_RX_F_divider = floor(divider + 0.5);

ADF7021_RX_REG0 = (uint32_t) 0b0000;

Expand All @@ -247,17 +251,17 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
ADF7021_RX_REG0 |= (uint32_t) 0b01011 << 27; // mux regulator/uart-spi enabled/receive
#endif

ADF7021_RX_REG0 |= (uint32_t) N_divider << 19; // frequency;
ADF7021_RX_REG0 |= (uint32_t) F_divider << 4; // frequency;
ADF7021_RX_REG0 |= (uint32_t) m_RX_N_divider << 19; // frequency;
ADF7021_RX_REG0 |= (uint32_t) m_RX_F_divider << 4; // frequency;

if( div2 == 1U )
divider = m_frequency_tx / (ADF7021_PFD / 2U);
else
divider = m_frequency_tx / ADF7021_PFD;

N_divider = floor(divider);
divider = (divider - N_divider) * 32768;
F_divider = floor(divider + 0.5);
m_TX_N_divider = floor(divider);
divider = (divider - m_TX_N_divider) * 32768;
m_TX_F_divider = floor(divider + 0.5);

ADF7021_TX_REG0 = (uint32_t) 0b0000; // register 0

Expand All @@ -267,8 +271,8 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
ADF7021_TX_REG0 |= (uint32_t) 0b01010 << 27; // mux regulator/uart-spi enabled/transmit
#endif

ADF7021_TX_REG0 |= (uint32_t) N_divider << 19; // frequency;
ADF7021_TX_REG0 |= (uint32_t) F_divider << 4; // frequency;
ADF7021_TX_REG0 |= (uint32_t) m_TX_N_divider << 19; // frequency;
ADF7021_TX_REG0 |= (uint32_t) m_TX_F_divider << 4; // frequency;

#if defined(TEST_TX)
modemState = STATE_DSTAR;
Expand Down Expand Up @@ -797,9 +801,39 @@ void CIO::setRX(bool doSle)
}
}

void CIO::setLoDevYSF(bool on)
uint32_t CIO::RXfreq(void)
{
return (uint32_t)((ADF7021_PFD / f_div) * ((float)m_RX_N_divider + (((float)m_RX_F_divider) / 32768.0)) + 100000.0);
}

uint32_t CIO::TXfreq(void)
{
return (uint32_t)((ADF7021_PFD / f_div) * ((float)m_TX_N_divider + (((float)m_TX_F_divider) / 32768.0)));
}

uint16_t CIO::devDSTAR(void)
{
return (uint16_t)(ADF7021_PFD * (((float)ADF7021_DEV_DSTAR) / f_div) / 65536.0);
}

uint16_t CIO::devDMR(void)
{
return (uint16_t)(ADF7021_PFD * (((float)ADF7021_DEV_DMR) / f_div) / 65536.0);
}

uint16_t CIO::devYSF_H(void)
{
return (uint16_t)(ADF7021_PFD * (((float)ADF7021_DEV_YSF_H) / f_div) / 65536.0);
}

uint16_t CIO::devYSF_L(void)
{
return (uint16_t)(ADF7021_PFD * (((float)ADF7021_DEV_YSF_L) / f_div) / 65536.0);
}

uint16_t CIO::devP25(void)
{
m_LoDevYSF = on;
return (uint16_t)(ADF7021_PFD * (((float)ADF7021_DEV_P25) / f_div) / 65536.0);
}

#endif
1 change: 1 addition & 0 deletions Globals.h
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,7 @@
#if defined(STM32F10X_MD)
#include <stm32f10x.h>
#include "string.h"
#include <stdio.h>
#else
#include <Arduino.h>
#endif
Expand Down
13 changes: 12 additions & 1 deletion IO.h
Original file line number Diff line number Diff line change
Expand Up @@ -118,8 +118,19 @@ class CIO {
void delay_IFcal(void);
void delay_reset(void);
void delay_us(uint32_t us);

uint32_t RXfreq(void);
uint32_t TXfreq(void);
uint16_t devDSTAR(void);
uint16_t devDMR(void);
uint16_t devYSF_H(void);
uint16_t devYSF_L(void);
uint16_t devP25(void);

private:
uint8_t m_RX_N_divider;
uint16_t m_RX_F_divider;
uint8_t m_TX_N_divider;
uint16_t m_TX_F_divider;

bool m_started;
CBitRB m_rxBuffer;
Expand Down
16 changes: 15 additions & 1 deletion SerialPort.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -280,7 +280,8 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
io.ifConf(STATE_P25, true);

io.start();

printConf();

return 0U;
}

Expand Down Expand Up @@ -1013,3 +1014,16 @@ void CSerialPort::writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n
writeInt(1U, reply, count, true);
}

void CSerialPort::printConf()
{
char buff[60];

writeDebug("ZUMspot configuration:");
sprintf(buff, "TX freq %lu Hz, RX freq %lu Hz", io.TXfreq(), io.RXfreq());
writeDebug(buff);
writeDebug("D-Star dev (Hz):", io.devDSTAR());
writeDebug("DMR +1 sym dev (Hz):", io.devDMR());
writeDebug("YSF_H +1 sym dev (Hz):", io.devYSF_H());
writeDebug("YSF_L +1 sym dev (Hz):", io.devYSF_L());
writeDebug("P25 +1 sym dev (Hz):", io.devP25());
}
2 changes: 2 additions & 0 deletions SerialPort.h
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ class CSerialPort {
void writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n3);
void writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n3, int16_t n4);

void printConf();

private:
uint8_t m_buffer[256U];
uint8_t m_ptr;
Expand Down

0 comments on commit 92d9844

Please sign in to comment.