mirror of
https://github.com/g4klx/MMDVM_HS.git
synced 2025-12-06 07:02:00 +01:00
parent
93e3f682b1
commit
3088c3240a
27
ADF7021.cpp
27
ADF7021.cpp
|
|
@ -34,31 +34,6 @@ volatile uint32_t AD7021_control_word;
|
|||
uint32_t ADF7021_RX_REG0;
|
||||
uint32_t ADF7021_TX_REG0;
|
||||
|
||||
volatile bool sle_request = false;
|
||||
|
||||
static void Send_AD7021_control_shift()
|
||||
{
|
||||
int AD7021_counter;
|
||||
|
||||
for(AD7021_counter = 31; AD7021_counter >= 0; AD7021_counter--) {
|
||||
if(bitRead(AD7021_control_word, AD7021_counter) == HIGH)
|
||||
io.SDATA_pin(HIGH);
|
||||
else
|
||||
io.SDATA_pin(LOW);
|
||||
|
||||
io.dlybit();
|
||||
io.SCLK_pin(HIGH);
|
||||
io.dlybit();
|
||||
io.SCLK_pin(LOW);
|
||||
}
|
||||
}
|
||||
|
||||
static void Send_AD7021_control_nosle()
|
||||
{
|
||||
Send_AD7021_control_shift();
|
||||
sle_request = true;
|
||||
}
|
||||
|
||||
void Send_AD7021_control()
|
||||
{
|
||||
int AD7021_counter;
|
||||
|
|
@ -416,7 +391,7 @@ void CIO::setTX()
|
|||
{
|
||||
// Send register 0 for TX operation
|
||||
AD7021_control_word = ADF7021_TX_REG0;
|
||||
Send_AD7021_control_nosle();
|
||||
Send_AD7021_control();
|
||||
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
Data_dir_out(true); // Data pin output mode
|
||||
|
|
|
|||
31
IO.cpp
31
IO.cpp
|
|
@ -29,9 +29,6 @@ uint32_t m_frequency_rx;
|
|||
uint32_t m_frequency_tx;
|
||||
uint8_t m_power;
|
||||
|
||||
extern volatile bool sle_request;
|
||||
static volatile bool sle_pin = 0;
|
||||
|
||||
CIO::CIO():
|
||||
m_started(false),
|
||||
m_rxBuffer(RX_RINGBUFFER_SIZE),
|
||||
|
|
@ -155,25 +152,7 @@ void CIO::interrupt()
|
|||
if (!m_started)
|
||||
return;
|
||||
|
||||
if (sle_request == true && m_tx)
|
||||
{
|
||||
if(CLK_pin() == 0)
|
||||
{
|
||||
sle_pin = 1;
|
||||
SLE_pin(HIGH);
|
||||
}
|
||||
else if (sle_pin == 1)
|
||||
{
|
||||
SLE_pin(LOW);
|
||||
SDATA_pin(LOW);
|
||||
sle_request = false;
|
||||
sle_pin = 0;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// we set the TX bit at TXD low, sampling of ADF7021 happens at rising clock
|
||||
if (CLK_pin() == 0 && m_tx ) {
|
||||
if(m_tx) {
|
||||
m_txBuffer.get(bit);
|
||||
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
|
|
@ -187,9 +166,8 @@ void CIO::interrupt()
|
|||
else
|
||||
TXD_pin(LOW);
|
||||
#endif
|
||||
}
|
||||
// we sample the RX bit at rising TXD clock edge, so TXD must be 1 and we are not in tx mode
|
||||
else if (CLK_pin() == 1 && !m_tx) {
|
||||
|
||||
} else {
|
||||
if(RXD_pin())
|
||||
bit = 1;
|
||||
else
|
||||
|
|
@ -198,7 +176,6 @@ void CIO::interrupt()
|
|||
m_rxBuffer.put(bit);
|
||||
}
|
||||
|
||||
|
||||
m_watchdog++;
|
||||
m_modeTimerCnt++;
|
||||
|
||||
|
|
@ -264,8 +241,6 @@ void CIO::write(uint8_t* data, uint16_t length)
|
|||
if (!m_tx) {
|
||||
setTX();
|
||||
m_tx = true;
|
||||
sle_pin = 0;
|
||||
while (sle_request) { asm("nop"); }
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
|||
1
IO.h
1
IO.h
|
|
@ -55,7 +55,6 @@ public:
|
|||
void SLE_pin(bool on);
|
||||
void CE_pin(bool on);
|
||||
bool RXD_pin(void);
|
||||
bool CLK_pin(void);
|
||||
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
void RXD_pin_write(bool on);
|
||||
|
|
|
|||
|
|
@ -171,17 +171,17 @@ void CIO::startInt()
|
|||
|
||||
// TXD pin is TxRxCLK of ADF7021, standard TX/RX data interface
|
||||
#if defined (__STM32F1__)
|
||||
attachInterrupt(PIN_TXD, EXT_IRQHandler, CHANGE);
|
||||
attachInterrupt(PIN_TXD, EXT_IRQHandler, RISING);
|
||||
#else
|
||||
attachInterrupt(digitalPinToInterrupt(PIN_TXD), EXT_IRQHandler, CHANGE);
|
||||
attachInterrupt(digitalPinToInterrupt(PIN_TXD), EXT_IRQHandler, RISING);
|
||||
#endif
|
||||
|
||||
#else
|
||||
|
||||
#if defined (__STM32F1__)
|
||||
attachInterrupt(PIN_CLKOUT, EXT_IRQHandler, CHANGE);
|
||||
attachInterrupt(PIN_CLKOUT, EXT_IRQHandler, RISING);
|
||||
#else
|
||||
attachInterrupt(digitalPinToInterrupt(PIN_CLKOUT), EXT_IRQHandler, CHANGE);
|
||||
attachInterrupt(digitalPinToInterrupt(PIN_CLKOUT), EXT_IRQHandler, RISING);
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
@ -228,11 +228,6 @@ bool CIO::RXD_pin()
|
|||
return digitalRead(PIN_RXD) == HIGH;
|
||||
}
|
||||
|
||||
bool CIO::CLK_pin()
|
||||
{
|
||||
return digitalRead(PIN_TXD) == HIGH;
|
||||
}
|
||||
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
void CIO::RXD_pin_write(bool on)
|
||||
{
|
||||
|
|
@ -242,11 +237,7 @@ void CIO::RXD_pin_write(bool on)
|
|||
|
||||
void CIO::TXD_pin(bool on)
|
||||
{
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
digitalWrite(PIN_TXD, on ? HIGH : LOW);
|
||||
#else
|
||||
digitalWrite(PIN_CLKOUT, on ? HIGH : LOW);
|
||||
#endif
|
||||
}
|
||||
|
||||
void CIO::LED_pin(bool on)
|
||||
|
|
|
|||
13
IOSTM.cpp
13
IOSTM.cpp
|
|
@ -440,7 +440,7 @@ void CIO::Init()
|
|||
#endif
|
||||
|
||||
EXTI_InitStructure.EXTI_Mode = EXTI_Mode_Interrupt;
|
||||
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising_Falling;
|
||||
EXTI_InitStructure.EXTI_Trigger = EXTI_Trigger_Rising;
|
||||
EXTI_InitStructure.EXTI_LineCmd = ENABLE;
|
||||
EXTI_Init(&EXTI_InitStructure);
|
||||
}
|
||||
|
|
@ -465,7 +465,7 @@ void CIO::startInt()
|
|||
|
||||
#endif
|
||||
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 1;
|
||||
NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 15;
|
||||
NVIC_InitStructure.NVIC_IRQChannelSubPriority = 15;
|
||||
NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE;
|
||||
NVIC_Init(&NVIC_InitStructure);
|
||||
|
|
@ -519,15 +519,6 @@ bool CIO::RXD_pin()
|
|||
return GPIO_ReadInputDataBit(PORT_RXD, PIN_RXD) == Bit_SET;
|
||||
}
|
||||
|
||||
bool CIO::CLK_pin()
|
||||
{
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
return GPIO_ReadInputDataBit(PORT_TXD, PIN_TXD) == Bit_SET;
|
||||
#else
|
||||
return GPIO_ReadInputDataBit(PORT_CLKOUT, PIN_CLKOUT) == Bit_SET;
|
||||
#endif
|
||||
}
|
||||
|
||||
#if defined(BIDIR_DATA_PIN)
|
||||
void CIO::RXD_pin_write(bool on)
|
||||
{
|
||||
|
|
|
|||
Loading…
Reference in a new issue