From 3088c3240a6406ecee33372f72ea3b2fd1c8c506 Mon Sep 17 00:00:00 2001 From: Andy CA6JAU Date: Tue, 28 Mar 2017 20:58:17 -0300 Subject: [PATCH] Revert "Working TX SLE" This reverts commit 3a4451684f7068f00529226c06a2e4a0bfc18f1f. --- ADF7021.cpp | 27 +-------------------------- IO.cpp | 31 +++---------------------------- IO.h | 1 - IOArduino.cpp | 17 ++++------------- IOSTM.cpp | 13 ++----------- 5 files changed, 10 insertions(+), 79 deletions(-) diff --git a/ADF7021.cpp b/ADF7021.cpp index 6e440c5..161e643 100644 --- a/ADF7021.cpp +++ b/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 diff --git a/IO.cpp b/IO.cpp index 9524aec..7037241 100644 --- a/IO.cpp +++ b/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"); } } } diff --git a/IO.h b/IO.h index c635f0d..1f5ceb5 100644 --- a/IO.h +++ b/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); diff --git a/IOArduino.cpp b/IOArduino.cpp index c891bc5..8497def 100644 --- a/IOArduino.cpp +++ b/IOArduino.cpp @@ -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) diff --git a/IOSTM.cpp b/IOSTM.cpp index b66fa76..2cbc3fc 100644 --- a/IOSTM.cpp +++ b/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) {