Adding runtime debug info print at startup

This commit is contained in:
Andy CA6JAU 2017-08-20 20:48:17 -03:00
parent 36f018c654
commit 92d9844f64
5 changed files with 78 additions and 16 deletions

View file

@ -41,6 +41,7 @@ uint32_t ADF7021_RX_REG0;
uint32_t ADF7021_TX_REG0; uint32_t ADF7021_TX_REG0;
uint32_t ADF7021_REG1; uint32_t ADF7021_REG1;
uint32_t div2; uint32_t div2;
float f_div;
static void Send_AD7021_control_shift() static void Send_AD7021_control_shift()
{ {
@ -171,8 +172,6 @@ uint16_t CIO::readRSSI()
void CIO::ifConf(MMDVM_STATE modemState, bool reset) void CIO::ifConf(MMDVM_STATE modemState, bool reset)
{ {
float divider; float divider;
uint8_t N_divider;
uint16_t F_divider;
uint32_t ADF7021_REG2 = 0; uint32_t ADF7021_REG2 = 0;
uint32_t ADF7021_REG3 = 0; uint32_t ADF7021_REG3 = 0;
@ -213,6 +212,11 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
div2 = 1U; div2 = 1U;
} }
if(div2 == 1U)
f_div = 2.0;
else
f_div = 1.0;
switch (modemState) { switch (modemState) {
case STATE_DSTAR: case STATE_DSTAR:
AFC_OFFSET = 0; AFC_OFFSET = 0;
@ -235,9 +239,9 @@ void CIO::ifConf(MMDVM_STATE modemState, bool reset)
else else
divider = (m_frequency_rx - 100000 + (2*AFC_OFFSET)) / ADF7021_PFD; divider = (m_frequency_rx - 100000 + (2*AFC_OFFSET)) / ADF7021_PFD;
N_divider = floor(divider); m_RX_N_divider = floor(divider);
divider = (divider - N_divider) * 32768; divider = (divider - m_RX_N_divider) * 32768;
F_divider = floor(divider + 0.5); m_RX_F_divider = floor(divider + 0.5);
ADF7021_RX_REG0 = (uint32_t) 0b0000; ADF7021_RX_REG0 = (uint32_t) 0b0000;
@ -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 ADF7021_RX_REG0 |= (uint32_t) 0b01011 << 27; // mux regulator/uart-spi enabled/receive
#endif #endif
ADF7021_RX_REG0 |= (uint32_t) N_divider << 19; // frequency; ADF7021_RX_REG0 |= (uint32_t) m_RX_N_divider << 19; // frequency;
ADF7021_RX_REG0 |= (uint32_t) F_divider << 4; // frequency; ADF7021_RX_REG0 |= (uint32_t) m_RX_F_divider << 4; // frequency;
if( div2 == 1U ) if( div2 == 1U )
divider = m_frequency_tx / (ADF7021_PFD / 2U); divider = m_frequency_tx / (ADF7021_PFD / 2U);
else else
divider = m_frequency_tx / ADF7021_PFD; divider = m_frequency_tx / ADF7021_PFD;
N_divider = floor(divider); m_TX_N_divider = floor(divider);
divider = (divider - N_divider) * 32768; divider = (divider - m_TX_N_divider) * 32768;
F_divider = floor(divider + 0.5); m_TX_F_divider = floor(divider + 0.5);
ADF7021_TX_REG0 = (uint32_t) 0b0000; // register 0 ADF7021_TX_REG0 = (uint32_t) 0b0000; // register 0
@ -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 ADF7021_TX_REG0 |= (uint32_t) 0b01010 << 27; // mux regulator/uart-spi enabled/transmit
#endif #endif
ADF7021_TX_REG0 |= (uint32_t) N_divider << 19; // frequency; ADF7021_TX_REG0 |= (uint32_t) m_TX_N_divider << 19; // frequency;
ADF7021_TX_REG0 |= (uint32_t) F_divider << 4; // frequency; ADF7021_TX_REG0 |= (uint32_t) m_TX_F_divider << 4; // frequency;
#if defined(TEST_TX) #if defined(TEST_TX)
modemState = STATE_DSTAR; modemState = STATE_DSTAR;
@ -797,9 +801,39 @@ void CIO::setRX(bool doSle)
} }
} }
void CIO::setLoDevYSF(bool on) uint32_t CIO::RXfreq(void)
{ {
m_LoDevYSF = on; 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)
{
return (uint16_t)(ADF7021_PFD * (((float)ADF7021_DEV_P25) / f_div) / 65536.0);
} }
#endif #endif

View file

@ -23,6 +23,7 @@
#if defined(STM32F10X_MD) #if defined(STM32F10X_MD)
#include <stm32f10x.h> #include <stm32f10x.h>
#include "string.h" #include "string.h"
#include <stdio.h>
#else #else
#include <Arduino.h> #include <Arduino.h>
#endif #endif

13
IO.h
View file

@ -118,8 +118,19 @@ public:
void delay_IFcal(void); void delay_IFcal(void);
void delay_reset(void); void delay_reset(void);
void delay_us(uint32_t us); 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: 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; bool m_started;
CBitRB m_rxBuffer; CBitRB m_rxBuffer;

View file

@ -280,7 +280,8 @@ uint8_t CSerialPort::setConfig(const uint8_t* data, uint8_t length)
io.ifConf(STATE_P25, true); io.ifConf(STATE_P25, true);
io.start(); io.start();
printConf();
return 0U; return 0U;
} }
@ -1013,3 +1014,16 @@ void CSerialPort::writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n
writeInt(1U, reply, count, true); 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());
}

View file

@ -50,6 +50,8 @@ public:
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);
void writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n3, int16_t n4); void writeDebug(const char* text, int16_t n1, int16_t n2, int16_t n3, int16_t n4);
void printConf();
private: private:
uint8_t m_buffer[256U]; uint8_t m_buffer[256U];
uint8_t m_ptr; uint8_t m_ptr;