[戻る]
新着表示

逆アセンブリ結果のアルゴリズム 投稿者:鈴木泰樹 投稿日:2017/04/24(Mon) 13:05:38 No.899

以下のプログラムを逆アセンブルしました。

#include<xc.h>
void main(){
char a, b,c;
a = 11;
b = 13;
a++;
c = a*b;
}

逆アセンブリ結果は以下のようになりました。

0000 280D GOTO 0xD

0001 00FE MOVWF 0x7E
0002 3000 MOVLW 0x0
0003 187F BTFSC 0x7F, 0x0
0004 077E ADDWF 0x7E, W
0005 1003 BCF 0x3, 0x0
0006 0DFE RLF 0x7E, F
0007 1003 BCF 0x3, 0x0
0008 0CFF RRF 0x7F, F
0009 08FF MOVF 0x7F, F
000A 1903 BTFSC 0x3, 0x2
000B 0008 RETURN
000C 2803 GOTO 0x3

000D 300B MOVLW 0xB
000E 0020 MOVLB 0x0
000F 00A2 MOVWF 0x22
0010 300D MOVLW 0xD
0011 00A0 MOVWF 0x20
0012 0AA2 INCF 0x22, F
0013 00FF MOVWF 0x7F
0014 0822 MOVF 0x22, W
0015 2001 CALL 0x1
0016 00A1 MOVWF 0x21
0017 0183 CLRF 0x3

逆アセンブリ結果の乗算のアルゴリズムが分かりません。教えて下さい。お願いします。

Re^3: I2CSlave通信について 投稿者:Gokan 投稿日:2017/04/17(Mon) 09:56:05 No.894

msecオーダーの遅延ということは、受信してから何らかのデータ処理
をしている時間があるということではないでしょうか??
割込み処理で100usec以上かかるようなことは無いと思います。

> Gokan様
> ありがとうございます。
> MasterとSlaveのI2Cを制御するプログラムの遅延時間という事ですが、この場合は、スレーブ用割込み制御レジスタIFS1のSI2C1IF割り込みフラグをクリアするために必要なWait(処理)時間ということでしょうか。
> while(1) //送信要求終了(NACK)を受信するまで繰り返す 
> {
> I2C1TRN = *strx;
> I2C1CONbits.SCLREL = 1;
> IFS1bits.SI2C1IF = 0;
> if(I2C1STATbits.P == 1)break;
> delay_ms(1);
> strx++;
> };
> > これはI2Cの仕様ではなくてMasterとSlaveのI2Cを制御する
> > プログラムの遅延時間次第です。
> > I2C自身の仕様では遅延時間は必要ありません。
> >
> > > PIC24FのI2CのSlave通信について教えてください。
> > > MasterがSlaveからデータを連続で複数取得する場合、Slaveは、データを送信する側としてデータを送る度にWait時間が必要になるのでしょうか。
> > > 100μsのWaitで動作させるとデータが抜けたりしたため、1ms程度まで増やすと正常にデータを受信することができました。
> > > 参考にしたサイトでは、約2ms程度の遅れが必要とありました。
> > >
> > > 仕様的にどうなっているかご教示頂けないでしょうか。
> > > よろしくお願い致します。

Re: harmony trouble 投稿者:窪田秀明 投稿日:2017/04/13(Thu) 06:02:18 No.892

> mplabxide xc32 harmony をインストールし、プロジェクトを立ち上げコード化しましたが peripheralファイルと<stdint.h>がインクルードされません。パスの設定を追加しても解決されません。解決法を教えてください。
パスの設定が間違っていただけでした。解決しました。

Re^2: 周波数特性測定器に関して 投稿者:HT 投稿日:2017/04/11(Tue) 23:51:06 No.891

Gokan様
ご返信ありがとうございます。
aの係数に関して1024分割とVrefとの関係で混乱していましたが、単純に求めれば良いとの解釈でよろしかったのですね。
有難うございました。

> 0dBと-20dBの信号を実際に入力してy=ax+bの式でaとbを求めて
> 換算式としています。
>

Re^2: I2CSlave通信について 投稿者:なべ 投稿日:2017/04/11(Tue) 22:34:57 No.890

Gokan様
ありがとうございます。
MasterとSlaveのI2Cを制御するプログラムの遅延時間という事ですが、この場合は、スレーブ用割込み制御レジスタIFS1のSI2C1IF割り込みフラグをクリアするために必要なWait(処理)時間ということでしょうか。
while(1) //送信要求終了(NACK)を受信するまで繰り返す 
{
I2C1TRN = *strx;
I2C1CONbits.SCLREL = 1;
IFS1bits.SI2C1IF = 0;
if(I2C1STATbits.P == 1)break;
delay_ms(1);
strx++;
};
> これはI2Cの仕様ではなくてMasterとSlaveのI2Cを制御する
> プログラムの遅延時間次第です。
> I2C自身の仕様では遅延時間は必要ありません。
>
> > PIC24FのI2CのSlave通信について教えてください。
> > MasterがSlaveからデータを連続で複数取得する場合、Slaveは、データを送信する側としてデータを送る度にWait時間が必要になるのでしょうか。
> > 100μsのWaitで動作させるとデータが抜けたりしたため、1ms程度まで増やすと正常にデータを受信することができました。
> > 参考にしたサイトでは、約2ms程度の遅れが必要とありました。
> >
> > 仕様的にどうなっているかご教示頂けないでしょうか。
> > よろしくお願い致します。

Re^3: GPS 投稿者:Gokan 投稿日:2017/04/11(Tue) 10:00:05 No.888

受信したデータをそのままリストに出力するようにし、
内容を見てNMEAの仕様と合わせてどこが何のデータかを
判定して処理します。
受信データはカンマで区切られていますから、このカンマ区切り
を利用するのが普通のやり方です。


> ソフトや回路図を参考にさせていただき、受信できるようになりました。ありがとうございます。このソフトでは緯度や経度の桁数が異なる外国では使えないので、ソフトの工夫が必要になるという理解で宜しいでしょうか。どの様な工夫が考えられるか、ヒントをいただけると、ありがたいのですが。
>
> > 電源まわり、5Vが必要、電池は内蔵 などなどが異なるので
> > そのままという訳にはいきませんね。
> > でもシリアルインターフェースは同じなのでプログラムは
> > そのままでも動くかもしれません。ただし、実際に送られてくる
> > データ形式が異なるかもしれませんから、一部表示が異なる
> > ようになるかもしれません。
> >
> >
> > > PIC24F制作例にあります携帯型GPSロガーを製作してみようと思います。日本の人工衛星「みちびき」の電波も拾うため、秋月電子のGPSモジュール「GYSFDMAXB」を使ったGPS受信キット(C-MOSロジックレベル、非同期シリアル信号)を使いたいのですが、GPS-52Dをそのまま入れ替えるだけで利用することはできるのでしょうか。ご教示いただければ幸いです。

Re: I2CSlave通信について 投稿者:Gokan 投稿日:2017/04/11(Tue) 09:54:48 No.887

これはI2Cの仕様ではなくてMasterとSlaveのI2Cを制御する
プログラムの遅延時間次第です。
I2C自身の仕様では遅延時間は必要ありません。

> PIC24FのI2CのSlave通信について教えてください。
> MasterがSlaveからデータを連続で複数取得する場合、Slaveは、データを送信する側としてデータを送る度にWait時間が必要になるのでしょうか。
> 100μsのWaitで動作させるとデータが抜けたりしたため、1ms程度まで増やすと正常にデータを受信することができました。
> 参考にしたサイトでは、約2ms程度の遅れが必要とありました。
>
> 仕様的にどうなっているかご教示頂けないでしょうか。
> よろしくお願い致します。

Re: 周波数特性測定器に関して 投稿者:Gokan 投稿日:2017/04/11(Tue) 09:51:02 No.886

0dBと-20dBの信号を実際に入力してy=ax+bの式でaとbを求めて
換算式としています。


> 質問の続きです。
> PICのCH0とCH1には電圧信号が入り、それを読み取っていると思うのですが、それをdB換算するときのロジックが今一つ分からなかったので質問させていただきました。

周波数特性測定器に関して 投稿者:HT 投稿日:2017/04/10(Mon) 23:05:32 No.885

質問の続きです。
PICのCH0とCH1には電圧信号が入り、それを読み取っていると思うのですが、それをdB換算するときのロジックが今一つ分からなかったので質問させていただきました。

周波数特性測定器に関して 投稿者:HT 投稿日:2017/04/10(Mon) 22:58:51 No.884

PICは全く初めての超初心者です。
USB接続で苦慮しましたが、組み立て中にデバイスにダメージを与えていたようで、PICデバイスを交換後、USBに難なく接続でき、動作確認できました。今回は手持ちのDIPタイプのAD8037を使用したかったためユニバーサル基板で組みました。なおAD9851は安価な中国製DDSモジュールを使用しました。クリスタルが30MHzだったのでプログラムを修正し書き込みました。これから調整、仕上げとなります。
現状の1V信号時の周波数特性を添付しますが、DDS出力もしくはログアンプ入力部の低周波側と高周波側の時定数を調整する必要がありそうです。
ところで質問です。
改定新版のUSB機器自作のすすめに添付されたソースファイルベースに調整をしようと思いますが、P257記載のCH0測定からdBに変換までのプログラムの内容が今一つわかりません。
ここが分かればdBレベル等の調整がより正確にできると思い質問させていただきました。

| 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 |

- WebForum -