[戻る]
新着表示

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に転送して実行) 動作しない

Re^4: CLC設定ツール 投稿者:Gokan 投稿日:2016/09/22(Thu) 08:49:51 No.690

MCCで他の周辺も含めて左上にある「Generate」のボタンをクリック
すれば生成されます。
詳しくは、次号のトランジスタ技術誌を参照ください。


> すみません、先ほどの書き込みでキャプチャ画面は載せたんですけど
> 文章を書き損ねてしまい申し訳ありません
>
> CLC Configuration Toolまでは呼び出せたのですが
> Fileメニューを出してもSave C Codeというのが出てきません
> コピーペーストをするためのC言語ソースはどうやって出力するのでしょうか

Re^3: CLC設定ツール 投稿者:twaga 投稿日:2016/09/22(Thu) 00:02:14 No.689

すみません、先ほどの書き込みでキャプチャ画面は載せたんですけど
文章を書き損ねてしまい申し訳ありません

CLC Configuration Toolまでは呼び出せたのですが
Fileメニューを出してもSave C Codeというのが出てきません
コピーペーストをするためのC言語ソースはどうやって出力するのでしょうか

Re^2: CLC設定ツール 投稿者:twaga 投稿日:2016/09/21(Wed) 16:32:27 No.688

> MPLAB X IDEからPlug-inでMCCをインストールした方が簡単です。
> MPLAB X IDEのメインメニューから
> [Tools]→[Plugins] これで開くダイアログで[Available Plugins]タグ選択
> →[MPLAB Code Configurator」にチェック→[Install]ボタン
> これでMCCがインストールされメインメニューにアイコンが追加されます。
> 先に該当PICの空のプロジェクトを作ってからMCCアイコンをクリックすると
> IDE画面全体がMCCの画面になります。
> この画面の左下にある[Device Resources]にCLCがあるのでダブルクリックすれば
> CLCのGUI画面が開きますので、ここでCLCの設定をします。
>
>
> > 電子工作のためのPIC16F1ファミリ活用ガイドブックの214ページに
> > CLC Configuration Toolのことがのっているのですが、
> > 現在はMCCというプラグインに含まれているようで、MCCをダウンロードしてインストールしたものの
> > CLC Configuration Toolの呼び出し方がわかりません。
> > どうやったら呼び出せるのでしょうか。。

Re: CLC設定ツール 投稿者:Gokan 投稿日:2016/09/21(Wed) 14:13:39 No.687

MPLAB X IDEからPlug-inでMCCをインストールした方が簡単です。
MPLAB X IDEのメインメニューから
[Tools]→[Plugins] これで開くダイアログで[Available Plugins]タグ選択
→[MPLAB Code Configurator」にチェック→[Install]ボタン
これでMCCがインストールされメインメニューにアイコンが追加されます。
先に該当PICの空のプロジェクトを作ってからMCCアイコンをクリックすると
IDE画面全体がMCCの画面になります。
この画面の左下にある[Device Resources]にCLCがあるのでダブルクリックすれば
CLCのGUI画面が開きますので、ここでCLCの設定をします。


> 電子工作のためのPIC16F1ファミリ活用ガイドブックの214ページに
> CLC Configuration Toolのことがのっているのですが、
> 現在はMCCというプラグインに含まれているようで、MCCをダウンロードしてインストールしたものの
> CLC Configuration Toolの呼び出し方がわかりません。
> どうやったら呼び出せるのでしょうか。。

CLC設定ツール 投稿者:twaga 投稿日:2016/09/21(Wed) 01:05:05 No.686

電子工作のためのPIC16F1ファミリ活用ガイドブックの214ページに
CLC Configuration Toolのことがのっているのですが、
現在はMCCというプラグインに含まれているようで、MCCをダウンロードしてインストールしたものの
CLC Configuration Toolの呼び出し方がわかりません。
どうやったら呼び出せるのでしょうか。。

Re^3: PWM制御について 投稿者:Gokan 投稿日:2016/09/16(Fri) 08:32:36 No.678

まず LEDに電流制限抵抗をいれていないとどうなるかというと
LEDは単純なダイオードなので、電流が無制限に流れます。
結局PICの出力ピンの能力いっぱいまで流れます。

これでPICが壊れることはないのですが、別の問題が起きます。
大電流がLEDに流れると、その電流が通過するPICのGND電位が上がり
0ボルトではなくなってしまいます。特にパルス状に流れると
その立ち上がりでGND電位が高くなりPICはもう0ボルト基準では
動作せず、プログラムが暴走することになってしまいます。

このような過電流の状態でなくても、たくさんの負荷が同時に
動作するとき同じような現象がおきます。これによる誤動作を
防止するため、PICの電源ピンの近くにコンデンサを付加して
急激な電流増にはコンデンサに貯めている電気を使うことで
GND電位の変化を抑えるようにして誤動作を防止します。


> そうなのですね。
> ledに約1kオームつなげたらいけました。
>
> なぜそうなるのかご教授して頂くことはできますでしょうか。

Re^2: PWM制御について 投稿者:まるも 投稿日:2016/09/15(Thu) 23:50:34 No.677

そうなのですね。
ledに約1kオームつなげたらいけました。

なぜそうなるのかご教授して頂くことはできますでしょうか。

Re: PWM制御について 投稿者:Gokan 投稿日:2016/09/14(Wed) 18:51:57 No.676

これはプログラムの問題ではなくハードウェアの問題だと思います。
・バイパスコンデンサをPICのVDD端子の近くでGND間に接続する
・GNDの配線を短くする
・LEDのGNDを電源のGNDの近いところで接続する

などの対策が必要です。


> 12F683を使用しています。
> アセンブリを使用しています。
> PWM制御でLEDを高速点滅させております。
> かつ、10ms毎に点滅のオンオフをします。
> 10ms高速点滅 → 10ms消灯 を繰り返します。
>
> 10ms高速点滅 → 10ms消灯 へ移行する処理は
> CCP1CONレジスタをCLRFします。
>
> 10ms消灯 → 10ms高速点滅 へ移行する処理は
> 初期で設定した値を入れます。
>
> その際他のI/O入力である信号を入れているのですが、その信号に
> PWMに同期する様に信号が乗ってしまい入力している信号は無視されてしまいます。
> ちなみに、PWM制御で点滅を繰り返すLEDのGNDを外すと、その
> 信号は消えます。
> 以上のことが分かりません。
> 設定等は初期設定できちんとされていると思います。
>
> ちなみに、ずっとLEDを高速点滅させている場合はI/O入力の信号は
> きちんときます。
> ですので、高速点滅 → 消灯 の際にいじるレジスタが関係しているのではないかと考えているのですが、どうにもピンの設定と関係がないので、
> 分からずじまいです。
>
> お時間があるときでよろしいのでご教授のほどよろしくお願い致します。

PWM制御について 投稿者:まるも 投稿日:2016/09/14(Wed) 01:13:09 No.675

12F683を使用しています。
アセンブリを使用しています。
PWM制御でLEDを高速点滅させております。
かつ、10ms毎に点滅のオンオフをします。
10ms高速点滅 → 10ms消灯 を繰り返します。

10ms高速点滅 → 10ms消灯 へ移行する処理は
CCP1CONレジスタをCLRFします。

10ms消灯 → 10ms高速点滅 へ移行する処理は
初期で設定した値を入れます。

その際他のI/O入力である信号を入れているのですが、その信号に
PWMに同期する様に信号が乗ってしまい入力している信号は無視されてしまいます。
ちなみに、PWM制御で点滅を繰り返すLEDのGNDを外すと、その
信号は消えます。
以上のことが分かりません。
設定等は初期設定できちんとされていると思います。

ちなみに、ずっとLEDを高速点滅させている場合はI/O入力の信号は
きちんときます。
ですので、高速点滅 → 消灯 の際にいじるレジスタが関係しているのではないかと考えているのですが、どうにもピンの設定と関係がないので、
分からずじまいです。

お時間があるときでよろしいのでご教授のほどよろしくお願い致します。

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

- WebForum -