git-svn-id: svn://svn.code.sf.net/p/chibios/svn/trunk@5735 35acf78f-673a-0410-8e92-d51de3d6d3f4

master
gdisirio 2013-05-14 08:51:03 +00:00
parent 1c4c762c0a
commit 155b0d1353
1 changed files with 7 additions and 6 deletions

View File

@ -142,15 +142,14 @@ static void spc5xx_serve_rxi_interrupt(SerialDriver *sdp) {
sts |= SD_NOISE_ERROR; sts |= SD_NOISE_ERROR;
if (sr & SPC5_UARTSR_PE0) if (sr & SPC5_UARTSR_PE0)
sts |= SD_PARITY_ERROR; sts |= SD_PARITY_ERROR;
if (sts) {
chSysLockFromIsr(); chSysLockFromIsr();
if (sts)
chnAddFlagsI(sdp, sts); chnAddFlagsI(sdp, sts);
chSysUnlockFromIsr();
}
if (sr & SPC5_UARTSR_DRF) { if (sr & SPC5_UARTSR_DRF) {
sdIncomingDataI(sdp, sdp->linflexp->BDRM.B.DATA4); sdIncomingDataI(sdp, sdp->linflexp->BDRM.B.DATA4);
sdp->linflexp->UARTSR.R = SPC5_UARTSR_RMB; sdp->linflexp->UARTSR.R = SPC5_UARTSR_RMB;
} }
chSysUnlockFromIsr();
} }
/** /**
@ -162,6 +161,7 @@ static void spc5xx_serve_txi_interrupt(SerialDriver *sdp) {
msg_t b; msg_t b;
sdp->linflexp->UARTSR.R = SPC5_UARTSR_DTF; sdp->linflexp->UARTSR.R = SPC5_UARTSR_DTF;
chSysLockFromIsr();
b = chOQGetI(&sdp->oqueue); b = chOQGetI(&sdp->oqueue);
if (b < Q_OK) { if (b < Q_OK) {
chnAddFlagsI(sdp, CHN_OUTPUT_EMPTY); chnAddFlagsI(sdp, CHN_OUTPUT_EMPTY);
@ -169,6 +169,7 @@ static void spc5xx_serve_txi_interrupt(SerialDriver *sdp) {
} }
else else
sdp->linflexp->BDRL.B.DATA0 = b; sdp->linflexp->BDRL.B.DATA0 = b;
chSysUnlockFromIsr();
} }
/** /**