07/12/03 12:16:03
H8/2378で、queがずれる現象に悩んでいます。複数の割込レベルからcall quewrit(&qcb,evt)
quewrit(qcbp,evt)では、
set_imask_ccr((_UBYTE)1); // 割込み禁止必要
qcbp->bufp[qcbp->wpt] = evt;
qcbp->cnt += 1;
qcbp->wpt =(char)((qcbp->wpt+1)&qcbp->mask);
set_imask_ccr((_UBYTE)0); // 割込み許可 07.11.14
とやってます。 取り出しはmainloopで、
c = qcbp->bufp[rp];
set_imask_ccr((_UBYTE)1); /* for ルネサスc */
qcbp->cnt -= 1;
set_imask_ccr((_UBYTE)0); /* for ルネサスc */
qcbp->rp=(qcbp->rp+1)&mask; とやってます。
このrpとwpが、中身0のときたまにずれてるんです。