四国ポリテクカレッジの中尾と申します。
H8/3048FのプログラムをCygwin+gccで行っているのですが、次のような掛け算
を行うとうまく行きません。A/D、D/Aはきちんと動作しているのを確認しました。
入力には方形波を入力しています。
//A/D変換終了割り込み
unsigned long temp1 = 0;
unsigned short input_data = 0;
void ad_end()
{
outb(H8ADC+H8ADC_ADCSR, inb(H8ADC+H8ADC_ADCSR) & ~H8ADCSR_ADF); /* A/D変換終了フラグをクリア */
input_data = inb(H8ADC + H8ADC_ADDRAH); /* A/D変換値上位8bit取得 */
input_data = input_data << 8;
input_data = input_data | inb(H8ADC + H8ADC_ADDRAL); /* A/D変換値下位8bit取得 */
input_data = input_data >> 1; /* Q.15フォーマットに変換する */
temp1 = input_data * 0x745d; /* temp1にはQ.30フォーマットで保存される */
outb(H8DAC + H8DAC_DADR0, (unsigned char)(input_data >> 21));
asm("bnot #0, @0xffffca:8"); /* デバッグ用LED出力 */
}
掛け算を行わなければうまく行くのですが、掛け算を行うとうまく行きません。
掛け算を行うと出力が0になってしまいます。アセンブラに変換して確認したので
すがきちんとできているようでした。
何かヒントなどを教えていただければ幸いです。
-----------------
四国職業能力開発大学校
中尾 亀三継
nakao@xxxxxxxxxxxxxxx