つちだです。
クロック同期16ビット受信(マスター:クロック出力)をやっているのですが下記ソ
ースでやると2回(8ビット*2)受信だけなのに
(n2douki_counter < 2)
クロックの波形を見るとクロックが24発(24ビット分)出ています。
なにが駄目なのでしょうか?
お助けください!
環境:H8/3664、HEW
unsigned long SCI_IN ( void) {
unsigned char *n2douki_ptr;
SCI3.SSR.BIT.OER = 0; /* 受信オーバーランクリア0 * Clear OER
*/
SCI3.SSR.BIT.FER = 0; /* フレーミングクリア 0 * Clear FER
*/
SCI3.SSR.BIT.PER = 0; /* パリティエラークリア 0 * Clear PER
*/
SCI3.SMR.BIT.COM = 1; /* クロック同期1 * Initialize
Communication Mode */
SCI3.SMR.BIT.MP = 0; /* クロック同期0 * Initialize Multiprocesor
Mode */
SCI3.SMR.BIT.CKS = 0; /* クロック1/1 * Initialize Clock
Select 1 φ/64 */
SCI3.SMR.BIT.CKS = 0; /* Initialize Clock Select 0 φ/64 */
SCI3.SCR3.BIT.CKE = 0; /* 内部クロック出力 *
Initialize Clock Enable 1 */
SCI3.SCR3.BIT.CKE = 0; /* Initialize Clock Enable 0
*/
SCI3.BRR = 1; /* ビットレートレジスタ *
Initialize Clock Enable 1 */
SCI3.SSR.BIT.TDRE = 0; /* 送信データを無しにする * Clear
TDRE */
SCI3.SSR.BIT.RDRF = 0; /* 受信データを無しにする * Clear
RDRE */
SCI3.SCR3.BIT.RE = 0; /* 受信禁止0 Clear RE
*/
SCI3.SSR.BIT.RDRF = 0; /* 受信データを無し
にする * Clear RDRF */
n2douki_ptr = &N2DOUKI_SRD[0]; /* Initialize Serial
Receiving Data Addreass */
N2DOUKI_SRD[0] = 0x00; /* Initialize
Serial Receiving Data 0 */
N2DOUKI_SRD[1] = 0x00; /* Initialize Serial
Receiving Data 1 */
N2DOUKI_SRD[2] = 0x00; /* Initialize Serial
Receiving Data 2 */
N2DOUKI_SRD[3] = 0x00; /* Initialize Serial
Receiving Data 3 */
IO.PDR8.BIT.B0 = 0; //CS
n2douki_counter = 0; /* Clear counter
*/
while (n2douki_counter < 1){ /* Serial Receiving
Data Counter 4 Loop */
SCI3.SCR3.BIT.RE = 1; /* 受信許可1
Start Serial Receiving */
while(SCI3.SSR.BIT.RDRF == 0){ /* RDRに受信デ
ータが格納なら1 RDRF = 1 ? */
;
}
if (SCI3.SSR.BIT.OER == 1){ /* オーバーランなら
1 Overrun Erorr Flag = 1 ? */
IO.PDR8.BIT.B0 = 1; //CS
N2DOUKI_SRD[0] = 0xFF; /* Overrun Erorr 0
*/
N2DOUKI_SRD[1] = 0xFF; /* Overrun Erorr 1
*/
//break;
}
else {
*n2douki_ptr = SCI3.RDR; /* 受信データ格納
Save Serial Receiving Data */
SCI3.SSR.BIT.RDRF = 0;
SCI3.SCR3.BIT.RE = 0; /* 受信許可1 Start Serial
Receiving */
SCI3.SSR.BIT.RDRF = 0; /* 受信データを無しにする *
Clear RDRE */
n2douki_ptr++; /* Increment Serial
Receiving Data Address */
n2douki_counter++; /* Increment counter
*/
}
}
SCI3.SCR3.BIT.RE = 0; /* 受信禁止0 Clear
RE */
IO.PDR8.BIT.B0 = 1; //CS
return(N2DOUKI_SRD[0] * 0x100 + N2DOUKI_SRD[1]);
}
//+-----------------------------------------------------------------+
//| 〒302−8501 茨城県取手市白山7−5−1
//| キヤノン(株)取手周辺機器工場 LBP生産技術3課 土田誠司
//| 荷物発送先:LBP製造課B8棟止め_B8棟前プレハブ
//| Canon.INC ToridePeripheralsPlant LBP ProductionEngineeringDept3
//| tsuchida.seiji@xxxxxxxxxxx
//| PHS:0297-77-2496 FAX:72-4217 IN.Plant:621-21365
//+-----------------------------------------------------------------+