📄 dciisr_fullduplex.c
字号:
/*********************************************************************
* *
* Software License Agreement *
* *
* The software supplied herewith by Microchip Technology *
* Incorporated (the "Company") for its dsPIC controller *
* is intended and supplied to you, the Company's customer, *
* for use solely and exclusively on Microchip dsPIC *
* products. The software is owned by the Company and/or its *
* supplier, and is protected under applicable copyright laws. All *
* rights are reserved. Any use in violation of the foregoing *
* restrictions may subject the user to criminal sanctions under *
* applicable laws, as well as to civil liability for the breach of *
* the terms and conditions of this license. *
* *
* THIS SOFTWARE IS PROVIDED IN AN "AS IS" CONDITION. NO *
* WARRANTIES, WHETHER EXPRESS, IMPLIED OR STATUTORY, INCLUDING, *
* BUT NOT LIMITED TO, IMPLIED WARRANTIES OF MERCHANTABILITY AND *
* FITNESS FOR A PARTICULAR PURPOSE APPLY TO THIS SOFTWARE. THE *
* COMPANY SHALL NOT, IN ANY CIRCUMSTANCES, BE LIABLE FOR SPECIAL, *
* INCIDENTAL OR CONSEQUENTIAL DAMAGES, FOR ANY REASON WHATSOEVER. *
* *
*********************************************************************/
/******************************************************************************
**
** Filename: dciIsr_FullDuplex.c
**
** System: RISC
**
** Platform: dsPIC30F6014A
**
** Description: This file contains only one ISR for handling DCI interrupt.
******************************************************************************/
#include "p30fxxxx.h"
#include "G711Lib_common.h"
#include "G711Lib_si3000.h"
//-----------------------------------------------------------------------------
//Global Variables
//-----------------------------------------------------------------------------
extern volatile unsigned int fRxCpl, fRxstart, fRxstop;
/******************************************************************************
**
** Function Name: _DCIInterrupt
**
** Description: This ISR for DCI interrupt handles data reads and writes
** from/to DCI buffer registers TXBUFx and RXBUFx-and
** stores/retrieves data to/from the ping pong buffers created
** by the user.
******************************************************************************/
void __attribute__((interrupt, no_auto_psv)) _DCIInterrupt ( void )
{
/*This function fills data into ping pong buffer from Si3000 RXBUFx registers*/
libSi3000DCIFill ( );
if( codecdata.fBlockplayed == 0x01 )
{
/*This function loads data from ping pong buffers to Si3000 TXBUFx registers*/
libSi3000LoadDCI ( );
}
/*This Section Detects Whether the Data is being Transmitted from the Other
board has Stopped*/
if ( ( codecdata.blockCount-codecdata.loadblockCount ) > 1 )
{
IEC0bits.U1RXIE = 0x00; //Disable the U2 Interrupt.
IFS0bits.U1RXIF = 0x00; //Clear Rx interrupt flag.
fRxstop = 1; //Set the Error flag indicating Incoming Data Stopped
fRxCpl = 0;
codecdata.fBlockplayed = 0x00;
while ( !U1STAbits.TRMT );
U1TXREG = 0x16; //Send the Error Code.
}
_DCIIF = 0x00; //Clear DCI interrupt flag.
}
/*-----------------------------------------------------------------------------
END OF FILE: dciIsr_FullDuplex.c
-----------------------------------------------------------------------------*/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -