diff --git a/lib_xua/api/xua_buffer.h b/lib_xua/api/xua_buffer.h index d7d182d7..b9f8e56b 100644 --- a/lib_xua/api/xua_buffer.h +++ b/lib_xua/api/xua_buffer.h @@ -81,7 +81,7 @@ void XUA_Buffer_Ep(chanend c_aud_out, #ifdef CHAN_BUFF_CTRL , chanend c_buff_ctrl #endif -#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC) || defined(__DOXYGEN__) +#if ((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) && !XUA_USE_APP_PLL) || defined(__DOXYGEN__) , client interface pll_ref_if i_pll_ref #endif ); diff --git a/lib_xua/src/core/buffer/ep/ep_buffer.xc b/lib_xua/src/core/buffer/ep/ep_buffer.xc index 2aa2218e..d4c1776d 100644 --- a/lib_xua/src/core/buffer/ep/ep_buffer.xc +++ b/lib_xua/src/core/buffer/ep/ep_buffer.xc @@ -358,16 +358,17 @@ void XUA_Buffer_Ep(register chanend c_aud_out, #ifndef LOCAL_CLOCK_MARGIN #define LOCAL_CLOCK_MARGIN (1000) #endif + +#if (XUA_USE_APP_PLL) + struct PllSettings pllSettings; + AppPllGetSettings(DEFAULT_MCLK, pllSettings); +#else timer t_sofCheck; unsigned timeLastEdge; unsigned timeNextEdge; t_sofCheck :> timeLastEdge; timeNextEdge + LOCAL_CLOCK_INCREMENT; i_pll_ref.toggle(); - -#if (XUA_USE_APP_PLL) - struct PllSettings pllSettings; - AppPllGetSettings(DEFAULT_MCLK, pllSettings); #endif #endif @@ -520,7 +521,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out, } break; } -#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC) +#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC) && (!XUA_USE_APP_PLL) case t_sofCheck when timerafter(timeNextEdge) :> void: i_pll_ref.toggle(); timeLastEdge = timeNextEdge; @@ -550,12 +551,14 @@ void XUA_Buffer_Ep(register chanend c_aud_out, sofCount += 1000; if (sofCount == framesPerSec) { + sofCount = 0; + pllUpdate++; +#if (!XUA_USE_APP_PLL) /* Port is accessed via interface to allow flexibilty with location */ i_pll_ref.toggle(); t_sofCheck :> timeLastEdge; - sofCount = 0; timeNextEdge = timeLastEdge + LOCAL_CLOCK_INCREMENT + LOCAL_CLOCK_MARGIN; - pllUpdate++; +#endif } #if (XUA_USE_APP_PLL) // Update PLL @ 100Hz @@ -671,7 +674,6 @@ void XUA_Buffer_Ep(register chanend c_aud_out, clockcounter = 0; } #else - /* Assuming 48kHz from a 24.576 master clock (0.0407uS period) * MCLK ticks per SOF = 125uS / 0.0407 = 3072 MCLK ticks per SOF. * expected Feedback is 48000/8000 = 6 samples. so 0x60000 in 16:16 format. @@ -922,8 +924,8 @@ void XUA_Buffer_Ep(register chanend c_aud_out, #endif #endif -#if XUA_HID_ENABLED - /* HID Report Data */ +#if (XUA_HID_ENABLED) + /* HID Report Data */ case XUD_SetData_Select(c_hid, ep_hid, result): hid_ready_flag = 0U; unsigned reportTime; @@ -936,7 +938,7 @@ void XUA_Buffer_Ep(register chanend c_aud_out, #endif #ifdef MIDI - /* Received word from MIDI thread - Check for ACK or Data */ + /* Received word from MIDI thread - Check for ACK or Data */ case midi_get_ack_or_data(c_midi, is_ack, datum): if (is_ack) { diff --git a/lib_xua/src/core/main.xc b/lib_xua/src/core/main.xc index 1e2a5145..711afbce 100755 --- a/lib_xua/src/core/main.xc +++ b/lib_xua/src/core/main.xc @@ -145,7 +145,7 @@ on stdcore[XUD_TILE] : buffered in port:32 p_adat_rx = PORT_ADAT_IN; on tile[XUD_TILE] : in port p_spdif_rx = PORT_SPDIF_IN; #endif -#if (XUA_SPDIF_RX_EN) || (XUA_ADAT_RX_EN) || (XUA_SYNCMODE == XUA_SYNCMODE_SYNC) +#if (XUA_SPDIF_RX_EN) || (XUA_ADAT_RX_EN) || ((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) && (!XUA_USE_APP_PLL)) /* Reference to external clock multiplier */ on tile[PLL_REF_TILE] : out port p_pll_ref = PORT_PLL_REF; #endif @@ -467,7 +467,7 @@ int main() #endif #endif -#if ((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) || XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN) +#if (((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) && !XUA_USE_APP_PLL) || XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN) interface pll_ref_if i_pll_ref; #endif chan c_sof; @@ -491,7 +491,7 @@ int main() { USER_MAIN_CORES -#if ((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) || XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN) +#if (((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) && XYA_USE_APP_PLL) || XUA_SPDIF_RX_EN || XUA_ADAT_RX_EN) on tile[PLL_REF_TILE]: PllRefPinTask(i_pll_ref, p_pll_ref); #endif on tile[XUD_TILE]: @@ -563,7 +563,7 @@ int main() , c_xud_in[ENDPOINT_NUMBER_IN_HID] #endif , c_mix_out -#if (XUA_SYNCMODE == XUA_SYNCMODE_SYNC) +#if ((XUA_SYNCMODE == XUA_SYNCMODE_SYNC) && (!XUA_USE_APP_PLL)) , i_pll_ref #endif );