// start with default settings *upp_setup = UPP_USERPARAMS; /* * -----Channel A (Transmitter) Parameters Settings */ upp_setup->params.A.direction = upp_dir_xmit; // direction of uPP channel upp_setup->params.A.clock_div = upp_clock_div; // clock divider (transmit mode only, 1-16) upp_setup->params.A.data_rate = 1; // data rate (1-2) upp_setup->params.A.width = 16; // data width (in bits, 8-16) upp_setup->params.A.format = upp_format_rjze; // data format (8 < width < 16 only) upp_setup->params.A.xmit_thresh = upp_thresh_64; // transmit threshold (transmit only) upp_setup->params.A.drive_idle = TRUE; // drive value from IVR while idle (else hi-z) upp_setup->params.A.idle_value = 0xAAAA; //value for IVR // signal enable upp_setup->params.A.en_start = TRUE; // enable start signal upp_setup->params.A.en_enable= TRUE; // enable enable signal upp_setup->params.A.en_wait = TRUE; // enable wait signal // signal polarity upp_setup->params.A.inv_start = FALSE; // invert start signal upp_setup->params.A.inv_enable = TRUE; // invert enable signal upp_setup->params.A.inv_wait = FALSE; // invert wait signal upp_setup->params.A.inv_clock = TRUE;//FALSE; // invert clock signal // interrupt generation (async mode only) upp_setup->params.A.gen_eow = TRUE; // generate end of window (EOW) events upp_setup->params.A.gen_eol = TRUE; // generate end of line (EOL) events upp_setup->params.A.gen_uor = TRUE; // generate underflow/overflow (UOR) events upp_setup->params.A.gen_err = TRUE; // generate internal error (ERR) events upp_setup->params.A.gen_dpe = TRUE; // generate DMA programming error (DPE) events // interrupt dispatch (async mode only) upp_setup->params.A.fxn_eow = NULL; // function pointer for EOW user-callback (optional; called if != NULL) upp_setup->params.A.fxn_eol = (upp_CbFxn)LOCAL_upp_complete_EOLTransmit; // function pointer for EOL user-callback (optional; called if != NULL) upp_setup->params.A.fxn_uor = (upp_CbFxn)LOCAL_upp_Error_Tx; // function pointer for UOR user-callback (optional; called if != NULL) upp_setup->params.A.fxn_err = (upp_CbFxn)LOCAL_upp_Error_Tx; // function pointer for ERR user-callback (optional; called if != NULL) upp_setup->params.A.fxn_dpe = (upp_CbFxn)LOCAL_upp_Error_Tx; // function pointer for DPE user-callback (optional; called if != NULL) ////////////////////////////////////////////////////// /* * -----Channel B (Receiver) Parameters Settings */ upp_setup->params.B.direction = upp_dir_rcv; // direction of uPP channel upp_setup->params.B.clock_div = 0; // clock divider (transmit mode only, 1-16) upp_setup->params.B.data_rate = 1; // data rate (1-2) upp_setup->params.B.width = 16; // data width (in bits, 8-16) // signal enable upp_setup->params.B.en_start = FALSE; // enable start signal upp_setup->params.B.en_enable= TRUE; // enable enable signal upp_setup->params.B.en_wait = TRUE; // enable wait signal // signal polarity upp_setup->params.B.inv_start = FALSE; // invert start signal upp_setup->params.B.inv_enable = FALSE; // invert enable signal upp_setup->params.B.inv_wait = FALSE; // invert wait signal upp_setup->params.B.inv_clock = TRUE; // invert clock signal // interrupt dispatch (async mode only) upp_setup->params.B.fxn_eow = NULL;//(upp_CbFxn)LOCAL_upp_complete_cb;; // function pointer for EOW user-callback (optional; called if != NULL) upp_setup->params.B.fxn_eol = (upp_CbFxn)LOCAL_upp_complete_EOL; // function pointer for EOL user-callback (optional; called if != NULL) upp_setup->params.B.fxn_uor = (upp_CbFxn)LOCAL_upp_Error_Rx; // function pointer for UOR user-callback (optional; called if != NULL) upp_setup->params.B.fxn_err = (upp_CbFxn)LOCAL_upp_Error_Rx; // function pointer for ERR user-callback (optional; called if != NULL) upp_setup->params.B.fxn_dpe = (upp_CbFxn)LOCAL_upp_Error_Rx; // function pointer for DPE user-callback (optional; called if != NULL) upp_setup->params.channels = 2;