[戻る]
一括表示

PIC32MZ LogScop 投稿者:五十嵐隆規 投稿日:2016/10/09(Sun) 21:23:03 No.714

PIC32MZ2048ECG064の使い方を教えてください。
PICでロジックスコープ実験を行っています。
PIC32MX250F128B、PIC32MX695F512Lはプログラムを
RAMに転送し実行するとno-waitで実行しているようです。
同様のことをPIC32MZ2048ECG064でおこなっても動作しません。
仕様書にはSYNCI命令を使うと記載されていますが
命令の使い方を理解できていません。
動作成功されている方、方法を教えていただきたいです。
最高速データ取込したいのでアセンブラですが
C言語でもOKです。

ロジックスコープのデータ取込プログラムは下記です
レジスターのデータ
LI t0,0x80000000 // t0=0x8000000(RAM先頭アドレス)
LI s8,0xBF880000 // PORTBの上位アドレス
データ取込プログラム
LBU t1,0x6120(s8) // PORTBからt1に8bit取込
SB t1,0x0000(t0) // t1を0x80000000番地に保存
LBU t1,0x6120(s8) // PORTBからt1に8bit取込
SB t1,0x0001(t0) // t1を0x80000001番地に保存
以下同様
→1データを処理するのに2命令です。
クロックを96MHzにすれば48MHzの周期で取込します(48MSa/s)

PIC32MZ2048ECG064の使い方が解らないのでまず下記プログラムで
実験中です。クロックは8MHzです。
LI t0,0x0000000F
TES0:
SW t0,PORTB // 2命令に変換されます
B TES1 // 1命令
NOP // 1命令 遅延スロット
TES1:
SW $0,PORTB // 2命令に変換されます
B TES0 // 1命令
NOP // 1命令 遅延スロット

1サイクル、8命令なので1MHz(Duty=50%)の波形を出力するプログラムです。
しかしPIC32MZ2048ECG064で成功していません。

状況
PIC32MX250F128B(FLASH ROMで実行) 1MHz
PIC32MX250F128B(RAMに転送して実行) 1MHz
PIC32MX695F512L(キャッシュOFF/FLASH ROMで実行) 1MHz
PIC32MX695F512L(RAMに転送して実行) 1MHz
PIC32MZ2048ECG064(全キャッシュOFF/FLASH ROMで実行) 80kHz(Duty50%)
PIC32MZ2048ECG064(全キャッシュON/FLASH ROMで実行) 800kHz(Duty50%でない)
PIC32MZ2048ECG064(RAMに転送して実行) 動作しない

- WebForum -